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

在jenkins上不使用“PyAutoGUI”库就可以使用键盘操作吗?

阎咏思
2023-03-14

我正在使用机器人框架为应用程序创建测试脚本。此应用程序需要许多不可避免的键盘单击/操作组合。现在,我正在使用PyAutoGui库来模拟这些操作,它们工作正常,但是当我通过Jenkins上的无外设浏览器运行它们时,这些操作没有注册。

我得到的错误是“鼠标移动到左上角触发PyAutoGUI故障安全”。要禁用这种故障保护,请设置pyautogui。故障安全到假。”然而,即使在将故障保护值更改为false之后,键盘操作仍然不会被捕获。

奇怪的是,如果有人在测试运行时物理登录到Jenkins框中,库工作得很好,但在无头运行时,库会崩溃。

对于这种情况,是否有其他库可以使用或可能的解决方法?

提前感谢!

共有3个答案

赵鸿畴
2023-03-14

您可以通过安装VNC服务器并在其中运行jenkins slave来解决这个问题。然后浏览器将以gui启动,测试将正常工作。

凌声
2023-03-14

我一直在工作中自动化许多Web应用程序。

我也是从PyAutoGUI开始的,在从我的笔记本电脑到运行脚本的生产服务器的过程中,我遇到了和你类似的问题。

我找到的解决方案是硒网络驱动程序。如果您正在测试的内容具有IP地址,则可能是解决方案。在我看来,它实际上比皮奥托GUI更容易。

卫彭亮
2023-03-14

这种行为的原因是,当没有用户登录时(物理上或通过RDP),就没有活动桌面(想想所有GUI元素、配置文件等)。我们在环境中遇到了这样的问题。这是一个可行的解决方案:

    < li >创建将在Windows虚拟机上建立RDP会话的作业,以便有一个活动桌面。该作业无法结束RDP会话。它需要在后台运行(通常没问题,就像其他人用相同的用户登录一样,会话将切换到新用户,但桌面将是活动的。) < li >确保在Win虚拟机上运行测试作业时,已经打开了一个RDP。计划在Win虚拟机上测试之前运行作业1。

从作业1的技术细节来看,我们使用WIN前缀命名WinVM节点,因此要获得所有Windows节点,我们通过Jenkins API查询Jenkins
一旦我们有了WinVM(IP或主机名)列表,我们就在Linux节点上运行以下命令,循环所有发现的WinVM节点。

一个节点的基本命令:

   BUILD_ID=dontKillMe vncserver -kill :100 || true
   BUILD_ID=dontKillMe rm -rf /tmp/.X11-unix/X100 || true 
   BUILD_ID=dontKillMe vncserver :100
   BUILD_ID=dontKillMe DISPLAY=localhost:100
   BUILD_ID=dontKillMe export DISPLAY
   yum install -y freerdp
   ## loop through WinVMs below:    
   nohup xfreerdp -g <resolution> -u <user> -p <pas> <IP/hostname>
   ## end of loop

魔力在于 nohup,因为它在作业完成后在后台运行 RDP 会话。

这是安装了vncserver和xfreerdp的Centos。

#编辑

您可以要求管理员为运行测试创建一个WinVM,将Jenkins与开发/测试环境分开。通过这种方式,您可以从任何地方或从Jenkins本身在节点上打开RDP会话。为了稳定性和性能,最好不要在主机上运行任何东西。

 类似资料:
  • 我想使用而不使用。我们有一个与Spring现有的项目,但我有麻烦配置没有。 当我使用@EnableZuulProxy注释时,出现以下错误: 原因:org。springframework。豆。工厂UnsatifiedPendencyException:创建名为“org”的bean时出错。springframework。云netflix。祖尔。ZuulProxyConfiguration”:通过字段“

  • 问题内容: 我有一个用于存储优惠券/折扣的表,并且我想将coupon_code列用作主键,即。 我的理由是,每个优惠券都将具有唯一的代码,而我将要运行的唯一命令是 我不会进行任何联接或索引编制,并且我看不到该表中有超过几百个条目。 在我看来,这可以,但是我不知道是否有任何我想念的东西。 问题答案: 从某种意义上说,您当然可以,您的RDBMS将允许您这样做。这个问题的答案,你是否没有问题 应该 做到

  • 问题内容: 因此,对于Toast类,显然可以这样编写: 为什么完全可以实例化toastMessage并将其用作没有new关键字的对象? 如何通过方法实例化toastMessage? 问题答案: 这里没有什么特别的。您只是在调用创建实例的静态方法(或者可以重用现有实例- 这是实现细节)。例如,这是您会在各处看到的一种模式。有时可以改为调用构造函数,有时 只能 通过静态方法创建实例。 除非幕后功夫,否

  • 本文向大家介绍python PyAUtoGUI库实现自动化控制鼠标键盘,包括了python PyAUtoGUI库实现自动化控制鼠标键盘的使用技巧和注意事项,需要的朋友参考一下 PyAutoGUI 不知道你有没有用过,它是一款用Python自动化控制键盘、鼠标的库。但凡是你不想手动重复操作的工作都可以用这个库来解决。 比如,我想半夜时候定时给发个微信,或者每天自动刷页面等操作,它能完全模拟手动操作,

  • 本文向大家介绍可以使用TypeScript写React应用吗?怎么操作?相关面试题,主要包含被问及可以使用TypeScript写React应用吗?怎么操作?时的应答技巧和注意事项,需要的朋友参考一下 使用ts启动新的 create react app项目 将ts添加到已经创建好的create react app项目中 PS:适用于 及更高版本。

  • 可以在 Adobe XD 中使用的所有键盘快捷键的列表。 XD 提供的快捷键可帮助您快速处理文档。许多键盘快捷键标注在菜单中的命令名称旁边。 键盘快捷键的可下载版本 下载并打印这些键盘快捷键的可打印版本。  单击下载。 注意:XD 推出了一个新的插件,可以让您查看所有键盘快捷键。要安装该插件,可转至“插件”>“键盘快捷键”>“安装”。安装完插件后,可使用以下快捷方式访问键盘快捷键: Mac:Shi