我想使用Selenium WebDriver和各种浏览器(至少Firefox和Chrome)执行测试。为了定期运行这些测试,我创建了一个计划任务,它启动了一个简单的命令:
node screenshot.js >log.txt 2>&1
screenshot.js是:
var webdriver = require('selenium-webdriver'),
...
// Import drivers here
...
var driver = new webdriver.Builder()
.forBrowser('firefox')
.build();
driver.get('http://www.google.com/ncr');
driver.takeScreenshot().then(
function(image, err) {
require('fs').writeFile('out.jpg', image, 'base64', function(err) {
console.log(err);
});
}
);
driver.quit();
如果我使用选项&#34运行计划任务;仅在用户登录时运行",一切顺利,并保存屏幕截图。但是,如果我使用"运行是否用户登录,则运行任务"它没有。 有趣的是,如果我更换" firefox"用" chrome"在我的脚本中,截图正确保存在两种情况下。
我发现这个问题的唯一参考是:https://stackoverflow.com/a/47283428/2847079但它没有提供任何解决方案。
答案 0 :(得分:0)
作为引用问题的提问者/回答者:
尝试解决方法。将任务更改为仅在用户登录时运行,并让用户始终登录 - 这对我来说是一个很好的解决方案,因为我运行任务的机器没有做任何其他事情。
我意识到这不是最佳解决方案,所以也许您可以在运行主任务之前和之后的适当时间执行一些单独的任务来执行登录和注销。请参阅此问题,该问题解释了如何解决此问题:https://superuser.com/questions/616206/run-interactive-task-even-if-user-is-not-logged-on-windows
我无法使用的选项 - 但可能对您来说 - 是不在Windows上运行任务。 Windows(有点莫名其妙)强迫您登录先验来运行交互式任务,但应该能够在Linux中使用cronjob以交互方式运行firefox而无需记录英寸
不幸的是(对我来说非常幸运!)我不再在出现这种环境/代码问题的公司工作,所以我无法测试上述建议。
无论如何,我建议你向selenium项目提交一份错误报告,因为目前似乎没有一个合适的解决方案 - 尽管很高兴被证明是错误的。