【发布时间】:2018-07-17 04:58:36
【问题描述】:
我正在使用 Robotframework 为应用程序创建测试脚本。此应用程序需要许多不可避免的键盘单击/操作组合。现在我正在使用 PyAutoGui 库来模拟这些动作并且它们工作正常,但是当我通过 Jenkins 上的无头浏览器运行它们时,这些动作没有注册。
我得到的错误是“PyAutoGUI 故障安全由鼠标移动到左上角触发。要禁用此故障安全,请将 pyautogui.FAILSAFE 设置为 False。” 但是,即使将 Failsafe 值更改为 false,仍然无法捕获键盘操作。
奇怪的是,如果有人在测试运行时以物理方式登录到 Jenkins 框,则库工作得非常好,但是当无头运行时,库会中断。
对于这种情况,我可以使用另一个库或可能的解决方法吗?
提前致谢!
【问题讨论】:
-
我认为 PyAutoGUI 依赖于一个显示屏,它可以是物理的或虚拟的。如果您在机器桌面上登录,然后在无头模型的 cmd 窗口中运行脚本,PyAutoGUI 应该可以正常工作。但是如果你通过Putty之类的工具登录机器,实际上你登录的是机器的终端而不是桌面,在终端默认情况下是不显示屏幕的。非Windows机器经常出现这样的问题,那么你的Jenkins盒子是Window还是Linux?
-
我们使用的Jenkins盒子是windows,可惜我们无权访问。唯一有权访问它的人是管理员,但每次我们需要触发测试时,他都无法登录虚拟机并为我们运行作业。
-
还有其他库可以用来传递键盘动作/事件吗?我找到了适用于 Windows 的“sendKeys”模块,但我还没有机会在 VM 中对其进行测试。
-
Selenium
sendKeys()可以按组合键,如 Ctrl + A 等,以及Action类执行鼠标移动/向下/向上。两者都可以满足您的所有要求吗? -
但是这可以通过虚拟机在 Jenkins 上运行吗?我目前遇到的问题是 pyautogui 无法在虚拟机上运行。本地 pyautogui 可以很好地模拟不同的键盘操作,但由于某些原因在 Jenkins 上它不起作用。
标签: python selenium jenkins automation robotframework