【问题标题】:Problems with XPath in SeleniumSelenium 中 XPath 的问题
【发布时间】:2019-04-01 16:01:34
【问题描述】:

我想根据它的属性来查找元素。

我已经尝试过按所有div搜索,按属性指定,甚至按*搜索。这些都不是解决方案。 整个元素如下所示:

<div class="charc" data-lvl="66" data-world="walios" data-nick="mirek">

这是我的搜索表达式:

driver.find_element_by_xpath('//div[@data-world="walios"] and [@data-nick="mirek"]')

我想使用带有 selenium 的 python 找到这个元素,并且能够点击它。

实际上我得到了错误

语法错误:无法对“文档”执行“评估”:字符串“//div[@data-world="walios"] 和 [@data-nick="mirek"]' 不是有效的 XPath 表达式.

我做错了什么?

【问题讨论】:

  • 如果你想在xpath中使用多个属性,这里是通用的符号//tag[@attribute1='attribute1_val' and @attribute2='attribute_val2']

标签: python selenium selenium-webdriver xpath


【解决方案1】:

错误消息是正确的,因为您的谓词不正确。
尝试将谓词放在一个 [...] 表达式中:

driver.find_element_by_xpath('//div[@data-world="walios" and @data-nick="mirek"]')

【讨论】:

  • ...或者您可以删除and 以提供//div[@data-world="walios"][@data-nick="mirek"]
【解决方案2】:

driver.find_elements_by_xpath("//div[@data-world="walios" and @data-nick="mirek)]")

driver.find_elements_by_xpath("//div[@data-world="walios"][@data-nick="mirek)]")

选择标签的多个条件不能在嵌套的[]内。您必须在一个 [] 或多个 [] 内指定。

XPath 坐标轴方法:

这些 XPath 轴方法用于查找复杂或动态元素。下面我们将看到其中的一些方法。

XPath 表达式根据 XML 文档中的 ID、名称、类名等属性选择节点或节点列表。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-10-01
    • 1970-01-01
    • 2022-11-18
    • 2017-11-17
    • 2010-11-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多