带有Firefox的硒用javascript关闭选项卡,但SetTimeout()没问题

问题描述 投票:0回答:1

我使用多线程方式打开选项卡,并在页面加载完成时关闭选项卡

这是我的打开标签代码

((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()时,它将关闭所有选项卡,但不满足需要

所以我认为也许setTimeoutsetInterval函数在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 +“')”);关闭选项卡时,迭代...

selenium selenium-firefoxdriver
1个回答
0
投票

我不确定我是否完全理解这个问题,但是似乎您正在尝试打开一个新标签页,运行一些代码,然后在打开后10秒钟关闭?

© www.soinside.com 2019 - 2024. All rights reserved.