web-dev-qa-db-ja.com

OpenQA.Selenium(C#)でWebDriverWaitクラスが見つかりません

(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クラスはどこにありますか?

28
drkthng

幸いなことに、私は時々答えへのコメントも読んでいたので、最高ランクのコメント内でソリューションを見つけました here

WebDriverWaitはOpenQA.Selenium.Support.UI名前空間からのもので、Selenium WebDriver Support Classesと呼ばれる別のパッケージで提供されます NuGetで

ありがとう@Ved!

Visual Studioでは、これは、2つのパッケージをインストールする必要があることを意味します。

  • NuGetパッケージ「Selenium.WebDriver」およびまた
  • NuGetパッケージ "Selenium.Support"

Javaから来る)、これは些細なことではありません(少なくとも私にとっては;-)。これまでは、「すべての良いもの」を得るためにたった1つの依存関係を含める必要があったからです。このような:

<dependency>
    <groupId>org.seleniumhq.Selenium</groupId>
    <artifactId>Selenium-Java</artifactId>
    <version>2.46.0</version>
</dependency>

*これを答えを含む質問として投稿しました。答えを見つけるのに時間と運がかかりすぎたからです。

57
drkthng

追加しようとしましたか?

using OpenQA.Selenium.Support.UI;

必要なのはこれだけです。 IDEによっては、欠落している参照を見つけて追加するヘル​​パーが(?)にある可能性があります。 Visual Studioを使用しています。そこにあるべきだとわかっているものを入力するだけです。 IDEがWebDriverWaitに赤い波線を付けると、その上にマウスを移動すると、参照が欠落していることを示すツールチップが表示され、[潜在的な修正を表示]リンクをクリックします。いくつかのオプションが表示されますが、通常、最初のオプションはusingステートメントを追加することです。そのオプションをクリックすると、赤い波線が消えます。

私はVisual Studioが大好きですが、ここ9か月ほどEclipseを使用しており、Eclipseがこれを処理する方法を好みます。私はそれがより直感的だと思う...しかし、それは私だけです。


編集

将来の読者のために明確にしたかっただけです...私はNuGetを使用しません。 Selenium .Netパッケージをダウンロードし、4つのDLLをプロジェクト内またはプロジェクトの近くにドロップしてから、4つすべての参照をVisual Studioプロジェクトに追加します。それを行い、上記の手順を使用すると、うまくいきます。

3
JeffC