2017-03-17 63 views
0

我很难得到一个直接的答案,以最好的方式来编写使用Selenium自定义然后功能(在JavaScript中)。我读了整个ControlFlow实现是基于承诺,所以我错误地假设,只是包括当时能够commmands建设中的承诺将是罚款:硒WebDriver ControlFlow执行

driver.findElement(By.css("")) 
functionThatReturnsPromise() 
driver.findOtherElement() 

到现在为止,我一直在做,这是什么:

function() { 
    return controlflow.execute(function() { 
     return new Promise(function(resolve, reject) { 
      // ...some logic here 
      resolve() 
     }); 
    }); 
} 

哪些工作过,但这里没有必要做两件事之一:(本地)Promise或ControlFlow。我知道这不是ControlFlow,因为只是承诺事情不按顺序执行。

看起来,任何正常的功能传递给ControlFlow允许这个按预期工作。那时,我发现一个问题出来说ControlFlow在将来的版本中被弃用:

https://github.com/SeleniumHQ/selenium/issues/2969

如果我不应该使用ControFlow,那我应该被用来创建当时能够自定义函数会顺序执行吗?

回答

0

解决方案最终放弃controlFlow,并采用新的异步/等待样式,如https://github.com/airware/webdriver-mocha-async-await-example中的示例。

它仍然在引擎盖下使用Promise,但以本机方式,完全消除了我之前遇到的问题。 300个转换后的测试,而且我的代码行数更少,可读性更好。