代码之家  ›  专栏  ›  技术社区  ›  Er g Ch

WebDriverException:消息:未知错误:DevToolsActivePort文件不存在

  •  0
  • Er g Ch  · 技术社区  · 4 年前

    这是一个老问题,但我找不到适合我情况的答案。

    我的代码是一个简单的测试代码

    from selenium import webdriver
    from selenium.webdriver.chrome.options import Options
     
    url="http://news.163.com/"
    chrome_options = Options()
    # specify headless mode
    chrome_options.add_argument('--no-sandbox')
    chrome_options.add_argument('–headless')
    chrome_options.add_argument("--disable-gpu")
    chrome_options.add_argument('--disable-dev-shm-usage')
    chrome_options.add_argument("start-maximized")
    chrome_options.add_argument("disable-infobars")
    browser = webdriver.Chrome(options=chrome_options)
    browser.set_page_load_timeout(300)
    browser.set_script_timeout(300)
    browser.get(url)
    title=browser.find_elements_by_xpath('//div[@id="js_top_news"]/h2/a')
    print(title[0].get_attribute('innerHTML'))
    browser.quit()
    driver.quit()

    我已经添加了选项中的所有论点。 和 ps -aux |grep google-chrome 并杀死我wsl中的所有进程。 谷歌Chrome 100.0.4896.88和Chrome驱动程序100.0.4896.60,它们在环境路径中添加的同一目录中。

    1 回复  |  直到 4 年前
        1
  •  0
  •   diana18    4 年前

    我会尝试使用更新版本的驱动程序。否则,请升级或降级您的版本,看看这些是否有效。此错误通常是由于不兼容造成的

        2
  •  0
  •   undetected Selenium    4 年前

    谷歌浏览器100.0.4896.88 和 镀铬驱动器100.0.4896.60 完全同步。

    但是,根据 documentation :

    Chrome在启动过程中崩溃的一个常见原因是将Chrome作为 Linux上的root用户(管理员)。虽然可以工作 绕过这个问题 --no-sandbox 创建时的标志 您的WebDriver会话,这样的配置是不受支持的,并且高度 气馁。请将您的环境配置为将Chrome作为 而是普通用户。


    解决方案

    删除以下参数:

    • --没有沙箱
    • --disable-gpu
    • --disable-dev-shm-usage
    • disable-infobars

    并执行您的测试 非根 用户( 非管理员 )用户。

        3
  •  0
  •   Er g Ch    4 年前

    在wsl1中,人们不能使用linux版本的chrome。所以只需使用windows版本chrome.exe和chromdriver.exe。 我的问题只需 mv chromdriver.exe chromdriver ,因为selenium只能在没有“.exe”的情况下识别chromdriver