python - 我找不到我想要的元素的位置
问题描述
我多次尝试在输入框中定位一个元素,但总是被告知有问题所以失败了。我怎样才能找到原因?
参数:Android、appium、python。
代码如下:
time.sleep(2)
self.driver.find_element_by_xpath("//*[@class='android.widget.EditText'and
@index='0']").send_keys("XXXXX")
self.driver.find_element_by_xpath("//*[@class='android.widget.EditText'][1]").send_keys("XXXXX")
self.driver.find_element_by_xpath("//*[@text='login']").click()
结果:
Error
Traceback (most recent call last):
File "C:\xxxx\AppData\Local\Programs\Python\Python36\lib\unittest\case.py", line 59, in testPartExecutor
yield
File "C:\xxxx\AppData\Local\Programs\Python\Python36\lib\unittest\case.py", line 601, in run
testMethod()
File "D:\XXXXX\login.py", line 33, in testchangeto_pageone
self.driver.find_element_by_xpath("//*[@class='android.widget.EditText'and @index='0']").send_keys("xxxx")
File "C:\xxx\AppData\Local\Programs\Python\Python36\lib\site-packages\selenium\webdriver\remote\webelement.py", line 479, in send_keys
'value': keys_to_typing(value)})
File "C:\xxxx\AppData\Local\Programs\Python\Python36\lib\site-packages\selenium\webdriver\remote\webelement.py", line 633, in _execute
return self._parent.execute(command, params)
File "C:\xxxx\AppData\Local\Programs\Python\Python36\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 321, in execute
self.error_handler.check_response(response)
File "C:\xxxxx\AppData\Local\Programs\Python\Python36\lib\site-packages\appium\webdriver\errorhandler.py", line 29, in check_response
raise wde
File "C:\xxxx\AppData\Local\Programs\Python\Python36\lib\site-packages\appium\webdriver\errorhandler.py", line 24, in check_response
super(MobileErrorHandler, self).check_response(response)
File "C:\xxxx\AppData\Local\Programs\Python\Python36\lib\site-packages\selenium\webdriver\remote\errorhandler.py", line 242, in check_response
raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.InvalidElementStateException: Message: Cannot set the element to 'xxxxxx'. Did you interact with the correct element?
解决方案
你的 xpath 是错误的。供您参考,附图也是错误的。在附加的屏幕截图中显示 imageView 时,您应该必须找到 editText。
试试下面的 Xpath。
self.driver.find_element_by_xpath("//android.widget.EditText[@index='0']").send_keys("XXXXX")
另一个文本框:
self.driver.find_element_by_xpath("//android.widget.EditText[@index='1']").send_keys("XXXXX")
推荐阅读
- java - Spring Boot - 无法解决 Whitelabel 错误页面
- java - JTable 单元格中的格式编号
- c# - 使用 hololens 记录游戏对象
- kubernetes - 没有 hostPort 无法运行 Traefik 负载均衡器
- javascript - 只加载一张表
- css - 你如何用多个图像表达多个 CSS 类?
- mongodb - 如何替换 mongodb wt 文件?
- mysql - mysql为什么子查询返回所有客户的总余额而不是单个客户的余额
- signalr - SignalR SocketException 仅在 Azure VM 上运行时
- python - ImportError:无法导入名称
仅在从 atom 运行文件时