2015-10-18 80 views
-1

是否可以將已定義的Java字符串變量添加到xpath-expression?這裏有一些代碼要說清楚:將Java變量添加到xpath

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

xpath應該與變量newUser一起工作,但我不知道如何。

+2

的可能的複製[爪哇 - 包括字符串中的變量?(http://stackoverflow.com/questions/9643610/java-including-variables-within-strings) – JeffC

+0

爲什麼向下票?這是一個有效的問題! – Miek

回答

-1

像對待其他任何字符串連接或插值的XPath你會做在Java中

0

你可以試試下面的代碼:

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

在類似的情況下,我會查找解壓到在一個恆定類,並使用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(); 
    } 
+0

這很好,除了'%s'需要包含在引號(單個或雙引號)之間。否則,它不起作用。我的意思是它應該是'private static final USER_XPATH =「// td [normalize-space(text())='%s']/a」;' – Rao

2

是的,當你選擇Java作爲編程語言與硒的工作時,你可以執行的所有的東西在邏輯上可能在Java中。

舉一個例子,xpath是一個接受字符串參數的函數。就像在Java中一樣,我們使用+連接多個字符串。你可以在這裏做同樣的事情。

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