1

私はセレンとWebドライバーが初めてです。私の質問はかなり簡単です。この質問が非常に基本的なレベルの場合は申し訳ありません。私はVisual Studio 2010 Ultimateをselenium 2で使用しており、言語C#をブラウザーIE 9で使用しています。以下の簡単なコードを実行しようとしました。

IWebDriver driver = new InternetExplorerDriver(@"D:\IEDriverServer\");
driver.Navigate().GoToUrl("http://www.google.com");


System.Console.WriteLine("Page title is: " + driver.Title);

Console.WriteLine(driver.Title);
Console.WriteLine("Waiting to find element");

IWebElement returnedValue = driver.FindElement(By.Name("q"));

Console.WriteLine("Element Found");

上記のコードはUnable to find the element with name==... 、ブラウザーの読み込みの問題である可能性があると思いました。ブラウザが完全にロードされないため、エラーが表示されます。次に、 driver.navigate 行の後に以下のコードを追加して、ブラウザが完全に読み込まれるまで待機させました。

WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromSeconds(20));
wait.Until(ExpectedConditions.TitleIs("Google"));

奇妙なことは、この webdriverwait 行を再び無視して " wait.until" 行に直接ジャンプし、要素が見つからないというエラーが表示されることです。私は何をすべきか。私はここに何かが欠けていますか??

4

3 に答える 3

2

待機の定義はほぼ正しいですが、C#では、ページがロードされるまで要素が表示されるまでWebdriverの待機を有効にする別の方法があります。

        WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromSeconds(20));
        IWebElement myDynamicElement = wait.Until<IWebElement>((d) =>
        {
            return d.FindElement(By.Name("q"));
        });

これが役に立てば幸いです...すべての最高の仲間:)

于 2012-11-23T11:56:23.297 に答える
1

で暗黙の待機を設定してみてくださいdriver.Manage().Timeouts().ImplicitlyWait(TimeSpan.FromSeconds(10));

Seleniumのドキュメントによると、これはデフォルトで0です。つまり、要素がすぐに見つからない場合、Seleniumは「Unableto find theelementwith...」エラーをスローします。

于 2012-11-23T11:26:43.927 に答える
0

変化するwait.Until(ExpectedConditions.TitleIs("Google"));

wait.Until(ExpectedConditions.visibilityOfElementLocated(By.name("q")))

ページのタイトルが google に変更されたが、完全なページが完全に読み込まれていない場合があります。

于 2012-11-23T11:34:26.980 に答える