使用包含空格的 xpath

Using xpath containing whitespace

List <WebElement> tableSituacao = driver.findElements(By.xpath("//*[@id=\"tabela\"]/tbody/tr/td[5][contains(text(),"+situacao+")]"));

如何在我的案例中使用 normalize-space? "situacao" 有白色 spaces

要在 xpath 中传递变量 situacao,您可以使用以下代码行:

List <WebElement> tableSituacao = driver.findElements(By.xpath("//*[@id='tabela']/tbody/tr/td[5][normalize-space()='" + situacao + "']"));

使用下面的代码:

//*[@id=\"tabela\"]/tbody/tr/td[5][normalize-space()='"+situacao+"')]

注意: 如果您在 _example_ 之类的字符串中有左右 spaces(将 _ 视为 space).但是,如果您倾向于考虑 space 的中间部分和 example example 之类的字符串,那么它是一个完整的字符串,它会在第一个 example 文本之前和最后一个之后删除 space 示例 文本。

尝试在您的 xpath 表达式中使用单引号。这里我假设 suticao 包含字符串 "Example Example":

List <WebElement> tableSituacao 
= driver.findElements(
      By.xpath("//*[@id='tabela']/tbody/tr/td[5][contains(text(),'" + suticao + "')]");

无需使用 XPath 处理此问题。您可以 .trim() 字符串。

List <WebElement> tableSituacao = driver.findElements(By.xpath("//*[@id='tabela']/tbody/tr/td[5][contains(text(),'" + situacao.trim() + "')]"));

我还会在 XPath 中使用 ' 而不是转义双引号 \"。我认为这样更容易阅读。