java 在xpath中指定多个条件

prdp8dxp  于 2023-01-04  发布在  Java
关注(0)|答案(5)|浏览(208)

我想选择所有带有<td class='blob-code blob-code-addition'> and <td class='blob-code blob-code-deletion'>的标签。所以我尝试在两个 predicate 之间包含or条件。它不起作用。然而,如果我只包含两个类中的一个,它就起作用了。这里有什么问题?语法有问题。

By getChanges = By.xpath("//td[@class='blob-code blob-code-addition'] or  //td[@class='blob-code blob-code-deletion']");
rjjhvcjd

rjjhvcjd1#

您需要按如下方式指定:

//td[contains(@class,'deletion') or contains(@class,'addition')]

//td[contains(@class,'blob-code blob-code-addition') or contains(@class,'blob-code blob-code-deletion')]

如果要执行tag独立搜索,则只需使用

//*[contains(@class,'blob-code blob-code-addition') or contains(@class,'blob-code blob-code-deletion')]

从您的回答来看,您似乎在尝试连接两个不同的xpath

但是,此处contians()不是强制性的。您也可以不使用它

//*[(@class='blob-code blob-code-addition') or (@class='blob-code blob-code-deletion')]
wswtfjt7

wswtfjt72#

对我有效的是下面的表达式使用“|“字符在我的表达式-
按元素=驱动程序.findElement(按.xpath(“//按钮[@ class ='xyz']|//按钮[@ class ='abc']”))
我将上述表达式用于JAVA + Selenium + Maven项目

h43kikqp

h43kikqp3#

使用pom:@FindBy(xpath ="//span[contains(@class,'vui-menuitem-label-text') and normalize-space(.) = 'Clone']")

vdgimpew

vdgimpew4#

要使用选择所有标记:

  • 第一个月
  • <td class="blob-code blob-code-deletion">

可使用以下任一定位器策略:

  • 通过class属性使用 xpath 和 * 或 * 子句:
//td[@class='blob-code blob-code-addition' or @class='blob-code blob-code-deletion']
  • 通过带有 * 或 * 子句的单个class属性使用 xpath
//td[contains(@class,'blob-code-addition') or contains(@class,'blob-code-deletion')]
  • 通过带有 * 或 * 子句的部分class属性使用 xpath
//td[contains(@class,'addition') or contains(@class,'deletion')]
ubbxdtey

ubbxdtey5#

用于在一个元素 selenium 中写入多个Xpath

driver.find_elements(By.XPATH, '//div[@class="any-content"]//p|//h3|//figure')

您可以使用“|“模。

相关问题