如何让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()。因此,如果某些方法使用浏览器设置的更改,则它必须是通用的。

当Selenium默认加载页面/URL时,它遵循默认配置,pageLoadStrategy设置为normal。为了使Selenium不等待整页加载,我们可以配置pageLoadStrategypageLoadStrategy支持3个不同的值,如下所示:

  1. normal(整页加载)
  2. eager(交互式)
  3. 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:pathtogeckodriver.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:pathtochromedriver.exe')
    driver.get("http://google.com")
    

注意:根据WebDriver W3C编辑器草案pageLoadStrategynormaleagernone是必需的,但pageLoadStrategy值作为eager仍然是ChromeDriver实现中的WIP(正在进行中)。您可以在 Python 中 Chromedriver Selenium 的"渴望"页面加载策略解决方法中找到详细讨论

@undetected 硒答案效果很好,但对于铬,部分它不起作用 使用以下答案 铬

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)

基于 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()

相关内容

  • 没有找到相关文章

最新更新