8

我想getText()使用By.idor 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;"/>
4

5 回答 5

13

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

getText() 传递 WebElement 的 innerText。

您的输入字段没有任何内部文本。该文本位于您的值属性中,因此通过 getAttribute("value") 访问它是正确的方法。

于 2014-05-22T10:31:41.647 回答
4

爪哇 ele.getAttribute("innerHTML");

这可能会使文本已经在背景中并且尚未显示在页面上。

于 2016-07-27T03:04:26.370 回答
0

简单的答案 - 它是这样设计的。getText()解析标签的内容(即它的 innerText),这对于输入来说显然是空的。

于 2014-05-22T10:32:37.857 回答
0

如果您想在 WebElement 上搜索给定的文本,您可以使用它。直接或通过字符串传递:

String textoToSearch = "Text inside Webelement";
driver.findElement(By.id("someID).getText().contains("textToSearch");
于 2018-07-19T07:39:40.640 回答
0

获取文本()

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

理想情况下,您需要诱导WebDriverWait并且visibilityOfElementLocated()您可以使用以下任一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"));
    
于 2021-01-14T19:10:11.293 回答