2017-03-17 15 views
0

私はセレンを使用して(JavaScriptで)カスタムその後、可能な関数を作成するための最良の方法でストレートな答えを得ることに苦労しています。私は、全体ControlFlow実装は約束に基づいていることを読んで、私は間違ってちょうどいいと思い、その後可能なcommmandsでビルド内の約束を含むことを想定:私はこれで何をしてきたこれまではセレンwebdriverをControlFlow実行

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

(ネイティブ)の約束、またはControlFlow:。:働いたが、2つのうちの1つが、ここでは必要ありませんしてい

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

私はそれがControlFlowではないことを知っている。

予想通りControlFlowに任意の正常な機能を渡すと、これが機能することを可能にするようです。それから私はControlFlowは、将来のリリースで廃止されていると言って問題に出くわした:

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

私はControFlowを使用することになっておりません場合は、私がその当時のことカスタム関数を作成するために使用されることになっています順番に正しく実行されますか?

答えて

0

ソリューションはcontrolFlowを放棄し、新しい非同期を使用してに頼ることになった/ https://github.com/airware/webdriver-mocha-async-await-exampleの例のようにスタイルを待っています。

それはまだボンネットの下で約束を使用しますが、ネイティブのように、完全に私の前に持っていた問題を解消します。後で300のテストを変換しました。コードの行数を減らし、読みやすさを大幅に改善してスムーズに動作しています。

関連する問題