如何使用Dart进行自动浏览器测试?

Ahm*_*enx 4 dart


有没有无头飞镖浏览器?还是像硒这样的包装纸?我的目标是使用浏览器对我几年前编写的网站进行自动化的最终用户测试。现在,我需要在网站上进行一些更改。由于它包含特定的业务逻辑,因此在进行这些更改之前,我想为该站点编写一些快速测试,而无需针对单元测试进行重构或修改。
熟悉Dart生态系统似乎是一个有趣的介绍。

提前致谢!

Xav*_*ier 10

您可以使用Chrome或Dartium并通过ChromeDriverwebdriver软件包进行驱动

这是一个简单的示例:

import 'dart:convert';
import 'dart:io';
import 'package:webdriver/io.dart';

main() async {
  // Start the ChromeDriver process
  Process chromeDriverProcess = await Process
      .start('chromedriver', ['--port=4444', '--url-base=wd/hub']);

  await for (String browserOut in const LineSplitter()
      .bind(UTF8.decoder.bind(chromeDriverProcess.stdout))) {
    if (browserOut.contains('Starting ChromeDriver')) {
      break;
    }
  }

  // Connect to it with the webdriver package
  WebDriver driver = await createDriver(
      uri: Uri.parse('http://localhost:4444/wd/hub/'),
      desired: Capabilities.chrome);

  // Go to your page
  await driver.get('http://stackoverflow.com');

  //TODO: write your tests
  print(await driver.execute('return navigator.userAgent', []));

  // Take a simple screenshot
  String screenshot = await driver.captureScreenshotAsBase64();
  new File('stackoverflow.png').writeAsBytesSync(BASE64.decode(screenshot));

  driver.quit();
  chromeDriverProcess.kill();
}
Run Code Online (Sandbox Code Playgroud)

它并非完全“无头”,但通过以下配置很容易使其在Travis-CI之类的服务器上工作:

before_install:
 - export DISPLAY=:99.0
 - sh -e /etc/init.d/xvfb start
Run Code Online (Sandbox Code Playgroud)


Gün*_*uer 5

content-shell是一个像 Dartium 一样支持 Dart 的无头浏览器(https://www.dartlang.org/install/mac

https://pub.dartlang.org/packages/webdriver可用于 Selenium 测试。

对正在进行的 Chromium 工作提供无头支持。当 Dartium 升级为使用这个 Chromium 版本时,Dartium 应该可以无头运行。

Dart 团队正在研究增量 JS 编译(DDC - Dart 开发编译器),它应该允许使用 Chrome 作为开发浏览器。无头模式(如果可用)可以直接使用。