selenium - 单击元素一次会出错,单击两次会正常,为什么?(量角器)
问题描述
我正在使用 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
将代码更改为连续两次单击元素后,没有更改其他内容,代码运行成功。我还尝试删除多余的点击并在点击之前添加一个睡眠,但我仍然遇到同样的错误。为什么会这样?
解决方案
不确定您要单击哪个元素,但是这种单击方式在遇到类似问题时对我有所帮助:
browser.executeScript('arguments[0].click()', elementToClick);