当加载时间太长时,我尝试停止浏览器。为此,我通过硒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
这是预期的行为还是错误。我这边做得不好吗?
答案 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 和其他匹配的二进制文件。
John Chen(Chromedriver的所有者)最近宣布:
我们很高兴宣布ChromeDriver 75.0.3770.8版已经发布,并且可以在W3C standard上使用。此版本的ChromeDriver适用于即将推出的Chrome 75版Beta版的用户。
在此新版本中,最明显的变化是ChromeDriver现在默认情况下以ChromeDriver Downloads site兼容模式运行。旧版W3C standard仍受支持,但将来会被删除。
有关此版本中包含的其他更改,请参见JSON wire protocol。