首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用哪个javascript自动化测试工具

使用哪个javascript自动化测试工具
EN

Stack Overflow用户
提问于 2016-02-16 00:13:07
回答 4查看 3.9K关注 0票数 2

我正在寻找一个基于npm/javascript的自动化测试工具,我可以用它来测试我的网站,提供脚本输入值,然后单击页面上的提交按钮等。到目前为止,我已经测试了Dalekjs,但它似乎有很多问题,特别是与火狐,加上一些CSS选择器也不工作,甚至在其他浏览器。

有没有其他好的自动化测试工具是基于npm的,但不一定需要Selenium?

EN

回答 4

Stack Overflow用户

发布于 2016-02-16 04:15:49

Nightmare.js

有一个非常棒的工具叫做Nightmare.js。首先,它是一个高级别的幻影包装器,但在v2之后,它在Atom上被重写。噩梦是基于webkit的。

噩梦可以无意识地执行,但您可能需要配置您的服务器才能使其正常工作。

为什么是噩梦?以下是来自官方网站的代码示例:

Nightmare.js

代码语言:javascript
复制
yield Nightmare()
  .goto('http://yahoo.com')
  .type('input[title="Search"]', 'github nightmare')
  .click('.searchsubmit');

比较:

Phantom.js

代码语言:javascript
复制
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

代码语言:javascript
复制
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或其他控制流库。

票数 6
EN

Stack Overflow用户

发布于 2016-02-16 00:27:01

试试http://phantomjs.org/

它可能是Dalekjs的一个很好的替代方案。Phantom.js可以在没有UI的情况下运行,可以通过JavaScript编写脚本,并用于自动化网页交互。它是一个有自己的JavaScript应用程序接口的WebKit。它具有对大多数web标准的快速和本机支持: DOM处理、CSS选择器、JSON、Canvas和SVG。您可以使用脚本化输入值

下面是一个用法示例:

代码语言:javascript
复制
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
EN

Stack Overflow用户

发布于 2018-02-07 20:38:33

我也有类似的要求,我做了以下调查,这将是有帮助的:

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35414023

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档