0

我正在使用 Selenium 在 C# 中控制 Opera。我正在使用 selenium-server-standalone-2.33.0 。当我从命令行启动服务器时没有问题。我的代码运行良好。但是我需要从 C# 启动服务器,并且可以通过执行 bat 文件来启动它。我可以启动服务器并创建驱动程序。(在这两种情况下,我都使用"java -jar selenium-server-standalone-2.33.0.jar -trustAllSSLCertificates"命令来启动服务器。)

我的问题是:

如果服务器从 C# 代码启动,我的代码找不到元素并抛出异常:(驱动程序的页面源属性包含 xxx 元素。)

我的代码抛出异常: element = driver.FindElement(By.Id("xxx"));

元素的所有属性都会引发异常。

我认为这是因为我启动服务器时的 process.start 权限。我搜索了很多,但我找不到任何东西。

谢谢

4

1 回答 1

0

我可以从命令行和 C# 代码中使用此命令“java -jar selenium-server-standalone-2.33.0.jar -trustAllSSLCertificates”启动服务器。服务器启动良好,我可以创建驱动程序并可以看到页面源代码。

IWebDriver driver = new RemoteWebDriver(new System.Uri("http://localhost:4444/wd/hub"), DesiredCapabilities.Opera());
driver.Navigate().GoToUrl(url);
driver.Manage().Timeouts().SetPageLoadTimeout(TimeSpan.FromSeconds(100));

但是当我想通过这个代码元素到达 WebElement 时会抛出很多异常('element.Displayed' 抛出了类型为 'System.InvalidOperationException' 的异常)

IWebElement element; // FindElement(driver, "txtUserName", 100);
element = driver.FindElement(By.Id("txtUserName"));
string name = element.GetAttribute("Name"); 
于 2013-06-21T07:14:05.410 回答