如何检查元素是否在量角器的循环中可点击?

How to check if element is clickable in a loop in protractor?

我想检查 new_button 在循环中是否可点击,如果该元素可点击,我想停止循环。这是我的循环:

  for(var i=0; i<items.length; i++) {
        await items[i].click()
    
        await browser.wait(EC.elementToBeClickable(datepicker), waitLongTime);
        await browser.wait(EC.elementToBeClickable(provider_filter_button), waitLongTime);
    
        if(await (new_button.isClickable())) {
           break;
        }
  }

在这种情况下,您可以使用一个技巧。

ExpectedConditions.elementToBeClickable() returns 函数 returns 解析为布尔值的承诺 - true 如果传递的元素是可点击的,false 如果不是。

因此,请记住两点:

  1. 因为它 returns 一个你需要调用它的函数。注意最后的括号:
ExpectedConditions.elementToBeClickable(new_button)() // <---
  1. 函数 returns 需要用 await 解决的 Promise:
await ExpectedConditions.elementToBeClickable(new_button)() // <---

所以你最终会得到

if(await ExpectedConditions.elementToBeClickable(new_button)()) {
    break;
}

可能有更好、更简洁的方法来执行此操作,但此方法 100% 有效