我试图在网上知道原因,但我没有得到它。
我想知道为什么'%s'用于xpath而不是给出短信
我希望有人可以帮助我。
看我的情景:
By.xpath((" // DIV [含有(文本(),'%S&#39)] /以下同胞:: DIV //输入&#34))
答案 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)
'%s'
用作字符串替换。
示例:
exampleXpath = "//*[contains(@id,'%s')]"
void findElement(String someText)
{
driver.findElement(By.xpath(String.format(exampleXpath, someText)));
}
因此它将用用户传递的%s
替换someText
。