我正在寻找一个基于npm/javascript的自动化测试工具,我可以用它来测试我的网站,提供脚本输入值,然后单击页面上的提交按钮等。到目前为止,我已经测试了Dalekjs,但它似乎有很多问题,特别是与火狐,加上一些CSS选择器也不工作,甚至在其他浏览器。
有没有其他好的自动化测试工具是基于npm的,但不一定需要Selenium?
发布于 2016-02-16 04:15:49
Nightmare.js
有一个非常棒的工具叫做Nightmare.js。首先,它是一个高级别的幻影包装器,但在v2之后,它在Atom上被重写。噩梦是基于webkit的。
噩梦可以无意识地执行,但您可能需要配置您的服务器才能使其正常工作。
为什么是噩梦?以下是来自官方网站的代码示例:
Nightmare.js
yield Nightmare()
.goto('http://yahoo.com')
.type('input[title="Search"]', 'github nightmare')
.click('.searchsubmit');比较:
Phantom.js
phantom.create(function (ph) {
ph.createPage(function (page) {
page.open('http://yahoo.com', function (status) {
page.evaluate(function () {
var el =
document.querySelector('input[title="Search"]');
el.value = 'github nightmare';
}, function (result) {
page.evaluate(function () {
var el = document.querySelector('.searchsubmit');
var event = document.createEvent('MouseEvent');
event.initEvent('click', true, false);
el.dispatchEvent(event);
}, function (result) {
ph.exit();
});
});
});
});
});所以你需要写的代码要少得多。
但它只支持WEBKIT
硒
为了让某些东西在所有浏览器中都能工作,请看一下Selenium。It supports really many browsers and platforms。
var webdriver = require('selenium-webdriver'),
By = require('selenium-webdriver').By,
until = require('selenium-webdriver').until;
var driver = new webdriver.Builder()
.forBrowser('firefox')
.build();
driver.get('http://www.google.com/ncr');
driver.findElement(By.name('q')).sendKeys('webdriver');
driver.findElement(By.name('btnG')).click();
driver.wait(until.titleIs('webdriver - Google Search'), 1000);
driver.quit();只有一个小建议,Selenium测试可能比噩梦测试更“笨重”,我在以前的工作中见过很多Selenium测试中的“承诺地狱”,所以在开始之前,我给您的建议是使用生成器和co或其他控制流库。
发布于 2016-02-16 00:27:01
试试http://phantomjs.org/
它可能是Dalekjs的一个很好的替代方案。Phantom.js可以在没有UI的情况下运行,可以通过JavaScript编写脚本,并用于自动化网页交互。它是一个有自己的JavaScript应用程序接口的WebKit。它具有对大多数web标准的快速和本机支持: DOM处理、CSS选择器、JSON、Canvas和SVG。您可以使用脚本化输入值
下面是一个用法示例:
console.log('Loading a web page');
var page = require('webpage').create();
var url = 'http://en.wikipedia.org/';
page.open(url, function (status) {
console.log('Page loaded');
page.render('wikipedia.org.png');
phantom.exit();
});发布于 2018-02-07 20:38:33
我也有类似的要求,我做了以下调查,这将是有帮助的:

https://stackoverflow.com/questions/35414023
复制相似问题