将Java变量添加到xpath

时间:2015-10-18 09:53:05

标签: java selenium xpath selenium-webdriver webdriver

是否可以将已定义的Java String变量添加到xpath-expression中?以下是一些明确的代码:

String newUser = "NewUser123";
driver.findElement(By.xpath("//td[normalize-space(text())=**newUser**]/a")).click();

xpath应该与变量newUser一起使用,但我不知道如何。

6 个答案:

答案 0 :(得分:4)

是的,当您在使用selenium时选择Java作为编程语言时,您可以执行Java中逻辑上可能的所有事情。

举个例子,xpath是一个带字符串参数的函数。所以在Java中我们使用+连接多个字符串。你可以在这里做同样的事情。

String newUser = "NewUser123";
driver.findElement(By.xpath("//td[normalize-space(text())='"+newUser+"']/a")).click();

答案 1 :(得分:1)

在类似情况下,我将查找提取到类中的常量,并使用 String.format 实用程序将变量插入到我需要的位置。请注意在下面的示例常量 USER_XPATH 中使用%s

我认为这对于可读性和维护比内联串联选项更好,但两者都将实现目标。

/** Format string for the ### xpath lookup.*/
private static final String USER_XPATH ="//td[normalize-space(text())=%s]/a";

然后你可以使用String.format插入你想要的变量:

 private void myMethod() {
      String newUser = "NewUser123";
      String fullXpath = String.format(USER_XPATH, newUser);
      driver.findElement(By.xpath(fullXpath)).click();
    }

答案 2 :(得分:1)

Xpath(带有变量和空格)

String CasesCount = Utility.WebDriverHelper.Wdriver.findElement
(By.xpath("//button[text()=' "+tabname+"']/span")).getText();

删除文本中的这种特殊花括号()

CasesCount  = CasesCount.replaceAll("\\(", "").replaceAll("\\)","");

答案 3 :(得分:0)

您可以尝试以下代码:

String newUser = "NewUser123";
driver.findElement(By.xpath("//td[normalize-space(text())=" + newUser + "]/a")).click();

答案 4 :(得分:0)

如果它在任何循环表中是一个数字,则可以写为

String sCol =“ 1”;

driver.findElement(By.xpath(“ / html / body / div [1] / div [2] / div / div [2] / article / div / table / tbody / tr [” + sRow +“] / td [“ + sCol +”]“))。getText();

答案 5 :(得分:-1)

像处理Java中的任何其他字符串连接或插值一样处理xpath