2017-03-18 10 views
0

SeleniumとC#の新機能です。C#を使用しているセレンアプリケーション開発中です。ウェブページにドロップダウンメニューがあります。私はドロップダウンメニューをクリックした後、セレンが正確な名前をクリックしたいと思う。Selenium C#Webdriver: 'iWebDriver'に 'WaitforElement'の定義が含まれていません。

のC#/ NUnitのコード:だから私はこのようなものでした

driver.FindElement(By.LinkText("z")).Click; driver.WaitForElement(By.LinkText("xxxxx")); driver.FindElement(By.LinkText("xxxxx")).Click();

をしかし、私は自分のコードをビルドするとき、私は次のエラーを取得する:

'iWebDriver' does not contain definition for 'WaitforElement'

+0

こんにちは、明示的に要素を待つ必要はなく、暗黙の待機を使用するだけです要素が表示されるまで待つので、2行目は必要ありません。 – RAJ

+0

例を挙げていただけますか? – Geezus

+0

以下の回答を作成しました。確認してください。 – RAJ

答えて

0

さて、私ができますあなたに例を挙げますが、私はC#を知らないのですが、私はRuby Selenium Bindingの例を挙げることができます。それはfind_element機能を経由して要素を見つけた時はいつでも、私は暗黙の待ち時間20を与えているので

driver.manage.timeouts.implicit_wait=20 
driver.find_element(:link_text,"z").click; 
driver.find_element(:link_text,"xxxxx").click 

は、それが20分を待って、だからあなたの外部wait文は必要ありません。

C#のコードがされる可能性があります(私はC#のを知らない、私はネットからそれを取り、それをここに置く)

driver.Manage().Timeouts().ImplicitlyWait(TimeSpan.FromSeconds(10)); 
driver.FindElement(By.LinkText("z")).Click; 
driver.FindElement(By.LinkText("xxxxx")).Click(); 
0

それはあなたが示すように動作しません。

次のコードは、あなたがそれを書くべきかの例です:Driverはwebdriverをあなたのインスタンスである

WebDriverWait watiDriver = new WebDriverWait(Driver, TimeSpan.FromSeconds(10)); 
IWebElement element = watiDriver.Until(x => Driver.FindElement(By.CssSelector(""))); 

このように使用したい場合は、webdriverクラスに拡張メソッドを追加する必要があります。これを行うには、名前を付けて新しい静的クラスを作成し、次のコードを挿入します。

public static IWebElement WaitForElement(this IWebDriver driver, By how) 
{ 
    webDriverWait watiDriver = new WebDriverWait(Driver, TimeSpan.FromSeconds(10)); 
    return watiDriver.Until(x => Driver.FindElement(FindElement(how)); 
} 
+0

ありがとう..私は働いた! – Geezus

+0

@Geezusが答えが最高だと思うなら、それを記入してください。) –

関連する問題