当前位置: 首页 > 知识库问答 >
问题:

Python XPath似乎不适用于某些元素

张啸
2023-03-14

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

当我在Selenium IDE中运行测试时,它运行良好。当我导出到Java JUnit 4测试用例时,它运行良好。但当我导出到Python2单元测试时,xpath搜索似乎有很多问题。。。

例子:

该页面有一个名为class='keyword'的输入元素。当我使用java和驱动程序进行搜索时。findElement(按名称(“关键字”) 一切都很好-它找到了元素。

当我使用python和浏览器进行搜索时。按名称(“关键字”)查找元素,它似乎找不到。我还尝试了浏览器。通过xpath(//input[@name='keyword'])浏览器查找元素。通过xpath(“/html/body/form/div/ul/li[2]/input”)查找元素,第二个是我使用firebug时得到的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"}'

干杯

杰瑞特


共有2个答案

潘文乐
2023-03-14

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

driver.switch_to.default_content() 
driver.switch_to_frame("fameid")
琴光亮
2023-03-14

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

不管怎样,我必须将司机的车窗设置为新打开的车窗,然后它工作正常。

希望这能帮助其他人。

干杯

杰瑞特

 类似资料:
  • 问题内容: 我需要在我的老师不让我们使用IDE的前提下对此进行开头。我们使用TextPad。我要单击此标签,然后将其从“ H”更改为“ T”。目前,当我单击标签时,没有执行任何操作。我忘记了什么? 问题答案: 您的工具,但您还需要告知将事件发送给自己。在构造函数的最后,您需要说 如果您还记得可以将 任何 类放入,并且必须将您的侦听器连接到,则这更有意义。本身是侦听器这一事实并不能免除您的这种责任。

  • 我一直在使用URLConnection。guessContentTypeFromName(String fname)来检测我需要在标头中使用什么mime类型来返回不同的文档。 在我用测试程序测试之前,它工作得很好 。我可以通过测试使它工作。jpg或测试。pdf,但不带测试。csv。 我没有问题获得pdf和jpg扩展的良好mimetype,但csv扩展接收null。 我似乎在谷歌上找不到任何理由来解

  • 我正在使用二分模块搜索并将sha256哈希插入列表。 我有大约8,000,000项要搜索和添加,它们存储在sqlite数据库中,我想把它们读入列表,这样我就可以更快地搜索它们。 我遇到的问题是,使用二分法将项目插入列表以找到正确的插入点非常慢。完成所有8000000个项目大约需要700秒。 按升序在sqlite数据库中创建索引只需要大约90秒,然后依次将索引插入列表大约需要60秒。 问题是当我这样

  • 我正在使用来自openweathermap的json API数据来获取有关特定城市的信息。 几天前还好好的,现在由于某种原因,每个标有塞尔维亚国家代码“RS”的城市都不能工作了。http://api.openweathermap.org/data/2.5/weather?q =塞尔维亚贝尔格莱德 如果我使用其他国家的城市,例如这个,它是有效的:http://api.openweathermap.o

  • 我正在编辑从tesseract ocr收到的一些电子邮件。 以下是我的代码: 但输出不正确。 输入: 输出: 但是当我在每次替换后将结果赋给一个新的字符串时,它工作得很好。为什么在同一个字符串中连续赋值不起作用?

  • 我正在做一个与运行时间有关的练习。exec(),我理解这个运行时。exec不是shell解释器,这就是为什么我执行“bash-c'command'”,但出于某种原因,我可以执行像ls这样的命令,但不能执行echo或重定向或多个命令。这些都不起作用: 这是我的java代码: 我使用以下语法运行上述命令: 这是有效的: 我在Ubuntu 20.04和zsh上使用openjdk 11.0.15。有人能告