Selenium使用Xpath读取隐藏的web元素的文本

时间:2016-11-16 13:15:20

标签: javascript java selenium xpath selenium-webdriver

我在我们的一个自动脚本中面临一个问题,我需要阅读隐藏可访问性的元素的文本,因为selenium无法读取隐藏元素的文本。我也在这里检查了其他帖子,他们建议使用元素的ID执行javascript并读取innerHTML。在我们的例子中,挑战是我不能使用web元素的ID作为其动态,并且每次在Web浏览器中加载页面时都会更改,因此我必须依赖Xpath,请在下面找到元素的代码 -

<div id="milestone_gwt-uid-2132" class="accessibilityhidden">Current Step: Referral Details</div>

现在id即&#34; milestone_gwt-uid-2132&#34;不是静态的,只要加载页面就会改变,我想阅读文本 - &#34;当前步骤:推荐细节&#34;。有没有有效的方法来使用Selenium Java?

由于

4 个答案:

答案 0 :(得分:1)

方法getText返回可见文本。使用executeScript获取隐藏文字:

WebElement elem = driver.findElement(By.xpath("//div[contains(text(), 'Current Step:')]"));
String hiddenText = (String)((JavascriptExecutor)driver).executeScript(
    "return arguments[0].textContent;", elem);

请注意,评估测试中的某些隐藏文本可能是一个坏主意,因为它不能反映用户可以看到的内容。

答案 1 :(得分:0)

您可以通过以下方式在id中使用动态XPath

//div[contains(@id, "milestone_gwt-uid-")]

您可以使用以下代码获取innerHTML

WebElement element = driver.findElement(By.xpath('//div[contains(@id, "milestone_gwt-uid-")]'));
String contents = (String)((JavascriptExecutor)driver).executeScript("return arguments[0].innerHTML;", element);

答案 2 :(得分:0)

谢谢!可与MS Word Online一起使用!! 调用方法:

String textFromEditor = getValue(driver.findElement(By.id(editorFieldId)));

方法主体:

protected String getValue(WebElement element) {
        try
        {
            String value = (String)((JavascriptExecutor) driver).executeScript("return arguments[0].textContent;", element);
            return value;
        }
        catch (Exception e)
        {
            return "can't get text";
        }
}

答案 3 :(得分:-1)

您可以通过连接两个文本来断言元素,因为DOM将始终包含唯一元素。