我在我们的一个自动脚本中面临一个问题,我需要阅读隐藏可访问性的元素的文本,因为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?
由于
答案 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将始终包含唯一元素。