新用户在这里.
经过几个小时的建立我的烟雾和回归测试后,我在网上阅读了许多案例后发现,已知phantomjs与量角器一起运行会遇到麻烦.詹金斯一直在为它迄今为止所做的所有任务运行幻影.
他们需要这些测试作为没有安装窗口系统的ci的一部分运行.
所以如果有完全无头浏览器或无头镀铬(这将是最有益的)以及逐步设置它的推荐,我将不胜感激.我已经有一个conf.js和一个e2e.conf.js文件.我的代码与chrome完美搭配.
我相信,我正在使用iMac和selenium webdriver.
编辑:问题=量角器不适用于phantomjs.我做了什么=使用不同的网络元素,并搜索,如果有人遇到类似的情况.还搜索了用于量角器的无头浏览器,无法找到合适的解决方案.
通过运行xvfb绑定到DISPLAY:10然后运行Selenium,我让Chrome通过Selenium服务器无头工作DISPLAY=:10 webdriver-manager start.所以这一切都很好.
通过directConnect: true在我的protractor.conf中指定,我也可以直接从量角器运行Chromedriver .
我想做的是两者的结合,即.直接运行chromedriver(NO SELENIUM!),但不知何故指示它在DISPLAY上运行无头:10.
在拓扑方面,一切都在开发人员的PC上运行.没有涉及服务器.在下面的评论中,我提到了一个节点服务器:这用于启动量角器而不是从命令行更常见的启动.我想要量角器在DISPLAY上运行:0所以我可以看到它的输出,测试失败等.当它使用chromedriver生成chrome时,我希望chrome在DISPLAY上运行:10.我这样做的原因是我希望chrome窗口比我的物理屏幕更大.请参阅如何截取移动外形的完整高度?为背景.
selenium selenium-chromedriver selenium-webdriver protractor
我目前的代码看起来像这样.
var webdriver = require('selenium-webdriver'),
until = webdriver.until,
By = webdriver.By,
fs = require('fs');
var driver = new webdriver.Builder()
.forBrowser('chrome')
.build();
driver.get('https://www.google.com/');
driver.findElement(By.css('#hplogo')).then((el) => {
el.takeScreenshot().then((data) => {
var base64Data = data.replace(/^data:image\/png;base64,/, "");
fs.writeFile(__dirname + "/out.png", base64Data, 'base64', (err) => {
if(err) console.log(err);
});
});
});
Run Code Online (Sandbox Code Playgroud)
当我运行它时,我收到错误消息:
/home/project/node_modules/selenium-webdriver/lib/promise.js:654
throw error;
^
UnsupportedOperationError: unknown command: session/797c146086bc89ad245f76ce99302a48/element/0.9715665113180876-1/screenshot
at WebDriverError (/home/project/node_modules/selenium-webdriver/error.js:26:26)
at UnsupportedOperationError (/home/project/node_modules/selenium-webdriver/error.js:435:26)
at Object.checkLegacyResponse (/home/project/node_modules/selenium-webdriver/error.js:578:13)
at /home/project/node_modules/selenium-webdriver/lib/webdriver.js:360:15
at Promise.invokeCallback_ (/home/project/node_modules/selenium-webdriver/lib/promise.js:1329:14)
at TaskQueue.execute_ (/home/project/node_modules/selenium-webdriver/lib/promise.js:2790:14)
at TaskQueue.executeNext_ (/home/project/node_modules/selenium-webdriver/lib/promise.js:2773:21)
at /home/project/node_modules/selenium-webdriver/lib/promise.js:2652:27
at /home/project/node_modules/selenium-webdriver/lib/promise.js:639:7
at …Run Code Online (Sandbox Code Playgroud)