天天看点

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

 问题描述:

使用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函数,页面发生改变

继续阅读