在xpath中使用'%s'是什么?

时间:2015-04-10 07:44:27

标签: xpath selenium-webdriver nsindexpath domxpath

我试图在网上知道原因,但我没有得到它。

我想知道为什么'%s'用于xpath而不是给出短信

我希望有人可以帮助我。

看我的情景:
By.xpath((" // DIV [含有(文本(),'%S&#39)] /以下同胞:: DIV //输入&#34))

3 个答案:

答案 0 :(得分:0)

它被称为通配符。

E.g。你有

private final String myId = "//*[contains(@id,'%s')]";

private WebElement idSelect(String text) {
    return driver.findElement(By.xpath(String.format(myId, text)));
}

然后,您可以创建一个类似的函数:

public void clickMyId(idName){
   idSelect(idName.click();
}

并致电

clickMyId('testId');

%s的总体目标不是使用字符串连接,而是使用它注入字符串。

答案 1 :(得分:0)

有时,Web元素的定位器很多,它们是相同类型的,只有它们在索引或字符串中的差别很小。

例如: - " // div [@id =' one'] / span [text()=' Mahesh']"和

" // DIV [@id ='一个'] /跨度[文本()='乔尼']"

正如在上面的例子中可以看到,对于这两个元素,id都是相同的,但文本会有所不同。

所以在这种情况下你可以使用'%s'而不是像

这样的文字

String locator =&#34; // div [@id =&#39; one&#39;] // span [text()=&#39;%s&#39;]&#34 ;; < / p>

private by pageLocator(String name)

{

返回By.xpath(String.format(locator,name));

}

所以在你的情况下 By.xpath((&#34; // DIV [含有(文本(),&#39;%S&#39)] /以下同胞:: DIV //输入&#34)) 文本在运行时传递,因为只有文本在定位器中有所不同。

答案 2 :(得分:0)

XPath中的

'%s'用作字符串替换。

示例:

    exampleXpath = "//*[contains(@id,'%s')]"

void findElement(String someText)
{
    driver.findElement(By.xpath(String.format(exampleXpath, someText)));
}

因此它将用用户传递的%s替换someText