如何在Selenium中打开新标签页

时间:2019-07-23 11:35:06

标签: c# asp.net selenium webforms remotewebdriver

我有一个与下面相同的驱动程序代码。 现在,我想打开一个新标签,然后将新标签导航到另一个URL。 但是我遇到一个错误

  

System.InvalidOperationException:第3行缺少字段handle   第1栏

DesiredCapabilities Capabilities = new DesiredCapabilities();
Capabilities.SetCapability(CapabilityType.BrowserName, "firefox");

string GridURL = "http://localhost:4545/wd/hub";
Driver = new RemoteWebDriver(new Uri(GridURL), Capabilities);
Driver.Navigate().GoToUrl("http://URL1.com");
IJavaScriptExecutor js = (IJavaScriptExecutor)Driver;
js.ExecuteScript("window.open('URL2.com', '_blank');");

// this line have error 
//System.InvalidOperationException: missing field `handle` at line 3 column 1
Driver.SwitchTo().Window(Driver.WindowHandles.First());

1 个答案:

答案 0 :(得分:1)

  1. 请确保使用WebDriverWait类,以确保第二个选项卡已打开并准备就绪,并且handle已添加到WindowHandles中。有关该概念的更多信息,请参见How to use Selenium to test web applications using AJAX technology文章。
  2. 我在ReadOnlyCollection中没有看到First()方法,因此尝试访问array-like manner中的句柄

示例代码:

WebDriverWait wait = new WebDriverWait(Driver, TimeSpan.FromSeconds(10));
wait.Until(d => d.WindowHandles.Count == 2);
Driver.SwitchTo().Window(Driver.WindowHandles[1]);
Console.WriteLine(Driver.Title);