我使用多线程方式打开选项卡,并在页面加载完成时关闭选项卡
这是我的打开标签代码
((JavascriptExecutor)webDriver).executeScript("window.open('"+url+"')");
关闭标签时,我迭代webDriver.getWindowHandles()
并使用功能executeScript
,但发现一些错误,这是我的代码
此代码在chrome中可以正常工作,它关闭了所有标签页,但是在Firefox中,某些windowHandler已关闭,而有些则没有
((JavascriptExecutor) webDriver).executeScript("setTimeout(function(){window.close()},10000)");
或
((JavascriptExecutor) webDriver).executeScript("setInterval(function(){window.close()},10000)");
我尝试使用此代码,但也类似于上面的代码
((JavascriptExecutor) webDriver).executeScript("var script = document.createElement('script');\n" +
"script.type = 'text/javascript';\n" +
"script.innerHTML = 'setTimeout(function(){window.close()},10000);';\n" +
"script.innerHTML = 'window.close()';\n" +
"document.body.appendChild(script);");
但是当我删除"script.innerHTML = 'setTimeout(function(){window.close()},10000);';\n" +
仅使用window.close()
时,它将关闭所有选项卡,但不满足需要
所以我认为也许setTimeout
和setInterval
函数在Firefox中导致了此问题
然后我将代码更改为此
((JavascriptExecutor) webDriver).executeScript("var start = null;\n" +
"\n" +
"function step(timestamp) {\n" +
" if (!start) start = timestamp;\n" +
" var progress = timestamp - start;\n" +
" if (progress < 2000) {\n" +
" window.requestAnimationFrame(step);\n" +
" } else {\n" +
" window.close();\n" +
" }\n" +
"}\n" +
"\n" +
"window.requestAnimationFrame(step);");
还有一些windowHandler已关闭,而另一些则没有
我不知道如何通过javascript关闭Firefox中的标签页>
要求是在10秒后直接关闭标签页,或在页面加载后关闭标签页
我使用多线程方式打开标签页,当页面加载完成时关闭标签页,这是我的打开标签页代码((JavascriptExecutor)webDriver).executeScript(“ window.open('” + url +“')”);关闭选项卡时,迭代...
我不确定我是否完全理解这个问题,但是似乎您正在尝试打开一个新标签页,运行一些代码,然后在打开后10秒钟关闭?