首页 > 解决方案 > 为什么我运行 Selenium 的代码可以在 repl.it 上正确运行,但不能在我的 Ubuntu VM 上运行?

问题描述

我有一个简单的代码,它使用 Selenium 下载动态呈现的网页。

from selenium import webdriver

Chrome_options = webdriver.ChromeOptions()
Chrome_options.add_argument('--no-sandbox')
Chrome_options.add_argument('--headless')
Chrome_options.add_argument('--disable-gpu')
Browser = webdriver.Chrome(options=Chrome_options)

Browser.get('https://example.com/hello')
Data = Browser.page_source
with open("webpage.html","w") as fout:
        fout.write(Data)

这可以在 repl.it 上正确运行,即它会下载动态呈现的内容,例如浏览器上的“另存为”。

但是,当我在我的 Ubuntu 20.04 VM 中运行相同的代码时,我只得到静态 HTML 页面,就好像我正在运行wget或“查看页面源代码”一样。

我在 repl.it 和 VM 上都使用 Python 3.8 和 Selenium 3.141.0,我的 VM 正在运行 Chrome 和 ChromeDriver 92.0.4515。

为什么相同的代码不能在我的 VM 上正确运行?

ETA:我注意到 repl.it 需要更长的时间才能完成Browser.get,而我的 VM 完成得非常快。可能是由于某种原因,我的虚拟机没有等待所有内容完成加载吗?

标签: pythonseleniumselenium-chromedriver

解决方案


刚刚意识到我需要给页面一些时间来加载。似乎 repl.it 等待页面完成加载,但我需要time.sleep(10)在 VM 上的脚本中包含一个,以便页面完成加载。


推荐阅读