我正在使用量角器在chrome,firefox和IE中运行我的E2E案例。
以下代码在Chrome中运行良好 - 打开新标签并点击google.com
let url = "https://google.com";
return browser.executeScript("return window.open(arguments[0], '_blank')", url);
对于firefox,新标签已打开,但google.com未被点击,标签立即关闭并显示错误 - “AssertionError:WebDriverError:InternalError:tooly recursion”
我也试过下面的代码。在chrome中工作正常,但在firefox中没有。
function openNewTab(linkname) {
return browser.driver.executeScript(function (arguments) {
var linkname = arguments;
(function (link) {
document.body.appendChild(link);
link.setAttribute('href', linkname);
link.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')));
}, linkname);
}
还有其他alt用于在firefox中使用量角器打开新标签吗?
我尝试了下面的回答,但是它会抛出。未定义错误。
function openNewTab(linkname) {
browser.driver.executeScript(function(arguments) {
var linkname = arguments;
var d = document,
a = d.createElement('a');
a.target = '_blank';
a.href = linkname;
a.innerHTML = '.';
d.body.appendChild(a);
a.click();
}, linkname)
};
对于你的第二种方式,我认为firefox上的原因失败是firefox不支持dispatchEvent()或initMouseEvent()或createEvent()。
你可以尝试下面的代码:
browser.driver.executeScript(function (url) {
var d = document,
a = d.createElement('a');
a.target = '_blank';
a.href = url;
a.innerHTML = '.';
d.body.appendChild(a);
a.click();
}, "https://google.com");