问题描述
为了单击按钮,我必须等待元素滑入可见视口。这可靠地起作用:
await browser.sleep( 1200 );
await btnToggleDeactivateQuestionnaire.click();
但是,由于我已经知道使用“ browser.sleep()”被认为是不好的做法,所以我想使用量角器的 ExpectedConditions :
let isPresent = EC.presenceOf(btnToggleDeactivateQuestionnaire);
let isVisible = EC.visibilityOf(btnToggleDeactivateQuestionnaire);
let isClickable = EC.elementToBeClickable(btnToggleDeactivateQuestionnaire);
let isPresentAndVisibleAndClickable = EC.and(isPresent,isVisible,isClickable);
await browser.wait(isPresentAndVisibleAndClickable,4000);
await btnToggleDeactivateQuestionnaire.click();
等待4秒钟后,出现以下错误:
Failed: Wait timed out after 4019ms
TimeoutError: Wait timed out after 4019ms
at C:\xxx\lib\promise.js:2201:17
at runMicrotasks (<anonymous>)
at processTicksAndRejections (internal/process/task_queues.js:97:5)
经过反复试验,我发现仅使用 “ EC.presenceOf”可以解决问题。但是,一旦我将其与“ EC.visibilityOf”或“ EC.elementToBeClickable”链接在一起,或者单独使用它,测试就会停止4秒钟,并在此时失败。
在我看来,这种行为似乎毫无意义。尤其是由于该元素自页面加载以来就存在,因此它尚不可见并单击(因为它必须先滑入视图)。
我对ExpectedConditions或它们在非角度站点上的行为的一般理解是错误的吗?我在这里想念什么?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)