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

时间:2017-03-18 17:33:31

标签: javascript selenium selenium-webdriver

我一直在尝试使用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是为了方便。

2 个答案:

答案 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");