Chrome 如何使Selenium不等到整个页面加载,这有一个缓慢的脚本?

u0njafvf  于 2023-09-28  发布在  Go
关注(0)|答案(3)|浏览(140)

Selenium driver.get (url)等待页面加载完成。但是一个抓取页面试图加载一些死的JS脚本。所以我的Python脚本等待它,几分钟都不工作。这个问题可能出现在网站的每个页面上。

from selenium import webdriver

driver = webdriver.Chrome()
driver.get('https://www.cortinadecor.com/productos/17/estores-enrollables-screen/estores-screen-corti-3000')
# It try load: https://www.cetelem.es/eCommerceCalculadora/resources/js/eCalculadoraCetelemCombo.js 
driver.find_element_by_name('ANCHO').send_keys("100")

如何限制等待的时间,阻止 AJAX 加载一个文件,或者是其他方式?
我还在webdriver.Chrome()中测试了我的脚本,但将使用PhantomJS(),或者可能是Firefox()。因此,如果某个方法使用了浏览器设置的更改,那么它必须是通用的。

roejwanj

roejwanj1#

当Selenium默认加载页面/url时,它遵循默认配置,将pageLoadStrategy设置为normal。要使Selenium不等待整个页面加载,我们可以配置pageLoadStrategypageLoadStrategy支持3个不同的值,如下所示:
1.normal(整页加载)
1.eager(互动)
1.none
下面是配置**pageLoadStrategy**的代码块:

    • 火狐 *:
from selenium import webdriver
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities

caps = DesiredCapabilities().FIREFOX
caps["pageLoadStrategy"] = "normal"  #  complete
#caps["pageLoadStrategy"] = "eager"  #  interactive
#caps["pageLoadStrategy"] = "none"
driver = webdriver.Firefox(desired_capabilities=caps, executable_path=r'C:\path\to\geckodriver.exe')
driver.get("http://google.com")
  • Chrome
from selenium import webdriver
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities

caps = DesiredCapabilities().CHROME
caps["pageLoadStrategy"] = "normal"  #  complete
#caps["pageLoadStrategy"] = "eager"  #  interactive
#caps["pageLoadStrategy"] = "none"
driver = webdriver.Chrome(desired_capabilities=caps, executable_path=r'C:\path\to\chromedriver.exe')
driver.get("http://google.com")

注意pageLoadStrategy值**normaleagernoneWebDriver W3C编辑草案的要求,但pageLoadStrategyeager仍是ChromeDriver**实现中的 WIP(Work In Progress)。您可以在“Eager” Page Load Strategy workaround for Chromedriver Selenium in Python中找到详细的讨论

whlutmcx

whlutmcx2#

@undetected Selenium的答案工作得很好,但对于Chrome,部分不工作,使用下面的chrome答案

from selenium.webdriver.common.desired_capabilities import DesiredCapabilities
capa = DesiredCapabilities.CHROME
capa["pageLoadStrategy"] = "none"
browser= webdriver.Chrome(desired_capabilities=capa,executable_path='PATH',options=options)
zed5wv10

zed5wv103#

基于selenium文档V4.0,现在看起来是这样的:

from selenium import webdriver
from selenium.webdriver.chrome.options import Options
options = Options()
options.page_load_strategy = 'none'
driver = webdriver.Chrome(options=options)
driver.get("http://www.google.com")
driver.quit()

相关问题