【问题标题】:Which javascript Automated Testing Tool to use使用哪个 javascript 自动测试工具
【发布时间】:2016-02-15 16:13:06
【问题描述】:

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

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

【问题讨论】:

    标签: javascript testing automation npm


    【解决方案1】:

    Nightmare.js

    有一个非常棒的工具叫做Nightmare.js。首先,它是一个高级 Phantom 包装器,但从 v2 开始,它在 Atom 上被重写。 Nightmare 是基于 webkit 的。

    Nightmare 可以无头执行,但您可能需要配置服务器才能使其正常工作。

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

    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。它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 或其他一些控制流库。

    【讨论】:

    • 我担心的是,它是否适用于所有浏览器并且只使用 npm/js?
    • @FaisalMq 不,不是。为答案添加了另一个工具。
    • Nightmare.js 不再正确维护。已披露和未修复的零日漏洞:github.com/segmentio/nightmare/issues/1060
    【解决方案2】:

    试试http://phantomjs.org/

    它可能是 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();
    });
    

    【讨论】:

      【解决方案3】:

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

      【讨论】:

      • 这对人们很有帮助!我认为你应该将 nightmare.js 添加到列表中并发布它
      【解决方案4】:

      NightmareJS 实际上是基于 PhantomJS。即使对于非开发人员,它也能很好地工作。实际上,自动化测试确实取决于许多情况和测试的应用程序类型。您需要一种超快速的方法来直观地查看代码更改是否会在视觉上影响应用程序以及在某种程度上影响其逻辑。对于逻辑,还有许多其他框架,例如 selenium 框架。无需复杂的编码,因为您希望能够快速查看应用程序或测试结果,修改需要测试和验证的变量或元素。

      【讨论】:

      • 要使用多个浏览器,请下载适当的 Selenium 驱动程序以使其正常工作,并让它们在 Eclipse 或 Visual Studio 中引用驱动程序
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多