首页 > 编程问答 >当 python 脚本通过 jenkins + Github 在 Windows 本地计算机上运行时,chrome 浏览器不会调用

当 python 脚本通过 jenkins + Github 在 Windows 本地计算机上运行时,chrome 浏览器不会调用

时间:2024-07-22 14:02:48浏览次数:11  
标签:python github jenkins automation

我的Python代码是(windows Machine)

from selenium import webdriver
print("new Line")
print("2 Line")
print("3 Line")
holdChrome = webdriver.ChromeOptions()
holdChrome.add_experimental_option("detach", True)   #Restrict auto close of chrome
e = webdriver.Chrome(holdChrome)
e.get("https://keepr.inoidsolutions.in/")

当我在jenkins + github上运行这个python代码时,它会执行所有python代码,但不会在其上启动chrome浏览器。


当你在 Jenkins + Github 环境下,尤其是在 Windows 本地上运行 Selenium 脚本时,Chrome 浏览器无法启动,通常是以下几个原因造成的:

1. Chrome 驱动程序路径问题:

  • Jenkins 找不到 ChromeDriver: 确保 ChromeDriver.exe 放在 Jenkins 能够找到的路径下。你可以将 ChromeDriver.exe 放置在你的项目目录下,或者添加到系统的 PATH 环境变量中。
  • ChromeDriver 版本不匹配: 确认 ChromeDriver 的版本与你安装的 Chrome 浏览器版本匹配。你可以在 https://chromedriver.chromium.org/downloads 下载对应版本的 ChromeDriver。

2. Jenkins 用户权限问题:

  • Jenkins 服务运行的用户没有权限启动 Chrome: 默认情况下,Jenkins 服务可能以 Local System 账户运行,该账户没有启动 GUI 程序的权限。你可以尝试以下方法解决:
    • 更改 Jenkins 服务运行的用户: 将其更改为拥有足够权限的用户。
    • 在 Jenkins 服务启动时勾选 "Allow service to interact with desktop":
      • 注意:这种方法存在安全风险,不建议在生产环境中使用。

3. Jenkins 节点配置问题:

  • Jenkins 节点没有配置显示设备: 如果你使用的是 Jenkins 分布式环境,请确保运行该脚本的节点配置了显示设备。

4. 代码逻辑问题:

  • 浏览器窗口关闭过快: e.get() 方法执行完毕后,如果没有任何后续操作,浏览器窗口可能会立即关闭。 你可以使用 time.sleep() 方法延迟窗口关闭时间,或者使用 input() 函数等待用户输入,以便观察浏览器窗口。

解决方法:

  1. 确认 ChromeDriver 路径: 在代码中明确指定 ChromeDriver 的路径: ```python from selenium import webdriver

driver_path = "C:/path/to/your/chromedriver.exe" # 替换为你的 ChromeDriver 实际路径 driver = webdriver.Chrome(executable_path=driver_path)

driver.get("https://keepr.inoidsolutions.in/") ```

  1. 检查 Jenkins 服务运行用户:
  2. 打开 "服务" 管理器,找到 Jenkins 服务。
  3. 右键点击 Jenkins 服务,选择 "属性"。
  4. 切换到 "登录" 选项卡,查看 "登录身份"。
  5. 确保该用户拥有启动 Chrome 浏览器和访问相关资源的权限。

  6. 配置 Jenkins 节点显示设备:

  7. 进入 Jenkins 管理页面,找到节点管理。
  8. 选择运行该脚本的节点,配置 "Launch method",确保节点连接到有显示设备的机器。

  9. 添加延迟或等待用户输入: ```python import time

# ... 你的代码

time.sleep(10) # 延迟 10 秒 # 或者 input("Press Enter to exit...") ```

调试建议:

  • 查看 Jenkins 控制台输出: 查看 Jenkins 构建日志,找到任何与 ChromeDriver 或 Chrome 浏览器相关的错误信息。
  • 在本地运行脚本: 尝试在本地以相同用户身份运行该脚本,查看是否能够正常启动 Chrome 浏览器。

通过以上步骤排查问题,你应该能够解决 Jenkins + Github 环境下 Chrome 浏览器无法启动的问题。

标签:python,github,jenkins,automation
From: 78777112

相关文章

  • python_基础_数据类型
    基础数据类型不需要声明,只有被赋值后才会创建变量。变量本身没有类型,“类型”指的是所存值的类型。类型判断type(x)和isinstance(x,int)前者不会认为子类是一种他的父类类型后者会认为子类是父类类型>>>classA:...pass...>>>classB(A):...pass......
  • IPython 使用技巧
    IPython是一个强大的交互式Pythonshell,提供了许多方便的功能,使Python编程更加高效和愉快。本文将介绍一些IPython的实用技巧,帮助开发者充分利用其功能,提高编程效率。1.基本操作和快捷键1.1启动IPython可以通过在终端输入以下命令来启动IPython:ipython启动后,你......
  • 【python】类方法和静态方法的区别
    类方法和静态方法在Python中都可以用来定义与类相关的功能,但它们有不同的使用场景和优缺点。虽然类方法也可以用来实现验证逻辑,但静态方法在某些情况下更合适。让我们详细看看这两种方法的区别以及为什么在某些情况下静态方法可能更适合验证功能。类方法和静态方法的区别类......
  • Python自动化:一键提取千万个Excel指定数据
    一、传统方法的局限性打开每个Excel文件,逐个查找需要的数据。筛选出老板需要的数据列。复制并粘贴到新的工作表中。保存并关闭每个文件。这个过程不仅耗时,而且容易出错。每一次的筛选都可能遗漏数据,每一次的复制粘贴都可能引入错误。二、Python自动化的解决方案i......
  • Python:提交和跟踪许多子流程会导致“卡住”子流程
    我有一个第3方cli可执行文件,需要从python代码中调用。这些都是繁重的计算(CPU),我需要调用它大约50-100次。可执行文件本身在某种程度上是多线程的,但不是所有步骤,而且我有很多可用的核心。这意味着我希望同时运行多个子进程,但不是全部。因此,我需要提交其中一些,然后跟踪......
  • 无法在 Ubuntu 20.04 中安装 python3-venv,一些损坏的软件包
    这可能很长,但请耐心看完当我在关注这篇文章时尝试安装python3-venvsudoaptinstallbuild-essentiallibssl-devlibffi-devpython3-dev它抛出了以下错误:libffi-devpython3-devReadingpackagelists...DoneBuildingdependencytreeRead......
  • 正则表达式在python爬虫中常用的方法举例
    在爬虫中,正则表达式被广泛用于从网页中提取特定信息。以下是一些常用的正则表达式方法举例,以及它们在爬虫中的典型应用场景:1.提取URLimportreurl_pattern=r'https?://(?:[-\w.]|(?:%[\da-fA-F]{2}))+'urls=re.findall(url_pattern,html_content)用于从网页中......
  • 使用 Python XlsxWriter 将 DatePicker 添加到 Excel 单元格中?
    我正在尝试使用PythonXlsxWriter生成的Excel创建输入表单。我想知道是否可以在Excel单元格中添加一个迷你日历(作为DatePicker)供用户输入日期?我偶然发现了Microsoft支持团队提供的本指南插入日期选择器:|||https://support.microsoft.com/en-us/office/......
  • [1037] Python operation of three keys shortcut (pynput)
    Theshortcutof win+shift+leftdoesnotworkwellin pyautogui,butitworkswellin pynput.MovingtheActiveWindowtoaDifferentMonitor: You’reright;PyAutoGUIdoesn’tdirectlysupportmovingwindowsacrossmonitorswiththeeleganceofaswan......
  • Python:定期检测断开故障的USB设备并重新初始化实例
    我有一个USB设备,有时会通过USB端口发送串行数据。问题是设备出现故障,有时会无缘无故地断开连接并再次连接到电脑。问题不大,但在这些情况下我需要重新初始化serial.Serial(port)实例,这有点烦人。该设备没有可以从我那里收到的任何命令,我可以验证它是否已连接。我可以......