Не удается найти элемент внутри Gmail


Я создал проект, используя Nightwatch.JS. Процесс выполняет проверки в нашей среде разработки (которая работает просто отлично) и в конечном итоге отправляет тестовое электронное письмо в учетную запись Gmail. Затем процесс перейдет в Gmail, войдите в систему и нажмите на правильный адрес электронной почты.

Я пытаюсь получить URL, который был отправлен приложению (ссылка на забытый пароль), и отправляю браузер на правильный URL.

Проблема возникает, когда я использую следующий код:

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

Я понимаю это. Ошибка:

Ошибка: не удалось найти элемент "" с помощью: xpath

Но когда я скажу Nightwatch нажать на ссылку, он сделает это без проблем. Есть идеи?

URL выглядит следующим образом:

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

1 2

1 ответ:

Я думаю, что ваш выбор XPath неверен. Если вы используете //*[contains(text(),'RetrievePassword')] вместо этого, он должен работать. Вот основной пример:

HTML (индекс.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