0

我正在尝试硒。我使用 Selenium IDE 构建了一个快速脚本。它登录到一个页面,打开一个“搜索”窗口,进行搜索,然后打开一个结果。

当我在 Selenium IDE 中运行测试时,它运行良好。当我导出到 Java JUnit 4 测试用例时,它工作正常。但是当我导出到 Python 2 单元测试时,xpath 搜索似乎非常有问题......

示例

该页面有一个 name='keyword' 的输入元素。当我使用 java 进行搜索时driver.findElement(By.name("keyword"));,一切都很好 - 它找到了元素。

当我使用 python 搜索时browser.find_element_by_name("keyword"),它似乎找不到它。我也尝试过browser.find_element_by_xpath("//input[@name='keyword']")and browser.find_element_by_xpath("/html/body/form/div/ul/li[2]/input"),其中第二个是我使用 firebug 和该Copy XPath功能时得到的 xpath。

在搜索输入之前,我尝试向 python 代码添加延迟,但无济于事。

有谁知道为什么 python 调用似乎找不到元素?这似乎发生在整个网络应用程序页面中的不同元素上(但在我到目前为止发现的 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"}'

干杯

贾勒特

4

2 回答 2

0

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

无论如何,我不得不将驱动程序的窗口设置为新打开的窗口,然后它就可以正常工作了。

希望这可以帮助其他人。

干杯

贾勒特

于 2012-10-26T14:21:31.227 回答
0

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

driver.switch_to.default_content() 
driver.switch_to_frame("fameid")
于 2018-11-29T09:12:47.273 回答