簡體   English   中英

Selenium WebDriver ControlFlow執行

[英]Selenium WebDriver ControlFlow execution

對於使用Selenium編寫自定義的然后可用的函數(在JavaScript中)的最佳方法,我很難直截了當。 我讀到整個ControlFlow實施都是基於Promises的,所以我錯誤地認為僅在可使用的命令中包含一個Promise就可以了:

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,那么我應該使用什么來創建可以按順序正確執行的可用自定義函數?

解決方案最終是放棄controlFlow,而是使用新的async / await樣式,如https://github.com/airware/webdriver-mocha-async-await-example中的示例。

它仍然在后台使用Promises,但是以一種本機的方式,完全消除了我以前遇到的問題。 經過300項轉換后的測試,我運行時運行的順利,減少了許多代碼行,並大大提高了可讀性。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM