我正在使用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);
当使用它时,它每次都失败。
有什么想法吗?我完全不解。欢迎任何事情,并提前感谢!
答案 0 :(得分:0)
我建议使用隐式等待而不是WebDriverWait语句。
WebDriver driver = new FirefoxDriver();
driver.Manage().Timeouts().ImplicitlyWait(TimeSpan.FromSeconds(10));
IWebElement WaitForPage = driver.FindElement(By.XPath((String)data));
确保从数据变量获取的xpath有效。如果可能的话,你可以从数据库发布一些xpath。