0

我使用的是Selenium 2.25.1 API,我試圖用RemoteWebDriver()找到元素。除了我嘗試時,它只是無法找到元素。我嘗試了幾種不同的組合,但都沒有運氣,現在已經看了幾天。Selenium C#RemoteWebDriver找不到XPath元素

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); 

時使用,它只是失敗每次。

任何想法?我完全困惑。任何事情都歡迎並提前致謝!

回答

0

我建議使用隱式等待而不是WebDriverWait語句。

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

並確保您從數據變量中獲取的xpath是有效的。如果可能的話,發佈一些你從數據庫獲得的xpath。

+0

我對隱含等待的內容進行了修改,而且超出了正常的時間。謝謝!爲那一點信息。 返回錯誤的XPath爲「// input [@ tabindex =」13「]」。然後繼續說沒有堆棧跟蹤信息。它只是用代碼塊來做到這一點。驅動程序=新的RemoteWebDriver(新的Uri(「http:// localhost:4444/wd/hub」),DesiredCapabilities.InternetExplorer()); 使用它與Firefox工作得很好,但。 – Twister1002 2012-07-24 17:25:47

+0

看起來像Selenium的jar文件(我在我的命令提示符下運行jar文件)將打開Internet Explorer,但它不會在InternetExplorerOptions()中使用任何其他條件。甚至更重要的是,它似乎並沒有因爲任何原因承認Internet Explorer。我只是嘗試在其中使用JQuery,並且拋出一個錯誤,基本上說驅動程序不存在。所以我就像完全被絆倒...... – Twister1002 2012-07-24 21:22:12

+0

使用'DesiredCapabilities.InternetExplorer'時它只是一個問題嗎?正如在,如果你使用'DesiredCapabilities.Firefox'這有什麼區別? – Arran 2012-07-24 22:01:38