将 Selenium 测试作为计划任务运行

软件测试 网络驱动程序 Python
2022-01-17 17:33:30

我正在尝试在 Windows 7 64 位机器上运行用 Python 编写的 Selenium WebDriver 脚本作为计划任务。

当从命令提示符作为批处理文件运行时,该测试运行良好,但是当作为计划任务运行时,它会因 ElementNotVisibleExceptions 或无法找到元素等错误而严重失败。

我尝试以不同的用户身份运行测试,结果没有变化。我试图修改 TaskScheduler 服务以与桌面交互,但该选项是幻影的。

有没有人有将这样的测试作为计划任务运行的经验?

编辑:我实际上最终弄清楚了这一点。原来我的批处理文件有一些错误。调试后,通过计划任务运行 Selenium 脚本工作正常。

4个回答

你在使用远程桌面吗?如果您最小化或关闭远程桌面,它将向 Windows 发送一条消息,指示没有人在使用该计算机,因此桌面不再需要可见。这可能就是您的 Selenium 测试找不到元素的原因。

解决方案是使用 VNC。

尽量保持机器电源设置以始终保持显示器和电脑打开。不要让它休眠或锁定电脑,或关闭显示器。这肯定会有所帮助

我知道当我们使用 psexec 在远程机器上运行测试时,我们必须将 windows 服务“交互式服务检测”更改为启动“自动”并启动该服务。你可以试试。

计划任务以“无头”状态运行,因此它们无权访问 GUI。我假设您使用的是 Firefox WebDriver。Firefox 在无头环境中启动时可能会出现问题。

我认为您最好使用启用了 Javascript 的 HTMLUnit 驱动程序。您为无头运行所做的权衡是 HTMLUnit 中的 Javascript 支持与 FF、IE、Chrome 或 Safari 中的 Javascript 并不完全相同。你的旅费可能会改变。