Selenium (JS) 中 WebElement 的 getText() 失败

Sin*_*ani 0 javascript selenium selenium-webdriver

我在尝试使用 JavaScript selenium-webdriver 从 WebElement 中提取纯文本时遇到了问题。我目前正在使用 MicrosoftEdge 浏览器和驱动程序,一切都设置正确,但我无法弄清楚为什么在 JavaScript Selenium 中尝试从 WebElement 获取值会被破坏。例如,假设有以下文档:

<html>
    <body>
        <p>Hello</p>
        <a href="http://bing.com/maps" class="myClass">Maps</a>
    </body>
</html>
Run Code Online (Sandbox Code Playgroud)

以及随后的查询(为简洁起见省略了设置):

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
Run Code Online (Sandbox Code Playgroud)

任何不直接与元素交互的东西(例如 sendKeys 或 click),包括isDisplayed()似乎失败的调用,并在控制台中给出一些异常跟踪。我在带有 nodejs 版本 6.10.0 的 Windows 10 上使用 selenium-webdrivier 3.3.0。

方便的API

dob*_*ler 5

getText 和 getAttribute 返回用请求的值解析的承诺。

elm.getText().then(function (text) {
   console.log(text);
});
Run Code Online (Sandbox Code Playgroud)