我一直在尝试使用JavaScript selenium-webdriver从WebElement中提取纯文本时遇到问题。我目前正在使用MicrosoftEdge浏览器和驱动程序,一切都设置正确,但我无法解决为什么尝试从WebElement获取值在JavaScript Selenium中被破坏。例如,假设以下文档:
<html>
<body>
<p>Hello</p>
<a href="http://bing.com/maps" class="myClass">Maps</a>
</body>
</html>
以及随后的查询(为简洁而省略设置):
browser.get("file:///path/to/index.html");
browser.sleep(1000); //Just to be sure...
var ep = browser.findElement(By.linkText("Maps"));
ep.then(elm => console.log(elm.getText())); //Doesn't work!
ep.then(elm => console.log(elm.getAttribute("innerHtml"))); //Doesn't work!
ep.then(elm => elm.click()); //works
任何不直接与元素交互的内容(例如sendKeys或click),包括isDisplayed()
之类的调用似乎都会失败,并在控制台中提供一些异常跟踪。我在Windows 10上使用selenium-webdrivier 3.3.0,nodejs版本为6.10.0。
API是为了方便。
答案 0 :(得分:3)
getText和getAttribute返回使用请求值解析的promise。
elm.getText().then(function (text) {
console.log(text);
});
答案 1 :(得分:1)
尽我所能:
await teste.driver.findElement({
css: 'input[name="nameElementExample"]'
}).getAttribute("value");