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

时间:2015-12-07 16:49:08

标签: c# google-chrome selenium-webdriver

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

我在列表videoLinks = getVideoUrls();中有一百个视频网址 现在我需要的是一次执行这些视频。

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

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

我试过这个

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

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

2 个答案:

答案 0 :(得分:4)

试试这个:

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);
}

<强>更新

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

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

如果新窗口成功打开比allthng成功则可以。

您还可以使用特定设置创建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));

答案 1 :(得分:1)

以下是在seleneium c#中打开新标签的简单解决方案:

from()