window.stop()至execute_script()在chromedriver中不起作用,但在geckodriver中起作用

时间:2019-05-03 11:27:40

标签: python selenium google-chrome selenium-chromedriver geckodriver

当加载时间太长时,我尝试停止浏览器。为此,我通过硒window.stop();使用execute_script()方法

Chrome 失败

from selenium import webdriver
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities


capa = DesiredCapabilities.CHROME
capa["pageLoadStrategy"] = "none"
driver = webdriver.Chrome(desired_capabilities=capa)

driver.get('http://deelay.me/15000/http://httpbin.org/ip') #loads a page after 15 seconds

driver.execute_script("window.stop();")

尽管由于driver-> None,我们可以快速控制浏览器对象,即pageLoadStrategy->无;我们不能充分利用它。 即脚本仅在页面完全加载15秒后才执行。

没有错误或异常,它只是挂起而没有返回控件。

  

Chromium 73.0.3683.75建立在Ubuntu上,在Ubuntu 18.04上运行

     

ChromeDriver 2.43.600233(523efee95e3d68b8719b3a1c83051aa63aa6b10d)

     

Python硒3.14.1

与此相比, Firefox 浏览器会立即执行脚本并停止加载页面。

Firefox 通过

from selenium import webdriver
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities


capa = DesiredCapabilities.FIREFOX
capa["pageLoadStrategy"] = "none"
driver = webdriver.Firefox(desired_capabilities=capa)

driver.get('http://deelay.me/15000/http://httpbin.org/ip') #loads a page after 15 seconds

driver.execute_script("window.stop();")

我们不仅可以停止执行,还可以调用新的URL,而这在chrome中是不可能的。

  

Firefox 66.0.1

     

Geckodriver 0.23.0(2018-10-04)

     

Python硒3.14.1

这是预期的行为还是错误。我这边做得不好吗?

1 个答案:

答案 0 :(得分:0)

您的主要问题似乎与使用window.stop();实现 execute_script() 命令有关。

直到 ChromeDriver 74.0.3729.6 ChromeDriver Chrome 符合 OSS 并实施了{{3} }。但是,随着 ChromeDriver v75.0.3770.8 的可用性,现在 ChromeDriver Chrome JSON wire protocol兼容模式运行默认


解决方案

如果您期望 ChromeDriver Chrome 的行为与 GeckoDriver Firefox 一样,则必须开始使用 ChromeDriver 75.0.3770.8 和其他匹配的二进制文件。


ChromeDriver 75.0.3770.8的到来

John Chen(Chromedriver的所有者)最近宣布:

  

我们很高兴宣布ChromeDriver 75.0.3770.8版已经发布,并且可以在W3C standard上使用。此版本的ChromeDriver适用于即将推出的Chrome 75版Beta版的用户。

     

在此新版本中,最明显的变化是ChromeDriver现在默认情况下以ChromeDriver Downloads site兼容模式运行。旧版W3C standard仍受支持,但将来会被删除。

     

有关此版本中包含的其他更改,请参见JSON wire protocol


John Chen的电子邮件快照

release notes