如何让 Selenium 不等到整个页面加载(脚本很慢)?
- 2024-12-25 08:51:00
- admin 原创
- 140
问题描述:
Seleniumdriver.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()。因此,如果某种方法使用了浏览器设置的更改,那么它必须是通用的。
解决方案 1:
当 Selenium 默认加载页面/url 时,它会遵循pageLoadStrategy
设置为 的默认配置normal
。为了让 Selenium 不等待完整的页面加载,我们可以配置pageLoadStrategy
。pageLoadStrategy
支持以下 3 个不同的值:
normal
(完整页面加载)eager
(交互的)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 ogeckodriver.exe')
driver.get("http://google.com")
铬合金:
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 ochromedriver.exe')
driver.get("http://google.com")
注意:
pageLoadStrategy
值normal
和eager
是WebDriver W3C 编辑草案的none
要求,但值仍然是ChromeDriver实现中的WIP(正在进行的工作) 。您可以在 Python 中 Chromedriver Selenium 的“急切”页面加载策略解决方法中找到详细讨论pageLoadStrategy
eager
解决方案 2:
根据 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()
解决方案 3:
@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)
相关推荐
热门文章
项目管理软件有哪些?
热门标签
云禅道AD