2017-03-17 96 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個轉換後的測試,而且我的代碼行數更少,可讀性更好。