当前位置: 首页 > 知识库问答 >
问题:

硒ChromeWebDrive不工作在无头模式与配置文件

江鹏飞
2023-03-14

这就是我遇到麻烦的代码:

def scrap():
        options = webdriver.ChromeOptions();
        options.add_argument('headless');
        options.add_argument('--profile-directory=Profile 1')
        options.add_argument("--user-data-dir=C:/Users/omarl/AppData/Local/Google/Chrome/User Data/")
        options.add_argument("--remote-debugging-port=45447")
    
        options.add_argument("--disable-gpu") 
        browser = webdriver.Chrome(executable_path=r"C:\Users\omarl\OneDrive\Escritorio\chromedriver.exe", options=options)
        
        scrapURL = "https://es.wallapop.com/search?distance=30000&keywords=leggins&latitude=41.38804&longitude=2.17001&filters_source=quick_filters"
        browser.get(scrapURL)
        #...

错误是:

WebDriverException: unknown error: unable to discover open pages

当我执行脚本时,我没有任何chrome实例,当我使用它时没有headless选项,它工作正常。知道为什么会这样吗?请注意,我使用的是类似问题中提供的--远程调试端口

我用的是ChromeDriver 86.0.4240.22

共有2个答案

田阳泽
2023-03-14

你试过使用arg吗——没有沙盒?很多人在Chrome驱动程序上使用Selenium时出错:无法发现打开的页面,他们成功地解决了这个问题。

符俊材
2023-03-14

要在Headless模式下调用ChromeProfile,您可以仅使用--user-data-dir参数,并且可以安全地删除--profile-目录参数,如下所示:

>

from selenium import webdriver

options = webdriver.ChromeOptions() 
options.add_argument('--headless')
options.add_argument('--window-size=1920,1080')
# options.add_argument('--profile-directory=Profile 1')
options.add_argument(r"--user-data-dir=C:\Users\Soma Bhattacharjee\AppData\Local\Google\Chrome\User Data\Default")
options.add_argument("--remote-debugging-port=9222")
driver = webdriver.Chrome(options=options, executable_path=r'C:\WebDrivers\chromedriver.exe')
driver.get('https://www.google.com/')
print("Chrome Headless launched")

控制台输出:

DevTools listening on ws://127.0.0.1:9222/devtools/browser/93c67c41-e125-4d12-abc0-fcf0f07a62f4
Chrome Headless launched

你可以在以下网站上找到一些相关的详细讨论:

  • 如何通过Selenium的--user data dir参数打开Chrome配置文件
  • Selenium:指向默认的Chrome会话

确保:

  • Selenium已升级至当前发布的版本3.141.0
  • ChromeDriver更新为当前ChromeDriver v86。0级
  • Chrome更新至当前的Chrome 86.0版本。(根据ChromeDriver v86.0发行说明)
  • 以非root用户身份执行@Test
  • 始终调用驱动程序。quit()tearDown(){}方法中关闭

ChromeDriver远程调试端口预留竞争条件

 类似资料:
  • 我在为Spring Cloud Config服务器定义多个基于svn的配置存储库时遇到了问题。我已经建立了三个配置库。一个用于开发,单位和生产。我已经将默认值设置为development(通过设置spring.cloud.config.server.svn.uri=development repo uri)。但是,每当我向配置服务器的RESTendpoint发出GET请求时,无论我请求哪个概要文件

  • 如果我们有一个运行sikuli的无头测试服务器(需要ubuntu和Windows配置),如何在没有物理显示器的情况下使其工作,并且最好是尽可能多的屏幕分辨率。

  • 我使用Selenium和PhantomJS开发了几个Python脚本。当我转向自动下载时,我切换到了(headed)Firefox(有效),然后是Chrome,有了headless选项,这样浏览器就不会在我面前打开了。 我的第一个脚本访问一个页面和几个HTML元素,与无头Chrome完美地工作。 第二个,然而,工作与头铬。如果我加上“无头”选项,它就不再起作用了。当我试图以headless模式打印

  • 我正在创建一个配置文件页面和一个登录页面,在其中存储会话id,然后在配置文件文件中检查是否设置了isset,但我遇到的问题是,系统总是显示一条错误消息,并且我使用了print\r($\u session);浏览器显示: 重要数据丢失阵列([名字]= 如何修复此错误?????

  • 我们正在使用confluent platform 5.3.1社区版。 最近,作为安全扫描的一部分,我们发现Kafka rest代理和架构注册表服务缺少http头(X-XSS-Protection,X-Content-Type-Options)安全漏洞。 根据汇合留档,我们可以在配置中添加response.http.headers.config属性来添加/设置所需的标头。 https://docs.

  • 我的log4j2中有此配置。xml文件: 我将此文件放在src/resources中,并遵循以下指南:guide,但当我运行项目时,出现以下错误: