14

我无法gettext在 Selenium WebDriver 中找到以下代码。

<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”。

我该如何继续?

4

9 回答 9

27

这也取决于代码。试试下面的代码:

getText()请使用which代替,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");
于 2014-07-14T13:31:58.953 回答
17

我遇到了同样的问题,然后我将 .getText() 更新为.getAttribute("textContent")并且它起作用了。

于 2017-03-22T08:32:23.167 回答
1

您能够获得属性标题,而不是文本,真是令人惊讶。

尝试

driver.findelement(By.xpath("//a[@id='551' and contains(text(),'Country')]")).isDisplayed();

或者

driver.findelement(By.xpath("//a[@id='551' and text()='Country']")).isDisplayed();
于 2013-05-23T06:50:09.630 回答
1

我也有一个案例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")`。

于 2019-11-04T18:44:19.830 回答
1

这对我有用:

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();
于 2021-06-06T14:34:58.257 回答
0

除非在复制到 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"));
于 2013-05-23T15:52:08.393 回答
0

用于<WebElement>.getAttribute("value")提取文本。

于 2016-08-31T07:51:54.230 回答
0
String text1 = driver.findElementByXPath("//input[@value='EFASTGTC']/../ancestor::tr[1]/scipt[1]").getAttribute("innerText"); 
        
System.out.println("Value=" + text1);

如果您希望在脚本标记之间写入文本,则此代码将起作用。

于 2017-02-03T06:04:35.980 回答
-1

在类似的情况下,这对我有用:

.getAttribute("innerHTML");
.getAttribute("innerText");
.getAttribute("outerText");
于 2016-12-22T21:58:23.470 回答