首页 > 解决方案 > 单击元素一次会出错,单击两次会正常,为什么?(量角器)

问题描述

我正在使用 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

将代码更改为连续两次单击元素后,没有更改其他内容,代码运行成功。我还尝试删除多余的点击并在点击之前添加一个睡眠,但我仍然遇到同样的错误。为什么会这样?

标签: seleniumselenium-webdriverprotractor

解决方案


不确定您要单击哪个元素,但是这种单击方式在遇到类似问题时对我有所帮助:

browser.executeScript('arguments[0].click()', elementToClick);

推荐阅读