无法在Selenium WebDriver中使用gettext提取文本,也无法单击它



我无法在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");

最新更新