getText()不会在Selenium WebDriver中提供文本

时间:2017-03-03 04:57:33

标签: selenium selenium-webdriver webdriver automated-tests

<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();

上面一行代码返回一个空值。

3 个答案:

答案 0 :(得分:1)

只需标识您的元素,只需使用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属性。

答案 1 :(得分:0)

你显然首先需要使用任何定位器获取文本(这里我使用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中的文本,并检查该值是否为“您要断言的内容”,如果不是,则会抛出错误消息“你是什么的希望您的错误消息显示为......!“

答案 2 :(得分:0)

在不同但相似的用例中,我的症状完全相同。对我来说,问题中提出的方法是正确的。但是的确,当使用chrome webdriver和gecko webdriver时,它返回一个空字符串。似乎更像是Chrome网络驱动程序中的错误? (我的版本:Chrome驱动程序:2.42,壁虎驱动程序:0.21)