appium_An element could not be located on the page using the given search parameters.

博客主要描述了使用find_element_by_xpath时出现报错的问题,经分析,原因是使用该函数的对象不在当前页面中,在获取函数前页面进行过操作,如使用item对象获取信息前调用click函数使页面改变。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 问题描述:

使用find_element_by_xpath的时候报错,如下

Traceback (most recent call last):
  File "F:/project/appiumTest/weChart/moments.py", line 158, in <module>
    moments.smallexe()
  File "F:/project/appiumTest/weChart/moments.py", line 92, in smallexe
    self.seacher()
  File "F:/project/appiumTest/weChart/moments.py", line 120, in seacher
    "/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.FrameLayout[2]/android.widget.RelativeLayout/android.widget.FrameLayout[2]/android.widget.FrameLayout/android.widget.FrameLayout[1]/android.widget.FrameLayout/android.view.ViewGroup/android.widget.FrameLayout/android.widget.FrameLayout[2]/android.webkit.WebView/android.view.View/android.view.View[4]/android.view.View/android.view.View[2]")
  File "F:\project\venv\lib\site-packages\selenium\webdriver\remote\webelement.py", line 351, in find_element_by_xpath
    return self.find_element(by=By.XPATH, value=xpath)
  File "F:\project\venv\lib\site-packages\appium\webdriver\webelement.py", line 209, in find_element
    {"using": by, "value": value})['value']
  File "F:\project\venv\lib\site-packages\selenium\webdriver\remote\webelement.py", line 633, in _execute
    return self._parent.execute(command, params)
  File "F:\project\venv\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 321, in execute
    self.error_handler.check_response(response)
  File "F:\project\venv\lib\site-packages\appium\webdriver\errorhandler.py", line 29, in check_response
    raise wde
  File "F:\project\venv\lib\site-packages\appium\webdriver\errorhandler.py", line 24, in check_response
    super(MobileErrorHandler, self).check_response(response)
  File "F:\project\venv\lib\site-packages\selenium\webdriver\remote\errorhandler.py", line 242, in check_response
    raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.NoSuchElementException: Message: An element could not be located on the page using the given search parameters.

原因分析:

因为在使用find_element_by_xpath的对象并不存在当前页面中,使用获取函数之前页面进行过操作

错误代码如下:

items = self.driver.find_elements_by_xpath('/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.RelativeLayout/android.widget.FrameLayout[2]/android.widget.FrameLayout/android.widget.FrameLayout[1]/android.widget.FrameLayout/android.view.ViewGroup/android.widget.FrameLayout/android.widget.FrameLayout[1]/android.webkit.WebView/android.view.View/android.view.View[4]/android.widget.ListView/android.view.View/android.view.View')
for item in items:
      print("第一个信息")
      car_model = item.text
      print(car_model)
      item.click()
      time.sleep(2)
      car_model = item.find_element_by_xpath(
                    "/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.FrameLayout[2]/android.widget.RelativeLayout/android.widget.FrameLayout[2]/android.widget.FrameLayout/android.widget.FrameLayout[1]/android.widget.FrameLayout/android.view.ViewGroup/android.widget.FrameLayout/android.widget.FrameLayout[2]/android.webkit.WebView/android.view.View/android.view.View[4]/android.view.View/android.view.View[2]")
      print(car_model.text)

使用item对象获取信息之前调用了click函数,页面发生改变

Traceback (most recent call last): File "C:\Users\gzis\Desktop\PythonProject\demo.py", line 13, in <module> driver.find_element(By.ID, "com.tencent.mm:id/j_9").click() ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\gzis\Desktop\PythonProject\.venv\Lib\site-packages\appium\webdriver\webdriver.py", line 409, in find_element return self.execute(RemoteCommand.FIND_ELEMENT, {'using': by, 'value': value})['value'] ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\gzis\Desktop\PythonProject\.venv\Lib\site-packages\selenium\webdriver\remote\webdriver.py", line 346, in execute self.error_handler.check_response(response) File "C:\Users\gzis\Desktop\PythonProject\.venv\Lib\site-packages\appium\webdriver\errorhandler.py", line 122, in check_response raise exception_class(msg=message, stacktrace=format_stacktrace(stacktrace)) selenium.common.exceptions.NoSuchElementException: Message: An element could not be located on the page using the given search parameters.; For documentation on this error, please visit: https://www.selenium.dev/documentation/webdriver/troubleshooting/errors#no-such-element-exception Stacktrace: NoSuchElementError: An element could not be located on the page using the given search parameters. at AndroidUiautomator2Driver.findElOrEls (C:\Program Files\Appium Server GUI\resources\app\node_modules\appium\node_modules\appium-android-driver\lib\commands\find.js:75:11) at processTicksAndRejections (internal/process/task_queues.js:97:5) at AndroidUiautomator2Driver.findElOrElsWithProcessing (C:\Program Files\Appium Server GUI\resources\app\node_modules\appium\node_modules\appium-base-driver\lib\basedriver\commands\find.js:33:12) at AndroidUiautomator2Driver.findElement (C:\Program Files\Appium Server GUI\resources\app\node_modules\appium\node_modules\appium-base-driver\lib\basedriver\commands\find.js:53:10)
03-12
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值