<ul id="name" class="abc">
<li class="def">
<a class="ghi">
<i style="background-color: transparent;">Welcome {{username}} </i>
</a>
</li>
</ul>
Selenium IDE:
storeText //ul[@id="name"]/li/a/i a
echo ${a}
正确显示“欢迎{{username}}”文字。
但是,在Selenium WebDriver中,我无法获取文本。
driver.findElement(By.xpath("//ul[@id='name']/li/a/i")).getText();
上面的代码行返回一个空值。
只需识别您的元素,只需使用getAttribute("value");
将其存储在字符串变量中并打印该变量。
码:
WebElement element = driver.findElement(By.xpath(".//input[@id='password_2']"));
String str = element.getAttribute("value");
System.out.println("value:" + str);
希望这有效。它对我有用getAttribute("value")
。
总是尝试传递value属性。
您显然首先需要使用任何定位器(这里我使用Xpath)获取文本并将其设置为字符串供以后使用。下面的代码将存储Xpath中包含的文本。
String nameOfStringGoesHere;
nameOfStringGoesHere=driver.findElement(By.xpath("//ul[@id="name"]/li/a/i ")).getText();`
在脚本中稍后对存储的文本进行断言
Assert.assertTrue("What you want your error message to appear as...!", nameOfStringGoesHere.contains("What you want to assert"));
在这个例子中,它将获取存储在xpath中的文本,并检查该值是否为“您想要断言的内容”,如果不是,则会抛出“您想要的错误”的错误消息消息显示为......!“
我在不同但相似的用例中有完全相同的症状。对我来说,问题中提出的方法是正确的。但实际上,当使用chrome webdriver和gecko webdriver的正确结果时,它会返回一个空字符串。看起来更像是chrome webdriver中的一个bug? (我的版本:chrome驱动程序:2.42,gecko driver:0.21)