2017-04-05 4 views
0

私は実際にこの質問に対して明確な答えを見つけられませんでした。 Selenium WebDriverは、Thread.Sleepやその他のポーリング方法を使用するのではなく、約束やコールバックを使用できますか?C#のVSでのSelenium Webdriver - 約束の使用

現在、NuGet経由でWebDriverを追加したC#を使用したオートメーションソリューションで、ReactベースのJavascript Webページをテストしています。

すべてのヘルプは、私はあなたのJavaScriptベースのUIページをテストしていると仮定し

おかげ

+0

'WebDriverWait'と' ExpectedConditions'は、ポーリングが関係しているのに、あなたがしようとしていることを達成するでしょう。 – mrfreester

答えて

0

を高く評価しています。 API(サービス)をテストするために、WebDriverは使用できません。 Selenium WebDriverを使用すると、Webページのみをテストできます。

私がC#/ Javaのようなプログラミング言語を使用しているかどうかは、3 type of waits(暗黙的、明示的、流暢)のみをセレンで使用できることです。

私の現在のプロジェクトでは、JavaScriptを使用して開発されたWebページをテストしています。これらをテストするために、Protractor(WebDriverJSベース)とcucumberJSを使用しています。私たちがJavaScriptでテストオートメーションを書くとき、私たちはコールバックメソッドを持っています。 C#を使用してテストオートメーションのコールバックメソッドを使用できないと思われる場合

+0

申し訳ありませんが、JavaScriptベースのWebページをテストしています。私は前に分度器を見ていましたが、AngularJSではなく私の会社がReactに向いていました。彼らはいつも主にC#を使ってテストフレームワーク/ソリューションを開発してきましたが、私はJSアプローチがより良くなったと思い始めています – Grimzy

0

はい、WebDriver C#では、Sleepを使用しないようにいくつかの条件に基づいて待機することができます。典型的な例は、非同期操作が行われた後に表示するために、いくつかのDOM要素(複数可)を待つであろう:

var node = new WebDriverWait(driver, new TimeSpan(0, 0, 0, 3, 0)).Until(
       ExpectedConditions.PresenceOfAllElementsLocatedBy(
        By.XPath(".//*[contains(@ng-bind,'item.Value')]"))).First(); 
node.Click(); 

これは、少なくとも1つの要素の整合のための3秒の最大値は、XPathを表示するために設けられて待機します。

ExpectedConditionsクラスには、存在、可視性、クリック可能性などをテストするためのさまざまな静的メソッドがあります。

サイドノート:コメントに関連して - どのWebDriverフレーバが使用されるのかは味わいがありますが、非常に短い分析がthis articleで実行されています。

関連する問題