我正在编写一个程序来运行我网站上列出的视频用于测试目的,这里我需要的是在同一浏览器窗口的不同选项卡中运行视频。
我在列表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");
它只会添加一个新标签,但不会在那里打开链接。 请让我知道如何解决它。我用谷歌搜索但无法找到我的解决方案,所以想到寻求帮助。
答案 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()