Selenium WebDriver 等待按钮启用的最佳方法是什么?

Gel*_*lun 5 selenium-webdriver

我正在使用应用程序的 webdriverjs 创建一个自动化测试程序,其中“下一步”按钮经常被禁用一段时间,然后再启用。自动化等待按钮启用,然后单击按钮。

特别是按钮的类从“btn btn-next禁用”切换到“btn btn-next”

我想出了以下解决方案,但想知道是否有更好的方法?

browser.wait(until.elementLocated(By.css('nav a[class="btn btn-next"]')),
timeout, 'button still disabled after timeout').then(function() {
   browser.findElement(By.css('nav a[class="btn btn-next"]')).click();
});
Run Code Online (Sandbox Code Playgroud)

这似乎可以解决问题。

最初我的想法是运行如下函数:

tryToClick = function(element){
  var classValue = element.getAttribute("class");
  isDisabled = classValue.search('disabled') !== -1 ? true : false;
  if(isDisabled){
    setTimeout(function () {
      tryToClick(element);
    }, 500);
  } else {
  element.click();
  }
} 
Run Code Online (Sandbox Code Playgroud)

然而,搜索、拆分、包含等方法会导致错误。有谁知道为什么?

小智 0

Java我通常在和中工作C#,但在 中应该有一个等效的选项JS。您将需要使用以下命令进行显式等待:

Until.ElementIsEnabled(<locator>)
Run Code Online (Sandbox Code Playgroud)

如果没有与上面的等效项,您可以通过使用代替变量wait..until来解决问题。在你的代码中。element.isEnabled() == falseisDisabled