селен с firefox закрыть вкладку на javascript, но SetTimeout () не в порядке - PullRequest
0 голосов
/ 05 марта 2020

Я использую многопоточный способ, чтобы открыть вкладку, и когда страница заканчивается sh загружать закрывающую вкладку

, это мой код открытой вкладки

((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 закрыты, а некоторые нет

Я не знаю, как я могу закрыть вкладку в firefox на javascript

Требование закрывать вкладку сразу через 10 секунд или закрывать вкладку после загрузки страницы

1 Ответ

0 голосов
/ 05 марта 2020

Я не уверен, что полностью понимаю вопрос, но, похоже, вы пытаетесь открыть новую вкладку, запустить какой-то код, а затем закрыть 10 секунд после его открытия?

Я проверял это в firefox и работает с несколькими вкладками, каждая закрывается самостоятельно.

((JavascriptExecutor) webDriver).executeScript(
    "function openAndClose(url, timeout){" +
    "    var tab = window.open(url);" +
    "    setTimeout(function(){tab.close()},timeout);" +
    "}" +
    "openAndClose('https://www.google.com', 3000);");

Если это не так, не могли бы вы объяснить свою проблему немного яснее.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...