Selenium FirefoxDriver 如何使用 Crontab 执行自动化测试

Selenium FirefoxDriver how to execute automated tests with Crontab

我有一个 Debian 构建的服务器,我需要 运行 通过 crontab 或任何其他可以完成日常工作的自动化测试。

我使用 Selenium WebDriver 2.45.0 Java 库。

使用命令行我可以执行脚本:

 export DISPLAY=:0; 
 xvfb-run --auto-servernum --server-num=0 nohup java -jar test.jar;

但是当我将代码添加到 Crontab 时

export DISPLAY=:0 && xvfb-run --auto-servernum --server-num=0 nohup java -jar test.jar; 它只是行不通。我还尝试将代码放入 test.sh 之类的脚本中。它再次使用命令行工作,但不适用于 crontab。

我卡住了。

如果您是 运行 来自 /etc/crontab 的脚本,您需要确保该文件为 root 所有,并且不是全局可写的。

chown root:root /path/to/script; chmod o-w /path/to/script; 

cron 文件(/etc/crontab/etc/cron.d/*)的处理方式不同于普通用户的 crontab。 Cron 这样做是为了防止意外的特权升级。

此外,请确保文件格式正确cron 文件:

# Example of job definition:
.---------------- minute (0 - 59)
|  .------------- hour (0 - 23)
|  |  .---------- day of month (1 - 31)
|  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
|  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
|  |  |  |  |
*  *  *  *  * user-name  command to be executed

我还记得在某处读到 Ubuntu 忽略 /etc/cron.d/* 中文件名中带有点的文件存在问题,但我不记得是所有 Debian 变体还是只是Ubuntu-具体。所以,你可能也想检查一下。

我在 crontab 屏幕的顶部添加以下行后,问题就解决了。 我不知道技术答案,但它对我有用。

PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin