(Java-SeleniumからC#-Seleniumへの移行)
SeleniumとC#でexplicit waitsを検索すると、Java-Counterpartに似たコードの投稿がいくつか見つかります。
例えば here :
WebDriverWait wait = new WebDriverWait(driver, new TimeSpan(0,0,5));
wait.Until(By.Id("login"));
または ここ :
WebDriverWait wait = new WebDriverWait(driver, 30);
wait.until(ExpectedConditions.visibilityOfElementLocated(By.id("locator")));
WebDriverWaitはOpenQA.Selenium.Support.UI名前空間からのもので、Selenium WebDriver Support Classesと呼ばれる別のパッケージに含まれています
しかし:
Visual Studioで自分でコーディングしようとすると(NuGetを介してSeleniumパッケージを取得)、コードでWebDriverWait
を使用すると、メッセージが表示されます。
型または名前空間名 'WebDriverWait'が見つかりませんでした(usingディレクティブまたはAssembly参照がありませんか?)
を介してセレンの参照を含めていますが
using OpenQA.Selenium;
WebDriverWaitのドキュメント を検索すると、名前空間が必要であることがわかります。
OpenQA.Selenium.Support.UI
しかし、コードで「使用」することでアクセスできません。
なぜこれが起こるのですか? WebDriverWaitクラスはどこにありますか?
幸いなことに、私は時々答えへのコメントも読んでいたので、最高ランクのコメント内でソリューションを見つけました here :
WebDriverWaitはOpenQA.Selenium.Support.UI名前空間からのもので、Selenium WebDriver Support Classesと呼ばれる別のパッケージで提供されます NuGetで
ありがとう@Ved!
Visual Studioでは、これは、2つのパッケージをインストールする必要があることを意味します。
Javaから来る)、これは些細なことではありません(少なくとも私にとっては;-)。これまでは、「すべての良いもの」を得るためにたった1つの依存関係を含める必要があったからです。このような:
<dependency>
<groupId>org.seleniumhq.Selenium</groupId>
<artifactId>Selenium-Java</artifactId>
<version>2.46.0</version>
</dependency>
*これを答えを含む質問として投稿しました。答えを見つけるのに時間と運がかかりすぎたからです。
追加しようとしましたか?
using OpenQA.Selenium.Support.UI;
必要なのはこれだけです。 IDEによっては、欠落している参照を見つけて追加するヘルパーが(?)にある可能性があります。 Visual Studioを使用しています。そこにあるべきだとわかっているものを入力するだけです。 IDEがWebDriverWaitに赤い波線を付けると、その上にマウスを移動すると、参照が欠落していることを示すツールチップが表示され、[潜在的な修正を表示]リンクをクリックします。いくつかのオプションが表示されますが、通常、最初のオプションはusing
ステートメントを追加することです。そのオプションをクリックすると、赤い波線が消えます。
私はVisual Studioが大好きですが、ここ9か月ほどEclipseを使用しており、Eclipseがこれを処理する方法を好みます。私はそれがより直感的だと思う...しかし、それは私だけです。
編集
将来の読者のために明確にしたかっただけです...私はNuGetを使用しません。 Selenium .Netパッケージをダウンロードし、4つのDLLをプロジェクト内またはプロジェクトの近くにドロップしてから、4つすべての参照をVisual Studioプロジェクトに追加します。それを行い、上記の手順を使用すると、うまくいきます。