Java 硒getText
我想通过.id使用Java 硒getText,java,selenium,selenium-webdriver,gettext,getattribute,Java,Selenium,Selenium Webdriver,Gettext,Getattribute,我想通过.id使用By.code>或By.cssSelector使用getText() 我通过执行getAttribute(“value”)设法解决了我的问题,但我不明白为什么getText()不能像我期望的那样工作,我可能需要它,因此非常感谢所有帮助 以下是Java代码: WebDriverWait wait = new WebDriverWait(driver, 10); Boolean elementIsPresent = wait.until(ExpectedConditions.tex
By.code>或By.cssSelector使用getText()
我通过执行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;"/>
getText()传递WebElement的内部文本
您的输入字段没有任何内部文本。文本位于value属性中,因此通过getAttribute(“value”)访问它是正确的方法。简单答案-它就是这样设计的getText()
解析标记的内容(即其内部文本),该内容对于输入来说显然是空的。Java
ele.getAttribute(“innerHTML”)代码>
这可能会使文本已经出现在背景中,但尚未显示在页面上。如果要在Web元素上搜索给定文本,可以使用此选项。直接传递或通过字符串传递:
String textoToSearch = "Text inside Webelement";
driver.findElement(By.id("someID).getText().contains("textToSearch");
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;"/>
使用xpath:
理想情况下,您需要对元素位置的可见性()进行归纳,并且可以使用以下任一项:
- 使用cssSelector和
getText()
:
- 使用xpath和
getAttribute(“innerHTML”)
:
getText只返回可见文本,不返回任何HTML元素,也不返回任何隐藏文本。例如,对于Java,我遇到了一个BR标记返回空的问题。我使用了.getText()
而不是.getAttribute(“innerHTML”)
,它将返回我要查找的内容,包括任何不可见的HTML或隐藏的文本。@jsherk:但这不是这个问题的重点(?)。@PeterMortensen-是的,这有点像是因为op说了“但我不明白为什么getText()这是因为getText只返回不包含HTML元素的文本,而getAttribute将随文本一起返回HTML元素。但我的回答是注释而不是答案,因为这只是问题的一部分。在getText()返回空字符串但您的解决方案返回元素的内部文本的情况下,这非常有用。谢谢什么是WebElement
?是字面意思吗?
System.out.println(wd.findElement(By.cssSelector("input#general_service_name[name='general_service_name']")).getAttribute("value"));
System.out.println(wd.findElement(By.xpath("//input[@id='general_service_name' and @name='general_service_name']")).getAttribute("value"));
System.out.println(new WebDriverWait(driver, 20).until(ExpectedConditions.visibilityOfElementLocated(By.cssSelector("input#general_service_name[name='general_service_name']"))).getAttribute("value"));
System.out.println(new WebDriverWait(driver, 20).until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//input[@id='general_service_name' and @name='general_service_name']"))).getAttribute("value"));