我最近开始使用Selenium并让生活更容易开始我使用节点来运行我的脚本,以便我可以直观地监控测试。我现在的挑战是转换它,以便它可以作为无头测试运行。不幸的是,我遇到的大部分资源只能使用带有Java或Python的phantomjs和ghostdriver。我的老板希望我在没有Java或Python的情况下通过phantomjs运行测试。最终,这些测试将通过没有GUI的服务器上的Linux VM远程运行。目前我正在使用Mac OS X 10.8进行测试,并且仍然有许多桥梁可以跨越以实现我的目标。
首先,我最重要的问题是,是否可以通过端口从phantomjs运行脚本而无需使用Java或Python?我花了几个小时研究尽可能多的资源,但我没有解决方案。
如果是这样,我怎样才能正确初始化测试以运行无头?以下是我编写功能测试开始的脚本。我想正确地将功能从firefox切换到phantomjs,并能够使用适当的端口无头地运行它。测试的其余部分导航到特定站点,通过窗口小部件登录,然后进一步导航到我将构建进一步测试的区域,以便在我开始工作后进行操作。
var webdriver = require('selenium-webdriver'),
SeleniumServer = require('selenium-webdriver/remote').SeleniumServer;
var server = new SeleniumServer("Path/selenium-server-standalone-2.39.0.jar", {
port: 8910
});
server.start();
var driver = new webdriver.Builder().
usingServer(server.address()).
withCapabilities(webdriver.Capabilities.firefox()).
build();
测试工作完美,但我是新手,所以我可能会忽略一些愚蠢的东西。请让我知道要进行哪些调整,以便通过幻像运行无头。当我在将功能切换到phantomjs后尝试使用node来运行脚本时,它会生成
"/Selenium/node_modules/selenium-webdriver/phantomjs.js:22
LogLevel = webdriver.logging.LevelName,
^
TypeError: Cannot read property 'LevelName' of undefined
at Object.<anonymous> (/Selenium/node_modules/selenium-webdriver/phantomjs.js:22:33)
这是一个我无法调整的只读文件,我将“LogLevel”或“LevelName”定义为相应的相应值(DEBUG等)所做的任何尝试都没有结果。
如果我通过phantomjs运行它,我得到 -
"Error: Cannot find module 'path'
phantomjs://bootstrap.js:289
phantomjs://bootstrap.js:254 in require"
(It also lists module 'http') -- (and various undefined function errors)
我觉得在那个实例中我没有正确组织Selenium,phantomjs和ghostdriver的文件应该去哪里才能玩得很好。我还删除了服务器设置部分,而是首先运行它,然后单独运行脚本。
phantomjs --webdriver=8910
但它产生了同样的结果。我解决这些问题的所有研究都发现了Java和Python的指令,而不是Javascript本身。而不是追逐许多兔子洞,我认为咨询更好的思想是明智的。
如果你比我知道的更好,并且没有Java或Python尝试这种方法毫无结果,请告诉我。如果你知道我的脚本中的问题在哪里并且可以提出修复,请告诉我。我希望我已正确描述了我的问题的性质,如果您需要更多信息,我会尽力为您提供。
这是我用Javascript工作的第二周,所以如果你认为我正在制作一个noob错误,你很可能是正确的。请记住,脚本通过节点使用selenium webdriver。
非常感谢您的时间! 〜艾萨克
答案 0 :(得分:2)
这有点棘手,但这是我拼凑的解决方案:
var webdriver = require('selenium-webdriver'),
SeleniumServer = require('selenium-webdriver/remote').SeleniumServer,
server = new SeleniumServer('/path/to/selenium/selenium-server-standalone-2.41.0.jar', {
port: 4444
}),
capabilities = webdriver.Capabilities.phantomjs();
capabilities.set('phantomjs.binary.path', 'path/to/phantom/bin/phantomjs');
var promise = server.start().then(function() {
var client = new webdriver.Builder().
usingServer(server.address()).withCapabilities(
capabilities
).build();
return {
'client': client,
'server': server
};
}, function(err) {
console.log('error starting server', err);
});
然后,您可以使用与selenium的mocha兼容测试框架的promise来保存测试,直到服务器启动。
一旦我发现导航位于页面的最右侧,我发现文档确实非常有用。这是网址:http://selenium.googlecode.com/git/docs/api/javascript/module_selenium-webdriver.html 然后你会被困在我的位置。让selenium-webdriver安静下来。