无法在Gmail中找到元素

时间:2017-06-14 13:39:25

标签: javascript xpath selenium-webdriver nightwatch.js e2e-testing

我使用Nightwatch.js创建了一个项目。该流程会在我们的开发环境中执行检查(工作正常),最终会向Gmail帐户发送测试电子邮件。然后,该过程将转到Gmail,登录并单击正确的电子邮件。

我正在尝试获取发送到应用程序的URL(忘记密码链接)并将浏览器发送到正确的URL。

问题是当我使用以下代码时:

browser
  .useXpath()
  .getText("string(//*[text()[contains(text(),'RetrievePassword')]])",function(result)
  {
    console.log(result.log)
  })

我收到此错误:

  

错误:无法使用:xpath

找到元素“”

但是当我告诉Nightwatch点击链接时,它会没有问题。有什么想法吗?

网址如下所示:

https://test.website.com/Secure/RetrievePassword.aspx?code=123456789

1 个答案:

答案 0 :(得分:2)

我认为您的XPath选择器是错误的。如果您改用//*[contains(text(),'RetrievePassword')],它应该可以使用。这是一个基本的例子:

HTML index.html

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Nightwatch</title>
</head>
<body>
  <a href="https://test.website.com/Secure/RetrievePassword.aspx?code=123456789">https://test.website.com/Secure/RetrievePassword.aspx?code=123456789</a>
</body>
</html>

JavaScript gmail.js

module.exports = {
  'Gmail': function (browser) {
    browser
      .url('http://localhost:8000/index.html') // Change this if needed
      .waitForElementPresent('body', 1000)
      .useXpath()
      .getText("//*[contains(text(),'RetrievePassword')]", function (res) {
        console.log(res.value);
      })
      .end();
  }
};

<强>命令

nightwatch -t tests/gmail.js