【问题标题】:Using xpath containing whitespace使用包含空格的 xpath
【发布时间】:2018-05-22 16:03:58
【问题描述】:
List <WebElement> tableSituacao = driver.findElements(By.xpath("//*[@id=\"tabela\"]/tbody/tr/td[5][contains(text(),"+situacao+")]"));

在我的情况下如何使用规范化空间? “situacao”有空格

【问题讨论】:

    标签: java selenium xpath normalize


    【解决方案1】:

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

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

    【讨论】:

    • 我的问题不是通过 situacao whitin xpath 而是得到这个带有空格的字符串 situacao = "Example"(有效) situacao = "Example Example"(无效)
    【解决方案2】:

    使用下面的代码:

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

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

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

        【解决方案4】:

        没有必要用 XPath 来处理这个问题。你可以.trim()这个字符串。

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

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2022-12-13
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多