python xpath似乎不适用于某些元素

时间:2012-10-25 17:15:07

标签: java python selenium selenium-ide

我正在尝试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的

2 个答案:

答案 0 :(得分:0)

事实证明,当点击链接时,网站正在打开一个新窗口,但驱动程序仍在引用旧窗口。不确定为什么Selenium IDE导出没有捕获到它。

无论如何,我必须将驱动程序的窗口设置为新打开的窗口,然后才能正常工作。

希望这可以帮助其他人。

干杯

Jarrett的

答案 1 :(得分:0)

检查它是否在iframe中,如果需要,请转到该iframe。

driver.switch_to.default_content() 
driver.switch_to_frame("fameid")