【问题标题】:Non-deterministic behavior of ChromeDriver and Chrome with pageLoadStrategy noneChromeDriver 和带有 pageLoadStrategy 的 Chrome 的非确定性行为 none
【发布时间】:2019-03-08 21:23:12
【问题描述】:

我有一个使用 Selenium 和 Chromium 在 Ubuntu Linux 16.04 上运行的网络爬虫。所有新的爬虫请求都进入 Apache/WSGI,它为每个请求创建一个新的 python 线程,并使用 pyvirtualdisplay 和 Xvfb 生成 Chromium 进程来加载网站、登录、截屏等。

我将 Chromium 与以下标志一起使用: 禁用扩展、禁用 GPU、无头、无沙盒

caps = DesiredCapabilities().CHROME
caps["pageLoadStrategy"] = "none"

然后我有一个功能可以每秒检查一次页面是否已加载(因为某些页面在合理的时间内没有完全加载,所以我尝试等到它们至少可以交互后再继续):

driver.execute_script("var state = document.readyState; return state;")

奇怪的是,现在当我尝试加载页面时,它立即说它处于“完成”状态(并且在接下来的 15 秒内继续如此)。但是当我实际尝试查找一个元素时,却找不到它——所以我认为它实际上并没有被加载。通常它会说它是“加载”,然后是“交互”等。

我尝试重新启动 Apache,但似乎没有解决任何问题。有什么问题?

我可以在我的进程列表中看到当新请求进来时 Chromium 和 Xvfb 确实在运行:

7429 ?        S      0:00 Xvfb -br -nolisten tcp -screen 0 1024x768x24 :2165
7430 ?        Sl     0:00 /var/www/html/flaskapp/chromedriver --port=39146
7438 ?        Sl     0:00 /usr/lib/chromium-browser/chromium-browser --disable-background-networking --disable-client-side-phishing
7440 ?        S      0:00 /usr/lib/chromium-browser/chromium-browser --type=zygote --no-sandbox --enable-logging --headless --log-l
7457 ?        Sl     0:00 /usr/lib/chromium-browser/chromium-browser --type=gpu-process --no-sandbox --enable-logging --headless --
7468 ?        S      0:00 /usr/sbin/apache2 -k start
7469 ?        Sl     0:00 /usr/lib/chromium-browser/chromium-browser --type=renderer --no-sandbox --enable-automation --enable-logg

【问题讨论】:

    标签: selenium google-chrome webdriver selenium-chromedriver chromium


    【解决方案1】:

    您需要使用所需参数配置 ChromeDriver。几点:

    【讨论】:

      猜你喜欢
      • 2020-11-06
      • 2018-06-05
      • 1970-01-01
      • 1970-01-01
      • 2020-12-14
      • 2016-07-18
      • 2019-02-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多