向xpath添加Java变量

向xpath添加Java变量,java,selenium,xpath,selenium-webdriver,webdriver,Java,Selenium,Xpath,Selenium Webdriver,Webdriver,是否可以将定义的Java字符串变量添加到xpath表达式中?下面是一些代码,以明确说明: String newUser = "NewUser123"; driver.findElement(By.xpath("//td[normalize-space(text())=**newUser**]/a")).click(); xpath应该与变量newUser一起工作,但我不知道如何处理。将xpath与Java中的任何其他字符串连接或插值一样处理。您可以尝试以下代码: String newUser

是否可以将定义的Java字符串变量添加到xpath表达式中?下面是一些代码,以明确说明:

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

xpath应该与变量newUser一起工作,但我不知道如何处理。

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

您可以尝试以下代码:

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

在类似的情况下,我会将查找提取到类中的一个常量,并使用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();
    }

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

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

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

如果它是任何循环表中的一个数字,那么可以这样写

字符串sCol=“1”


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

带变量和空格的Xpath

String CasesCount = Utility.WebDriverHelper.Wdriver.findElement
(By.xpath("//button[text()=' "+tabname+"']/span")).getText();
删除文本中的此类特殊大括号
()

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

为什么会有可能重复的否决票?这是一个合理的问题!这很好,只是
%s
需要包含在引号之间(单引号或双引号)。否则,它将不起作用。我的意思是它应该是
private static final USER_XPATH=“//td[normalize space(text())='%s']/a”