0

私は Selenium 2.25.1 API を使用しており、RemoteWebDriver() を使用して要素を見つけられるようにしようとしています。私が試した場合を除いて、要素が見つからないだけです。私はいくつかの異なる組み合わせを試してみましたが、運が悪く、数日間これを調べていました.

WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromSeconds(10));
IWebElement WaitForPage = wait.Until<IWebElement>((d) =>
{
    return driver.FindElement(By.XPath((String)data));
});

それが失敗した私のコードです。基本的に、データ変数はデータベースから取得したオブジェクトです。私はそれを変換し、コードを調べてみると、完全にうまくいきました。違いは、ブラウザー (つまり、firefox、IE) だけを使用した場合、エラーなしで正常に動作することです。しかし、RemoteWebDriver() で使用すると、InvalidOperationException がスローされ、要素が見つからないというポップアップがスローされます。(サーバーはスタックトレース情報を提供しませんでした)。

普段使っているのはこれ

IWebDriver driver = new RemoteWebDriver(new Uri("http://localhost:4444/wd/hub"), IEcapa);

それを使用すると、毎回失敗します。

何か案は?私は完全に困惑しています。どんなことでも大歓迎です。よろしくお願いします!

4

1 に答える 1

0

WebDriverWait ステートメントの代わりに暗黙の待機を使用することをお勧めします。

WebDriver driver = new FirefoxDriver();
driver.Manage().Timeouts().ImplicitlyWait(TimeSpan.FromSeconds(10));
IWebElement WaitForPage = driver.FindElement(By.XPath((String)data));

また、データ変数から取得する xpath が有効であることを確認してください。可能であれば、データベースから取得した xpath を投稿してください。

于 2012-07-24T17:15:27.213 に答える