我想使用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;"/>
答案 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()
返回此元素的可见文本。
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:
使用 cssSelector 和 getText()
:
System.out.println(new WebDriverWait(driver, 20).until(ExpectedConditions.visibilityOfElementLocated(By.cssSelector("input#general_service_name[name='general_service_name']"))).getAttribute("value"));
使用 xpath 和 getAttribute("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"));