如何使用protractor和Chrome浏览器打开一个新标签页

6 浏览
0 Comments

如何使用protractor和Chrome浏览器打开一个新标签页

这里有一段代码(不会打开新标签):\n

\n//在Chrome中打开新标签\n

\n

browser.actions().sendKeys(protractor.Key.CONTROL +'t').perform();

\n如果我们使用\'a\'的代码 - 一切正常:\n

\n//在页面上选择全部\n

\n

browser.actions().sendKeys(protractor.Key.CONTROL +'a').perform();

\nprotractor版本1.3.1\nChrome版本37\nChromeDriver版本2.10\nWebDriver版本2.43

0
0 Comments

原因:在使用Protractor和Chrome浏览器时,需要打开一个新的标签页。这个代码片段提供了一种方法来实现这一目标。

解决方法:创建一个Browser类,其中包含了打开新标签页的方法。首先,使用browser.executeScript('window.open()')来创建一个新的浏览器标签页。然后,使用browser.getAllWindowHandles()获取所有的窗口句柄,并选择需要切换的标签页的句柄,使用browser.switchTo().window(newWindowHandle)来切换到该标签页。最后,使用browser.get(url)来打开指定的URL。

这段代码使用了TypeScript和Protractor,可以直接在Protractor项目中使用。使用时,可以实例化Browser类,并调用openPageInNewTab方法,传入需要打开的URL。这样就可以在Chrome浏览器中打开一个新的标签页了。

0
0 Comments

问题的出现的原因是Selenium没有提供直接打开新标签页的方法,因此需要使用一种变通的方法来实现。其中尝试使用CTRL+T组合键打开新标签页的方式失败了,尝试在元素上执行该操作也没有成功。

解决方法是使用以下的hack方法,可以成功打开新标签页。可以将location.href替换为所需打开的URL:

browser.driver.executeScript(function() {
  (function(a){
  document.body.appendChild(a);
  a.setAttribute('href', location.href);
  a.dispatchEvent((function(e){
    e.initMouseEvent("click", true, true, window, 0, 0, 0, 0, 0, true, false, false, false, 0, null);
    return e;
  }(document.createEvent('MouseEvents'))))}(document.createElement('a')));
});

其中,还可以通过添加a.setAttribute('target', 'blank')来设置新标签页的打开方式为在新窗口中打开。

0
0 Comments

问题的出现原因可能是需要在使用Protractor和Chrome浏览器时打开一个新的选项卡。解决方法是使用browser.executeScript()方法来执行JavaScript代码,在新的选项卡中打开指定的URL。同时,需要使用browser.getAllWindowHandles()方法获取所有的窗口句柄,并使用browser.switchTo().window()方法切换到新打开的选项卡,以便访问其中的元素。

代码示例:

let url = "https://google.com";
return browser.executeScript("return window.open(arguments[0], '_blank')", url);
browser.getAllWindowHandles().then((handles) => {
    browser.switchTo().window(handles[1]);
})

更多关于window.open()的信息,可以参考这里

0