Если щелкнуть элемент один раз, появится ошибка, дважды щелкнуть по нему, и это нормально. Почему?(Транспортир) - PullRequest
0 голосов
/ 14 февраля 2019

Я провожу сквозные тесты на веб-сайте с Protractor, и один из элементов ведет себя странно.Когда я впервые попытался указать код, чтобы щелкнуть элемент один раз, я получил следующую ошибку:

Проблемная функция:

  fooField = element(by.css('#inputFoo'));
  foosList = $$('[type=radio]');

  async chooseFoo(id: number) {
    const foo = this.foosList.get(id - 1);
    // await browser.sleep(2000);
    // await this.fooField.click();
    await this.fooField.click();
    await browser.sleep(this.sleepTime);
    await foo.click();
    await this.selectFooButton.click();
  }

Ошибка:

**************************************************
*                    Failures                    *
**************************************************

1) reimbursement request page should allow a user to register a request
  - Failed: element not interactable
    (Session info: chrome=72.0.3626.81)
    (Driver info: chromedriver=2.46.628388 (4a34a70827ac54148e092aafb70504c4ea7ae926),platform=Linux 4.15.0-45-generic x86_64)

Executed 2 of 2 specs (1 FAILED) in 28 secs.
[16:50:44] I/launcher - 0 instance(s) of WebDriver still running
[16:50:44] I/launcher - chrome #01 failed 1 test(s)
[16:50:44] I/launcher - overall: 1 failed spec(s)
[16:50:44] E/launcher - Process exited with error code 1
An unexpected error occurred: undefined

После изменениякод, чтобы дважды щелкнуть по элементу подряд и ничего не менять, код запустился успешно.Я также попытался удалить лишний щелчок и добавить спящий режим непосредственно перед щелчком, но я все еще получил ту же ошибку.Почему это происходит?

Ответы [ 2 ]

0 голосов
/ 15 февраля 2019
let fooField = element(by.css('#inputFoo'));
await browser.wait(ExpectedConditions.elementToBeClickable(fooField), 5000, 'Element is not clickable.');
await fooField.click();

Если элемент не реагирует на нажатия после того, как определенное время выдаст ошибку, возникла проблема с кнопкой.Что-то блокирует его, чтобы его щелкнули.

Другой способ обойти это (не самый лучший способ) - использовать javascript click.

let fooField = element(by.css('#inputFoo'));
browser.executeScript('arguments[0].scrollIntoView(true); arguments[0].click();', fooField);
0 голосов
/ 15 февраля 2019

Не уверен, какой элемент вы пытаетесь щелкнуть, но этот способ нажатия помог мне при возникновении подобных проблем:

browser.executeScript('arguments[0].click()', elementToClick);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...