gpt4 book ai didi

java - 如何使用 xpath Java Selenium 获取所有包含指定文本的 td 标签?

转载 作者:行者123 更新时间:2023-12-02 08:58:19 25 4
gpt4 key购买 nike

实际问题是:无法找到所有包含指定文本的 td 标签,仅找到其中的一些标签。

我正在尝试使用 xpath 检查所有 td 标记是否包含指定文本,例如:

 WebElement tableId = driver.findElement(By.id("tablepress-6"));
if (!driver.findElements(By.xpath("//td[contains(text(),'" + textInput + "')]")).isEmpty()) {

List<WebElement> tdElements = tableId.findElements(By.xpath("//td[contains(text(),'"+ textInput + "')]"));
//...
}

我还尝试过使用 xpath 的方法,例如:

List<WebElement> tdElements = tableId.findElements(By.xpath("//*[contains(text(),'" + textInput + "')]"));

喜欢:

List<WebElement> tdElements = tableId.findElements(By.xpath("//tr[*[text() = '"+ textInput + "']]/td[2]"));

但是如果我检查我的website我没有获得 td 元素的所有匹配项,可能是因为一些匹配的 td 中存在 br 元素。

enter image description here

我得到的匹配项数量较少(在我的具体情况下 - 12),而不是获得所有 17 匹配项(如上面的屏幕所示): enter image description here

有人可以建议我如何获取包含指定文本的所有 td 标签吗?提前致谢。

最佳答案

问题是物理和天文学区分大小写。在某些行中,您可以找到物理和天文学。要解决这个问题,您可以使用 xpath translate功能。

在下面的示例中,我得到的第二列仅包含物理和天文学文本,因为它也存在于第二列中。

//tr[@role='row']/td[2][contains(translate(.,'ABCDEFGHIJKLMNOPQRSTUVWXYZ','abcdefghijklmnopqrstuvwxyz'), 'physics and astronomy')]

作为替代方案,您可以使用 Java 按文本过滤:

List<WebElement> rows = new WebDriverWait(driver, 10)
.until(ExpectedConditions.visibilityOfAllElementsLocatedBy(By.cssSelector(".tablepress tbody tr[role=row]")));

// By whole phrase
List<WebElement> physicsAndAstronomy1 = rows.stream().filter(e ->
e.findElement(By.cssSelector("td:nth-child(2)")).getText().toLowerCase()
.contains("physics and astronomy"))
.collect(Collectors.toList());

// By separately words
List<WebElement> physicsAndAstronomy2 = rows.stream().filter(e -> {
String text = e.findElement(By.cssSelector("td:nth-child(2)")).getText().toLowerCase();
return text.contains("physics") && text.contains("astronomy");
}).collect(Collectors.toList());

关于java - 如何使用 xpath Java Selenium 获取所有包含指定文本的 td 标签?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60354493/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com