在新标签页中打开链接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();");