我正在尝试Selenium。我使用Selenium IDE构建了一个快速脚本。它登录到页面,打开“搜索”窗口,进行搜索,然后打开其中一个结果。
当我在Selenium IDE中运行测试时,它运行正常。当我导出到Java JUnit 4测试用例时,它工作正常。但是当我导出到Python 2单元测试时,xpath搜索似乎非常错误......
示例:
该页面有一个名为='keyword'的输入元素。当我使用带有driver.findElement(By.name("keyword"));
的java进行搜索时,一切都很好 - 它找到了元素。
当我使用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"}'
干杯
Jarrett的
答案 0 :(得分:0)
事实证明,当点击链接时,网站正在打开一个新窗口,但驱动程序仍在引用旧窗口。不确定为什么Selenium IDE导出没有捕获到它。
无论如何,我必须将驱动程序的窗口设置为新打开的窗口,然后才能正常工作。
希望这可以帮助其他人。
干杯
Jarrett的
答案 1 :(得分:0)
检查它是否在iframe中,如果需要,请转到该iframe。
driver.switch_to.default_content()
driver.switch_to_frame("fameid")