Selenium webdriver element.click () не работает должным образом (chrome, mocha)

1

Я тестирую функцию входа в систему для веб-сайта, и хотя я могу правильно найти кнопку входа, .click(), похоже, не работает так, как я ожидаю.

Во-первых, соответствующий тестовый код js:

driver.sleep(1000)
driver.findElement(By.name('email')).sendKeys(fakeEmail);
driver.findElement(By.name('password')).sendKeys(fakePassword);
driver.sleep(5000);
driver.findElement(By.xpath("//button[@type='submit']")).isEnabled()
.then(function(isEnabled) {
    console.log(isEnabled) // prints true
    var el = driver.findElement(By.name('password'));
    el.sendKeys(webdriver.Key.ENTER); //method 1
})
//note: these xpaths are correct. I am able to get inner text, for example
driver.findElement(By.xpath("//button[@type='submit']")).sendKeys(webdriver.Key.ENTER); //method 2
driver.findElement(By.xpath("//button[@type='submit']")).click(); //method 3

Далее, вот код в кнопке входа html:

<button type="submit" ng-disabled="attempt_Error" ng-class="{'disabled': (!(usr.email &amp;&amp; usr.password) || attempt_Error)}" ng-if="!reset_Hash &amp;&amp; !forgotMode" class="btn btn-prim ng-scope" style=""> Log in</button>

Ожидаемое поведение (это работает вручную):

  1. При наведении курсора на кнопку изменяется цвет1.
  2. При нажатии кнопки изменяется цвет2.
  3. Предполагая правильную электронную почту и пароль, при выпуске перейдите на домашнюю страницу.

То, что я вижу при исполнении:

  1. Кнопка изменяет цвет2.
  2. Ничего не произошло.
  3. Окно остается открытым, но если я попытаюсь щелкнуть кнопку вручную, ничего не произойдет.

Я пометил Методы 1-3 в моем js-коде, и ни одно из них не дает ожидаемого поведения. Я пробовал их все отдельно и в совокупности. Я уже пробовал просто попытаться перейти на домашнюю страницу после этого, но я действительно не вошел в систему.

Мой вопрос: почему не element.click() действует так, как я хочу, чтобы он действовал?

Изменение: я знаю, что login (form) вызывается, потому что у меня есть консольный журнал. Вот что-то интересное: есть "Не удалось загрузить ресурс: сервер ответил статусом 403 (Forbidden)" в консоли! Если я продолжаю нажимать кнопку после этого, я получаю angular.js:8632 POST http://localhost:9000/api/session 403 (Forbidden). Эта ошибка не существует, если я делаю это вручную! Любая идея почему?

Версии:

"chai": "^4.1.0",
"chai-as-promised": "^7.1.1",
"chromedriver": "^2.31.0",
"mocha": "^3.4.2",
"selenium-webdriver": "^3.5.0",
  • 0
    Вы делаете оба sendKeys И нажимаете на один и тот же элемент? driver.findElement (By.xpath ( "// кнопка [@ тип = 'представить']")) SendKeys (webdriver.Key.ENTER). driver.findElement (By.xpath ( "// кнопка [@ тип = 'представить']")) нажмите ().
  • 0
    Я пробовал оба, и ни один не работал. Я прочитал, что sendKeys(ENTER) можно использовать для симуляции клика. Но да, ни один из этих методов не работает, и я попробовал их все по отдельности.
Показать ещё 5 комментариев
Теги:
unit-testing
selenium
selenium-webdriver
automated-tests

1 ответ

0

Вот очень уродливое решение... учитывая, что 403 ошибки были основной проблемой, я просто положил

driver.get('http://localhost:9000');
driver.navigate().refresh();

в начале теста. Поэтому он сначала переходит к localhost: 9000; затем он снова туда переезжает. Затем он освежает. И это решает проблему.

Я не знаю, почему, хотя, но это так.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню