如何在VB.NET中使用Selenium打开Chrome新标签页?已尝试方法无效
解决Chrome新标签页无法打开的问题
以下是几种可靠的实现方式,替代你之前尝试的SendKeys和Actions方法:
方法1:执行JavaScript打开新标签页(最推荐)
通过JavaScript直接调用window.open,不受页面焦点限制,兼容性强:
((IJavaScriptExecutor)driver).ExecuteScript("window.open('about:blank','_blank');");
执行后会直接创建一个空白新标签页,你可以后续通过driver.SwitchTo().Window(driver.WindowHandles.Last())切换到新标签页进行操作。
方法2:修复Actions类的使用逻辑
之前的Actions方法失效,大概率是页面元素未获取焦点。先确保body元素被点击激活,再执行快捷键操作:
IWebElement body = driver.FindElement(By.TagName("body")); body.Click(); // 先点击body获取页面焦点 Actions act = new Actions(driver); act.KeyDown(Keys.Control).SendKeys("t").KeyUp(Keys.Control).Build().Perform();
如果是无头模式运行Chrome,需要额外添加启动参数确保快捷键生效:
ChromeOptions options = new ChromeOptions(); options.AddArgument("--headless=new"); options.AddArgument("--disable-gpu"); options.AddArgument("--start-maximized"); IWebDriver driver = new ChromeDriver(options);
方法3:使用Chrome DevTools协议创建新标签页
适合需要更精细控制标签页的场景,通过DevTools协议直接创建并激活新标签:
var devTools = driver as IDevTools; var session = devTools.CreateDevToolsSession(); // 创建新标签页 var newTabCommand = new Target.CreateTargetCommandSettings { Url = "about:blank", NewWindow = false, Background = false }; var targetResult = session.SendCommand(newTabCommand); // 激活新标签页 session.SendCommand(new Target.ActivateTargetCommandSettings { TargetId = targetResult.TargetId }); // 切换到新标签页的句柄 driver.SwitchTo().Window(driver.WindowHandles.Last());
内容的提问来源于stack exchange,提问作者Durga Kumawat
相关产品推荐
相关产品推荐

