将Selenium脚本转换为可执行文件并远程运行返回不一致的结果

2024-09-29 18:55:46 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试运行一个Selenium脚本,这个脚本是我使用Python绑定作为可执行文件在远程无头机器上创建的。问题是,当远程执行脚本时,它们的行为不同。在

我已经完成了以下步骤:

  1. 创建了一个Selenium脚本(,使用Python绑定),它可以在我的本地虚拟机上完美地工作。在
  2. 使用py2exe将上述脚本转换为独立的可执行文件。这个在我的本地机器上也能正常工作。在
  3. 在远程虚拟机上运行创建的独立可执行文件,它与我在上面开发和测试初始脚本的虚拟机(步骤1)完全相似。唯一的区别是它没有头。对于远程运行,我使用的是来自PSTools实用程序集的PsExec。我按以下方式运行:

    在PsExec.exe文件\vmcle001iso-u rhdwa\he119712a-p密码123-h c:\dist\测试.exe

我的问题就这样开始了。我首先提到的是一些Python命令停止工作。例如,通常的Pythinexit(0)返回错误:

Traceback (most recent call last):
  File "nacs.py", line 103, in <module>
NameError: name 'exit' is not defined

但我的主要问题是一些元素无法找到或与之交互。因此,以前工作得很好的某些按钮会返回Selenium异常,例如:

^{pr2}$

再次强调一下,这一切都发生在我远程运行可执行文件的时候。不过,大部分代码都按预期工作。在

任何可能导致这种行为的暗示都是非常受欢迎的。在


Tags: 文件实用程序脚本机器可执行文件远程selenium方式
1条回答
网友
1楼 · 发布于 2024-09-29 18:55:46

我觉得这些信息最好包含在评论中,但我还没有这些特权,所以这就是我目前所发现的。在

我发现this link讨论了exit函数——本质上,不建议不在主解释器中运行脚本,因为启动时加载的模块不多,因此没有对其进行定义。(所以它似乎并不像你想的那样总是内置的)

至于第二条错误消息,似乎您的代码加载某些东西的速度比以前快/慢,因此它在加载某个元素之前到达了某些点—如果我必须猜测是什么原因导致的,那么对于driver.sleep()命令来说时间可能太少了。但是,我建议插入^{}(这是一个可以单击的链接),以确保元素在那时是可单击的,而不是手动更改这些时间。如果等待不起作用并超时,也可能会受到其他影响。在

请随时更新您的帖子,以便我们提供更多相关信息。在

相关问题 更多 >

    热门问题