我无法在Selenium WebDriver中找到以下代码的gettext
。
<a id="551" class="blueTextNormal1 spc" onclick="sPh(this,'079');return false;" title="079">Country</a>
我想获得Country的值。我尝试使用xpath
:
driver.findElement(By.xpath("//*[@id='551']").getText())
但是没有返回任何值。当我尝试用
driver.findElement(By.xpath("//*[@id='551']")).getAttribute("title"))
我得到的值是"079"
我该如何继续?
这也取决于代码。试试下面的代码:
代替getText()
,请使用getAttribute("innerHTML")
,它将返回您正在寻找的内容,包括任何不可见的HTML。
<div class="no-docs-selected">
<p class="icon-alert">Please select a doc</p>
</div>
我正在寻找Please select a doc
,但我没有成功的getText()
。
driver.findElement(By.xpath("//p[@class='icon-alert']")).getAttribute("innerHTML");
我遇到了同样的问题,然后我将. gettext()更新为. getattribute ("textContent"),它工作了。
你能得到属性的标题,但不能得到文本,这真是令人惊讶。
与试
driver.findelement(By.xpath("//a[@id='551' and contains(text(),'Country')]")).isDisplayed();
或
driver.findelement(By.xpath("//a[@id='551' and text()='Country']")).isDisplayed();
我也有一个getAttribute("innerHTML")
工作的情况,但不是getText()
。结果显示该元素存在,但它不可见或不显示。
当我在调用getText()
之前先滚动到元素时,它工作了。
if(!element.isDisplayed())
scrollIntoView(element);
element.getText();
scrollIntoView
函数如下:
public void scrollIntoView(WebElement element) {
((JavascriptExecutor) driver).executeScript("arguments[0].scrollIntoView(true);", element);
}
因此我不需要使用getAttribute("innerHTML") '。
这对我有用:
System.out.println(driver.findElement(By.id("error")).getAttribute("textContent"));
代码:driver.get("https://login.salesforce.com/");
driver.findElement(By.id("username")).sendKeys("Hello");
driver.findElement(By.id("password")).sendKeys("Hello");
driver.findElement(By.id("Login")).click();
System.out.println(driver.findElement(By.id("error")).getAttribute("textContent"));
driver.close();
除非是在复制到Stack Overflow时的打字错误,否则在getText之前缺少括号。改变driver.findElement(By.xpath("//*[@id='551']").getText())
到driver.findElement(By.xpath("//*[@id='551']")).getText()
WebDriver driver = new ChromeDriver();
driver.get("C:\test.html");
System.out.println(driver.findElement(By.xpath("//*[@id='551']")).getText());
System.out.println(driver.findElement(By.xpath("//*@id='551']")).getAttribute("title"));
String text1 = driver.findElementByXPath("//input[@value='EFASTGTC']/../ancestor::tr[1]/scipt[1]").getAttribute("innerText");
System.out.println("Value=" + text1);
如果您想在脚本标签之间写入文本,则此代码将工作。
使用<WebElement>.getAttribute("value")
提取文本
这对我很有效。我用getAttribute("innerText")
代替getText()
。
System.out.println(driver.findElement(By.id("modalError")).getAttribute("innerText"));
在类似的情况下,这对我很有效:
.getAttribute("innerHTML");
.getAttribute("innerText");
.getAttribute("outerText");