Selenium getText

时间:2014-05-22 10:23:45

标签: java selenium webdriver gettext

我想使用By.id或By.cssSelector来获取文本()。

我设法通过getAttribute(" value")来解决我的问题,但我不明白为什么getText()不像我期望的那样工作,我可能需要所以所有的帮助都表示赞赏。

这是java:

WebDriverWait wait = new WebDriverWait(driver, 10);         
Boolean elementIsPresent = wait.until(ExpectedConditions.textToBePresentInElementValue(By.cssSelector("#general_service_name"),"[reg] general_service_name")); // true          

//WebElement general_service_name = driver.findElement(By.cssSelector("#general_service_name"));
WebElement general_service_name = driver.findElement(By.id("general_service_name"));

// Display check
Boolean isDisplayed;
if(general_service_name.isDisplayed())  isDisplayed = new Boolean(true); else isDisplayed = false; //true

String text_empty = general_service_name.getText(); //""
String text_with_value = driver.findElement(By.id("general_service_name")).getAttribute("value"); //"[reg] general_service_name"

和html:

<input id="general_service_name" type="text" value="[reg] title" name="general_service_name" style="float:left;"/>

5 个答案:

答案 0 :(得分:11)

http://selenium.googlecode.com/svn/trunk/docs/api/java/org/openqa/selenium/WebElement.html#getText()

getText()提供WebElement的innerText。

您的输入字段没有任何内部文本。文本位于value-attribute中,因此通过getAttribute(“value”)访问它是正确的方法。

答案 1 :(得分:3)

爪哇 ele.getAttribute("innerHTML");

这可能会使文本已经在后台显示,但尚未在页面上显示。

答案 2 :(得分:0)

简单回答 - 它是这样设计的。 getText()解析标记的内容(即其内部文本),对于输入显然是空的。

答案 3 :(得分:0)

如果要在WebElement上搜索给定的文本,可以使用此选项。直接或通过字符串传递

String textoToSearch = "Text inside Webelement";
driver.findElement(By.id("someID).getText().contains("textToSearch");

答案 4 :(得分:0)

getText()

getText() 返回此元素的可见文本。

java.lang.String getText()
Get the visible (i.e. not hidden by CSS) text of this element, including sub-elements.


Returns:
The visible text of this element.

根据元素的 HTML:

<input id="general_service_name" type="text" value="[reg] title" name="general_service_name" style="float:left;"/>

WebElement 没有可见文本,但 value 属性的值设置为 [reg] title

因此要提取 value 属性的值,即 [reg] title,您可以使用以下任一 Locator Strategies

  • 使用cssSelector

    System.out.println(wd.findElement(By.cssSelector("input#general_service_name[name='general_service_name']")).getAttribute("value"));
    
  • 使用 xpath

    System.out.println(wd.findElement(By.xpath("//input[@id='general_service_name' and @name='general_service_name']")).getAttribute("value"));
    

理想情况下,您需要为 visibilityOfElementLocated() 引入 WebDriverWait,并且您可以使用以下任一 Locator Strategies

  • 使用 cssSelectorgetText()

    System.out.println(new WebDriverWait(driver, 20).until(ExpectedConditions.visibilityOfElementLocated(By.cssSelector("input#general_service_name[name='general_service_name']"))).getAttribute("value"));
    
  • 使用 xpathgetAttribute("innerHTML")

    System.out.println(new WebDriverWait(driver, 20).until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//input[@id='general_service_name' and @name='general_service_name']"))).getAttribute("value"));