[英]python xpath doesn't seem to work for some elements
我正在尝试硒。 我已经使用Selenium IDE构建了一个快速脚本。 它登录到页面,打开“搜索”窗口,进行搜索,然后打开其中一个结果。
当我在Selenium IDE中运行测试时,它运行良好。 当我导出到Java JUnit 4测试用例时,它可以正常工作。 但是当我导出到Python 2单元测试时,xpath搜索似乎非常有bug。
范例 :
该页面具有名称为“关键字”的输入元素。 当我使用带有driver.findElement(By.name("keyword"));
java搜索时driver.findElement(By.name("keyword"));
一切都很好-它找到了元素。
当我使用带有browser.find_element_by_name("keyword")
python搜索时,似乎找不到它。 我也尝试过browser.find_element_by_xpath("//input[@name='keyword']")
和browser.find_element_by_xpath("/html/body/form/div/ul/li[2]/input")
,第二个是我使用firebug和Copy XPath
功能时得到的xpath。
我尝试在搜索输入之前向python代码添加延迟,但无济于事。
有谁知道为什么python调用似乎找不到元素? 这似乎发生在整个Web应用程序页面的不同元素上(但是到目前为止,在我发现的Selenium IDE中却没有发生)...
感谢您提供的任何帮助!
编辑 :
控制台中显示的错误是:
Traceback (most recent call last):
File "test.py", line 37, in <module>
elem = browser.find_element_by_xpath("/html/body/form/div/ul/li[2]/input")
File "/usr/local/lib/python2.7/dist-packages/selenium/webdriver/remote/webdriver.py", line 213, in find_element_by_xpath
return self.find_element(by=By.XPATH, value=xpath)
File "/usr/local/lib/python2.7/dist-packages/selenium/webdriver/remote/webdriver.py", line 671, in find_element
{'using': by, 'value': value})['value']
File "/usr/local/lib/python2.7/dist-packages/selenium/webdriver/remote/webdriver.py", line 156, in execute
self.error_handler.check_response(response)
File "/usr/local/lib/python2.7/dist-packages/selenium/webdriver/remote/errorhandler.py", line 147, in check_response
raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.NoSuchElementException: Message: u'Unable to locate element: {"method":"xpath","selector":"/html/body/form/div/ul/li[2]/input"}'
干杯
耶勒特
事实证明,单击链接时网站正在打开一个新窗口,但驱动程序仍在引用旧窗口。 不知道为什么Selenium IDE导出没有抓住这一点。
无论如何,我必须将驱动程序的窗口设置为新打开的窗口,然后它才能正常运行。
希望这对其他人有帮助。
干杯
耶勒特
检查它是否在iframe中,如果需要,请转到该iframe。
driver.switch_to.default_content()
driver.switch_to_frame("fameid")
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.