我正在寻找一个基于npm / javascript的自动化测试工具,我可以用它测试我的网站提供脚本输入值,然后点击页面上的提交按钮等。 到目前为止,我已经测试了Dalekjs,但它似乎有很多问题,特别是对于Firefox,加上一些CSS选择器甚至在其他浏览器中也不起作用。
是否有其他良好的自动化测试工具是基于npm但不一定需要Selenium?
答案 0 :(得分:6)
有一个非常棒的工具叫Nightmare.js。首先它是一个高级幻影包装器,但是自从v2它被重写在Atom上。梦魇是基于webkit的。
梦魇可以无头地执行,但您可能需要配置服务器以使其正常工作。
为什么是梦魇?以下是官方网站的代码示例:
yield Nightmare()
.goto('http://yahoo.com')
.type('input[title="Search"]', 'github nightmare')
.click('.searchsubmit');
比较:
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();
});
});
});
});
});
所以你必须编写明显更少的代码。
为了让所有浏览器都能正常运行,请查看Selenium。它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测试中看到了很多“Promise hell”我以前的一个工作,所以在你开始之前,我给你的建议是使用生成器和co
或其他一些控制流库。
答案 1 :(得分:2)
它可能是Dalekjs的绝佳替代品。 Phantom.js可以在没有UI的情况下运行,可通过JavaScript编写脚本,并用于自动化网页交互。它是一个拥有自己的JavaScript API的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();
});
答案 2 :(得分:1)
答案 3 :(得分:0)
NightmareJS实际上是基于PhantomJS。即使对于非开发人员,它也能很好地工作。实际上,自动化测试确实取决于许多情况和测试的应用程序类型。您需要一种超快速的方法来直观地查看代码的更改是否会在视觉上影响应用程序,并且在某种程度上也会影响其逻辑。对于逻辑,有许多其他框架,如selenium框架。您不需要复杂的编码,因为您希望能够快速查看应用程序或测试结果,修改需要测试和验证的变量或元素。