在新标签页中打开链接selenium c#

我正在编写一个程序来运行我网站上列出的video用于测试目的,这里我需要的是在同一个浏览器窗口的不同选项卡中运行video。

我在List中有一百个videourlvideoLinks = getVideoUrls(); 现在我需要的是一次执行这些video5。

 ChromeDriver driver = new ChromeDriver(); driver.Navigate().GoToUrl("https://www.withoutabox.com" + videoLink); 

如果我采用上述方式,那么对于所有video,我将不得不创建一个新的ChromeDriver对象。 我想使用单个chrome浏览器对象。

我试过这个

 IWebElement body = driver.FindElement(By.TagName("body")); body.SendKeys(Keys.Control + "t"); 

它只会添加一个新标签,但不会在那里打开链接。 请让我知道如何解决它。 我用谷歌搜索但找不到我的解决方案,所以想要寻求帮助。

试试这个:

 public void SwitchToTab(object pageId) { webDriver.SwitchTo().Window(pageId.ToString()); } 

您可以使用CurrentWindowHandle查找当前选项卡。

 webDriver.CurrentWindowHandle; 

对于您的场景,我正在使用该代码:

 public IPageAdapter OpenNewTab(string url) { var windowHandles = webDriver.WindowHandles; scriptExecutor.ExecuteScript(string.Format("window.open('{0}', '_blank');", url)); var newWindowHandles = webDriver.WindowHandles; var openedWindowHandle = newWindowHandles.Except(windowHandles).Single(); webDriver.SwitchTo().Window(openedWindowHandle); return new SeleniumPage(webDriver); } 

更新

窗口打开创建新弹出窗口。 默认情况下,浏览器设置可以阻止此选项。 手动禁用浏览器中的弹出窗口阻止。

要检查这一点,请在浏览器中打开js控制台并尝试执行命令window.open(’ http ://facebook.com’,’_ blank’);

如果新窗口成功打开比everythng还可以。

您还可以使用特定设置创建Chrome驱动程序。 这是我的代码:

 var chromeDriverService = ChromeDriverService.CreateDefaultService(); var chromeOptions = new ChromeOptions(); chromeOptions.AddUserProfilePreference("profile.default_content_settings.popups", 0); return new ChromeDriver(chromeDriverService, chromeOptions, TimeSpan.FromSeconds(150)); 

这是一个在seleneium c#中打开新选项卡的简单解决方案:

 driver.Url = "http://www.gmail.net"; IJavaScriptExecutor js = (IJavaScriptExecutor)driver; js.ExecuteScript("window.open();");