2017-02-13 2 views
1


Есть ли какой-нибудь безголовый браузер для дротика? Или обертка для чего-то вроде селена? Моя цель - использовать браузер для автоматического тестирования конечных пользователей для веб-сайта, который я написал много лет назад. Теперь мне нужно сделать несколько изменений на сайте. Поскольку он содержит определенную бизнес-логику, я бы хотел написать несколько быстрых тестов для сайта без рефакторинга или модификации его для модульных тестов, прежде чем я сделаю эти изменения.
Кажется, что это забавное введение, чтобы лучше познакомиться с экосистемой дротика.

Спасибо заранее!Как сделать автоматическое тестирование браузера с помощью Dart?

ответ

0

content-shell является безголовым браузером с поддержкой Дарта как Dartium (https://www.dartlang.org/install/mac)

и https://pub.dartlang.org/packages/webdriver могут быть использованы для тестирования Selenium.

Подложка без хромирования для работы с хромом. Когда Dartium будет модернизирован, чтобы использовать эту версию Chromium, Dartium должен иметь возможность работать без головы.

Команда Dart работает над инкрементной компиляцией JS (компилятор DDC - Dart development), который должен позволить использовать Chrome в качестве браузера разработки. Безголовый режим (когда доступен) можно использовать напрямую.

+0

Подсказка, для чего нужен нижний предел. –

+0

Хотелось бы услышать и о нисходящем. Однако у меня есть вопрос об этом подходе. Правильно ли я понимаю, что для использования тестов 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 
Смежные вопросы