选择器无效:xpath 表达式“//*[@id='topstuff']/div/div/p[1]/text()[2]”的结果是:使用 XPath 和 Selenium 的 [object Text]

2024-03-15

我在理解如何执行此操作时遇到很多问题。我需要做的很简单,就是每当我的自动谷歌搜索无法找到任何搜索结果时进行标记。我的代码示例:

driver = webdriver.Chrome(executable_path)
driver.get("https://google.com/")
search = driver.find_element_by_name("q")
search.send_keys('site:'+'www.pa.gov'+ ' "ADT.com" '+'\n')
if driver.find_element(By.XPATH, "//*[@id='topstuff']/div/div/p[1]/text()[2]"):
    print(True)
else:
    print(False)

我不断收到此错误:

InvalidSelectorException: invalid selector: The result of the xpath expression "//*[@id='topstuff']/div/div/p[1]/text()[2]" is: [object Text]. It should be an element.
  (Session info: chrome=87.0.4280.88)

这是我搜索过的链接

我究竟做错了什么?


这个错误信息...

selenium.common.exceptions.InvalidSelectorException: Message: invalid selector: The result of the xpath expression "//a[following-sibling::input[@value="ST"]]/@href" is: [object Attr]. It should be an element.

......意味着你的XPath表达式无效xpath表达式.

您需要更换:

driver.find_element(By.XPATH, "//*[@id='topstuff']/div/div/p[1]/text()[2]") 

with:

driver.find_elements(By.XPATH, "//*[@id='topstuff']/div/div/p[1]/text()")[2]

其他注意事项

Selenium https://stackoverflow.com/questions/54459701/what-is-selenium-and-what-is-webdriver/54482491#54482491 网络驱动程序 https://stackoverflow.com/questions/48079120/what-is-the-difference-between-chromedriver-and-webdriver-in-selenium/48080871#48080871支持xpath-1.0仅返回由xpath.

您可以找到xpath-1.0 /questions/tagged/xpath-1.0规格在XML 路径语言 (XPath) 版本 1.0 https://www.w3.org/TR/1999/REC-xpath-19991116/

但是,那xpath表达:

driver.find_elements(By.XPATH, "//*[@id='topstuff']/div/div/p[1]/text()")[2]

Is a xpath-2.0基于表达式,通常会返回一个object Text。举几个例子:

  • //@version:选择与上下文节点在同一文档中的所有版本属性节点
  • ../@lang:选择上下文节点父级的lang属性

您可以找到xpath-2.0 /questions/tagged/xpath-2.0规格在XML 路径语言 (XPath) 2.0(第二版) https://www.w3.org/TR/xpath20/


Solution

因此,您的代码块实际上将是:

if driver.find_elements(By.XPATH, "//*[@id='topstuff']/div/div/p[1]")[2]:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

选择器无效:xpath 表达式“//*[@id='topstuff']/div/div/p[1]/text()[2]”的结果是:使用 XPath 和 Selenium 的 [object Text] 的相关文章

随机推荐

  • 如何在 Linux 中查找所有以 .rb 结尾的文件?

    我所在的目录包含更多目录 我可以使用什么命令来获取所有以 rb 你可以尝试 find type f name rb
  • 在 Laravel 中将会话从文件传输到数据库

    我已经积累了超过6000万个会话 这导致了文件描述符耗尽的情况 通过将会话传输到数据库解决了该问题 在 Laravel 5 6 上测试 为了这 准备桌子 https laravel com docs 8 x session database
  • 使用子查询中的多个值进行更新

    假设我有一张桌子 items 有一个名为的整数列priority 我正在尝试从另一个表更新它 另一个表是一个临时表 我已经在其中预先计算了所有适当的priority要应用的值 UPDATE items SET priority SELECT
  • 将 DateTimePicker 值设置为 null

    我正在开发一个 WinForms UI 有两个DateTimePicker控制 最初 我想将控件的值设置为 null 直到用户选择日期 如果用户没有选择日期 则会将 null 值传递给数据库 默认情况下 它采用当前日期 您能否提出一些建议或
  • 检测实时应用程序中死锁的方法

    在实时多线程应用程序中检测死锁的方法有哪些 如果我们发现存在死锁 是否有任何方法可以解决它 而无需关闭 重新启动应用程序 有两种流行的方法来检测死锁 一种是让线程设置检查点 例如 如果您有一个具有工作循环的线程 您可以在开始工作时设置一个计
  • Scala 脚本无法在 Ubuntu 上运行

    我有一个以前可以工作的 Scala 脚本 当我尝试在新 PC 上运行它时 编译失败 所以我做了简单的脚本来测试 bin sh exec scala J Xmx2g 0 println test 尝试运行它我得到 test scala err
  • 从谷歌地图中的纬度和经度获取位置地址

    我想在点击谷歌地图并获取纬度和经度后从他们那里获取位置并将其 地址 放入字段中input searchTextField 我该怎么办 我尝试过 但不适合我 DEMO http jsfiddle net DXkZJ http jsfiddle
  • 批量更新 Excel 文件连接字符串

    我们最近更改了 SQL 数据库服务器 我想知道是否有脚本或更简单的方法来更新所有 Excel 文件连接字符串 如果他们使用连接文件会容易得多 但不幸的是它们都是手动设置的 我们有大约 600 份报告 任何帮助深表感谢 Thanks Nick
  • 将多边形转换为网格

    我有很多多边形 理想情况下 所有多边形不得相互重叠 但它们可以彼此相邻 但实际上 我必须考虑到slight多边形重叠 由一定的公差定义 因为所有这些多边形都是从用户手绘输入获得的 这并不像我希望的那样机器精确 我的问题是 是否有任何软件库组
  • MicroMeter:删除/禁用某个标签

    我正在使用默认的 MicroMeter 活页夹 其中之一用于创建仪表jvm memory used 问题是它带有 2 个可用标签 area 和 id 这实际上生成了 6 个我不感兴趣的仪表 我能够做到这一点 Bean public Mete
  • 如何检查 Botframework 上的对话框堆栈

    我正在实现一个反馈对话框 并且想使用IScorable然后关掉 反馈 这个词并推动我的FeedbackDialog到堆栈上 我不希望在收集用户反馈时出现这种行为 有没有办法确定我的FeedbackDialog已经在堆栈上了吗 那么我不会不小
  • Python 中的数据结构

    names Peter John size X M L list price 1 2 3 4 5 6 There are 2 people will buy 3 size of shirt 我想将我的数据结构创建为 name u Peter
  • CakePHP 通过 Auth 记住我

    我已经成功使用了 Auth 但不幸的是 它似乎只适用于 Session 我希望如果用户选中 记住我 复选框 我将使用 Cookie 并且他将登录 2 周 我在官方书籍中找不到任何内容 在谷歌中我只找到了很少而且不是很好的博客文章 有没有办法
  • 领域驱动设计和 IoC/依赖注入

    我现在正在尝试应用我学到的有关 DDD 的知识 但我对域模型中的依赖关系流有点困惑 我的问题是 实体是否应该了解域中的工厂 存储库 服务 存储库应该了解域中的服务吗 另一件困扰我的事情是当我想向集合添加实体时如何处理集合 假设我正在开发一个
  • 如何使用 Owin Katana 记录器

    我在 Microsoft Owin 项目中的此类文件中看到正在调用记录器 https github com aspnet AspNetKatana blob dev src Microsoft Owin Security OpenIdCon
  • 分割字符串并修剪每个元素

    是否有任何库 API 或正则表达式模式可以在某些分隔符上拆分字符串并自动修剪每个元素的前导和尾随空格 而无需循环元素 例如 在分割时 A B C D E on 所需的输出是 A B C D E 我得到的最接近的是str split s s
  • 如何在创建帐户时向用户分配角色

    我正在使用 ASP NET 内置成员资格和角色提供程序 在我的应用程序中 管理员为用户创建帐户 目前我正在通过访问 ASP NET 配置网站来分配角色 请告诉我如何在创建用户帐户 API 中添加选择角色的额外步骤 Thanks 您只是问如何
  • 429 请求太多 - Angular 7 - 多个文件上传

    当我尝试同时上传数百个以上的文件时 我遇到了这个问题 API 接口仅适用于一个文件 因此我必须调用发送每个文件的服务 现在我有这个 onFilePaymentSelect event void if event target files l
  • 当我使用模板时,我的文字方向写错了

    我想使用 Rails 在现有 PDF 上添加文本 所以我这样做了 filename Rails root app assets images sample pdf Prawn Document generate Rails root app
  • 选择器无效:xpath 表达式“//*[@id='topstuff']/div/div/p[1]/text()[2]”的结果是:使用 XPath 和 Selenium 的 [object Text]

    我在理解如何执行此操作时遇到很多问题 我需要做的很简单 就是每当我的自动谷歌搜索无法找到任何搜索结果时进行标记 我的代码示例 driver webdriver Chrome executable path driver get https