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 回答