gpt4 book ai didi

selenium - WebDriverError : no such session error using ChromeDriver Chrome through Jenkins and Selenium

转载 作者:行者123 更新时间:2023-12-03 14:16:30 26 4
gpt4 key购买 nike

当我从 Jenkins 运行脚本时,通常不会出现此类 session 错误。它的原因是什么?是否有任何连接失败或者是由于其他原因(我正在运行大约 26 个脚本并且其中至少一个脚本没有此类 session 错误)

这些脚本是不同的脚本,并且不会再为相同的脚本重复此类 session 错误

最佳答案

使用 上的此错误消息平台...

WebDriverError: no such session
(Driver info: chromedriver=a.b.c (36d3d07f660ff2bc1bf28a75d1cdabed0983e7c4),platform=Mac OS X 10.11.5 x86_64)

或者

上的此错误消息平台...
WebDriverError: no such session
(Driver info: chromedriver=p.q.r,platform=Linux 3.2.0-4-amd64 x86_64) (Selenium::WebDriver::Error::NoSuchDriverError)

或者

上的此错误消息平台...
WebDriverError: no such session 
(Driver info: chromedriver=x.y.z (52179c1b310fec1797c81ea9a20326839860b7d3),platform=Windows NT 6.1 SP1 x86_64) (NoSuchDriver)

...意味着 ChromeDriver 无法与现有的浏览上下文(即 Chrome 浏览器 session )进行通信。

我们已经在讨论 Issue 732: No such session error - inconsistent problem which appears when running tests for a prolonged period 中详细讨论了这个问题。 .通常在长时间执行测试套件后会观察到此错误,如下所示:
[489.798][DEBUG]: DEVTOOLS EVENT Inspector.targetCrashed {

}
[489.798][INFO]: Waiting for pending navigations...
[489.798][INFO]: Done waiting for pending navigations
[0127/105308:ERROR:nacl_helper_linux.cc(289)] NaCl helper process running without a sandbox!
Most likely you need to configure your SUID sandbox correctly
[489.849][INFO]: RESPONSE FindElements unknown error: session deleted because of page crash
from tab crashed
(Session info: chrome=p.q.r.s)
[489.849][DEBUG]: Log type 'driver' lost 0 entries on destruction
[489.849][DEBUG]: Log type 'browser' lost 9 entries on destruction

此错误在 nacl_helper_linux.cc 中定义如下:
// If the Zygote has started handling requests, we should be sandboxed via
// the setuid sandbox.
if (!IsSandboxed()) {
LOG(ERROR) << "NaCl helper process running without a sandbox!\n"
<< "Most likely you need to configure your SUID sandbox "
<< "correctly";

正是 FindElement(s)方法有 失败由于沙盒问题和 Page Crash由于 session deletion 而发生

解决方案

由于多种原因,可能会发生此错误,解决此错误的解决方案如下:
  • 使用参数 --disable-impl-side-painting 启动配置 ChromeDriver 的 Chrome session
  • 此外,您还可以添加参数 --enable-gpu-rasterization 它允许启发式方法确定何时应使用 Skia GPU 后端绘制图层图 block 。仅对 GPU 加速合成 + impl-side 绘画有效。
  • 作为一个选项,您还可以添加参数 --force-gpu-rasterization 它总是使用 Skia GPU 后端来绘制图层图 block 。仅对 GPU 加速合成 + impl-side 绘画有效。覆盖 kEnableGpuRasterization旗帜。
  • 当服务器无法识别唯一 session 标识符时,也会出现此错误。如果 session 已被删除或 session ID 在以下任一情况下无效,则会发生这种情况:
  • Explicit session deletion : 当显式调用 quit() 时,WebDriver session 被显式删除。方法如下:
    from selenium import webdriver
    from selenium.common.exceptions import InvalidSessionIdException

    driver = webdriver.Chrome(executable_path=r'C:\Utility\BrowserDrivers\chromedriver.exe')
    print("Current session is {}".format(driver.session_id))
    driver.quit()
    try:
    driver.get("https://www.google.com/")
    except Exception as e:
    print(e.message)

    #Console Output:
    Current session is a9272550-c4e5-450f-883d-553d337eed48
    No active session with ID a9272550-c4e5-450f-883d-553d337eed48
  • Implicit session deletion :当您关闭最后一个调用 close() 的窗口或选项卡时,会隐式删除 WebDriver session 方法如下:
    driver = webdriver.Chrome(executable_path=r'C:\Utility\BrowserDrivers\chromedriver.exe')
    print("Current session is {}".format(driver.session_id))
    # closes current window/tab
    driver.close()
    try:
    driver.get("https://www.google.com/")
    except Exception as e:
    print(e.message)

    #Console Output:
    Current session is a9272550-c4e5-450f-883d-553d337eed48
    No active session with ID a9272550-c4e5-450f-883d-553d337eed48
  • 您可能还需要添加参数 --no-sandbox
  • 由于太小,Chrome 似乎在某些页面上的 Docker 容器中经常崩溃 /dev/shm .同样,您可能需要修复小的 /dev/shm尺寸。
  • 一个例子:
    sudo mount -t tmpfs -o rw,nosuid,nodev,noexec,relatime,size=512M tmpfs /dev/shm
  • 如果您使用 -v /dev/shm:/dev/shm,它也可以工作。共享主机选项/dev/shm
  • 使其工作的另一种方法是添加 chrome_options作为 --disable-dev-shm-usage .这将强制 Chrome 使用 /tmp而是目录。这可能会减慢执行速度,因为将使用磁盘而不是内存。
    chrome_options.add_argument('--disable-dev-shm-usage')        


  • 从标签崩溃

    从 tab crashed 是 Chromium 团队的 WIP(正在进行的工作)已经有一段时间了,这与 Linux 试图始终将/dev/shm 用于不可执行的内存有关。以下是引用资料:
  • Linux: Chrome/Chromium SIGBUS/Aw, Snap! on small /dev/shm
  • Chrome crashes/fails to load when /dev/shm is too small, and location can't be overridden
  • 根据 Comment61#Issue 736452修复似乎已与 Chrome v65.0.3299.6
  • 一起发布


    引用

    您可以在以下位置找到一些详细的讨论:
  • selenium.common.exceptions.WebDriverException: Message: invalid session id using Selenium with ChromeDriver and Chrome through Python
  • unknown error: session deleted because of page crash from unknown error: cannot determine loading status from tab crashed with ChromeDriver Selenium
  • org.openqa.selenium.SessionNotCreatedException: session not created exception from tab crashed error when executing from Jenkins CI server
  • 关于selenium - WebDriverError : no such session error using ChromeDriver Chrome through Jenkins and Selenium,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43165844/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com