代码语言c# Selenium Webdriver
我正在尝试使用以下代码在chrome中打开一个新标签:
Actions action = new Actions(BrowserFactory.Driver);
action.SendKeys(Keys.Control + "T").Build().Perform();
string secondTabHandle = BrowserFactory.Driver.CurrentWindowHandle;
我在stackoverflow上找到了这段代码。
我也尝试过:
IWebElement body =
BrowserFactory.Driver.FindElement(By.TagName("body"));
body.SendKeys(Keys.Control+'t');
body.SendKeys(Keys.Control+"t");
多数人也没有工作
使用此代码后没有任何反应。
有人可以帮我解决我的错误。
提前致谢。
答案 0 :(得分:0)
更好的解决方案不依赖于按CTRL + T等等,因为在同一浏览器上的不同浏览器或不同版本上,CTRL + T可能会导致不同的行为。
我更喜欢在浏览器上执行javascript以打开新标签的解决方案,因为在selenium本地支持的浏览器上注入和执行javascript。
我们应该让javascript在浏览器上执行以下操作:
创建链接节点,并设置链接href为'about:blank'或您要打开的网址,设置链接目标是'_blank'
将链接节点附加到当前首页的正文
点击该链接并从正文中删除链接
代码示例:
string newTabScript = "var d=document,a=d.createElement('a');"
+ "a.target='_blank';a.href='{0}';"
+ "a.innerHTML='new tab';"
+ "d.body.appendChild(a);"
+ "a.click();"
+ "a.parentNode.removeChild(a);"
public void newTab(string tabUrl)
{
if(String.IsNullOrEmpty(tabUrl) {
tabUrl = "about:blank";
}
IWebDriver driver; // assume assigned elsewhere
IJavaScriptExecutor js = (IJavaScriptExecutor)driver;
js.ExecuteScript(String.format(newTabScript, tabUrl));
}