【问题标题】:getText() does not give text in Selenium WebDrivergetText() 不在 Selenium WebDriver 中提供文本
【发布时间】:2017-03-03 04:57:32
【问题描述】:

<ul id="name" class="abc">
  <li class="def">
     <a class="ghi">
       <i style="background-color: transparent;">Welcome {{username}} </i>
     </a>
  </li>
</ul>

硒 IDE:

storeText         //ul[@id="name"]/li/a/i       a
echo              ${a}

“Welcome {{username}}”文本显示正确。

但是,在 Selenium WebDriver 中,我无法获取文本。

driver.findElement(By.xpath("//ul[@id='name']/li/a/i")).getText();

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

【问题讨论】:

  • WebElement.getText() 对我不起作用。我正在使用 Chrome 浏览器。但是我可以在 Firefox 浏览器中使用 Selenium IDE 获取文本。
  • 分享Html而不是image
  • 试试/ul[@id='name']/li/a/i 而不是//ul[@id='name']/li/a/i 看看。
  • @SuchitKumar,无法定位元素

标签: selenium selenium-webdriver webdriver automated-tests


【解决方案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 属性。

【讨论】:

    【解决方案2】:

    首先,您需要使用任何定位器(这里我使用 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 表达式中的文本,并检查该值是否为“您要断言的内容”,如果不是,则抛出错误消息“What you want to assert”您希望您的错误消息显示为...!”

    【讨论】:

      【解决方案3】:

      我在不同但相似的用例中出现了完全相同的症状。对我来说,问题中提出的方式是正确的。但实际上,在使用 Google Chrome 网络驱动程序时它会返回一个空字符串,而使用壁虎网络驱动程序会返回正确的结果。这似乎更像是 Chrome 网络驱动程序中的一个错误(?)。

      (我的版本:Chrome 驱动程序:2.42。Gecko 驱动程序:0.21)

      【讨论】:

        猜你喜欢
        • 2011-12-21
        • 1970-01-01
        • 1970-01-01
        • 2013-05-18
        • 2014-09-08
        • 1970-01-01
        • 1970-01-01
        • 2012-07-22
        • 1970-01-01
        相关资源
        最近更新 更多