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