量角器的ExpectedConditions如何正常工作与非角度站点上的行为有关?

问题描述

为了单击按钮,我必须等待元素滑入可见视口。这可靠地起作用:

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 (将#修改为@)