2017-02-13 64 views
1


飛鏢是否有任何無頭瀏覽器?或者像硒一樣的包裝?我的目標是使用瀏覽器爲我多年前寫的網站進行自動化最終用戶測試。現在我需要在網站上進行一些更改。由於它包含特定的業務邏輯,我想寫一些快速測試的網站,而無需重構或修改單元測試,然後再進行這些更改。
這似乎是一個有趣的介紹,以更熟悉飛鏢生態系統以及。

在此先感謝!如何用Dart做自動瀏覽器測試?

回答

0

content-shell是模擬瀏覽器與達特支持像Dartium (https://www.dartlang.org/install/mac

https://pub.dartlang.org/packages/webdriver可用於Selenium測試。

Chromium正在進行中的工作無人支持。當Dartium升級使用這個Chromium版本時,Dartium應該能夠無頭跑動。

Dart團隊正在開發增量JS編譯(DDC - Dart開發編譯器),該編譯器允許將Chrome用作開發瀏覽器。無頭模式(可用時)可以直接使用。

+0

提示什麼downvote是讚賞。 –

+0

我想聽聽downvote。 但是,我對這種方法有疑問。 我是否正確理解,爲了使用webdriver測試,我仍然需要操縱index.html以包含飛鏢測試(https://gist.github.com/damondouglas/5972747)或者有沒有辦法運行測試而不修改標記? –

+0

這些是沒有webdriver測試。對於webdriver,你不需要修改應用程序,只需加載它。 –

1

您可以使用Chrome或Dartium與ChromeDriver駕駛它和webdriver package

下面是一個簡單的例子:

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(); 
} 

它不是完全「無頭」,但它是很容易使其工作像Travis-CI這樣的配置服務器:

before_install: 
- export DISPLAY=:99.0 
- sh -e /etc/init.d/xvfb start