E2E-Test zur Auswahl des Auswahlfelds mit CasperJS, Nightmare und Python + WebDriver + PhantomJS

Zweck

Ich habe einen E2E-Test geschrieben und war süchtig danach, ein Auswahlfeld auszuwählen. Daher werde ich nach der Recherche versuchen, es in mehrere Bibliotheken zu schreiben. Schreiben Sie einige Funktionen, die Ihnen wichtig sind.

--Wählen Sie das Auswahlfeld

CasperJS

/*global casper*/
casper.test.begin('Test Sample', 2, function(test) {
    var selectbox = '#lang-chooser';
    var lang = 'fr';

    casper.start('https://www.google.com/doodles');

    casper.then(function() {
        var params = {};
        test.comment('change the value of the select box');

        params[selectbox] = lang;
        this.fillSelectors('#language-menu',params);

        test.assertEvalEquals(
            function(selector) {
                return document.querySelector(selector).value;
            },
            lang,
            'value of the select box has been changed',
            selectbox);
    });

    casper.then(function() {
        var comment = 'is included language type in url';
        var re = new RegExp('\\?hl=(' + lang + ')');
        test.assertMatch(this.getCurrentUrl(), re, comment);
    });

    casper.then(function() {
        this.capture('google.png');
    });

    casper.run(function() {
        test.done();
    });

});

Ausführungsergebnis

$ casperjs test test_google_selector.js
Test file: test_google_selector.js
# Test Sample
PASS Test Sample (2 tests)
# change the value of the select box
PASS value of the select box has been changed
PASS is included language type in url
PASS 2 tests executed in 2.477s, 2 passed, 0 failed, 0 dubious, 0 skipped.

Nightmare + mocha

/*jshint -W024 */
var Nightmare = require('nightmare');
var assert = require("assert");

describe('Test Sample', function(){
    this.timeout(15000);

    it('can change the value of the select box.', function(done){
        var selector = '#lang-chooser';
        var lang = 'fr';
        new Nightmare()
            .goto('https://www.google.com/doodles')
            .select(selector, lang)
            .evaluate(function (selector) {
                return document.querySelector(selector).value;
            }, function (select_value) {
                assert.equal(lang, select_value, 'value of the select box has been changed');
            }, selector)
            .wait(3000)
            .evaluate(function(lang) {
                var re = new RegExp('\\?hl=(' + lang + ')');
                return location.href.match(re);
            }, function(is_included_lang_in_url) {
                assert.ok(is_included_lang_in_url, 'is included language type in url');
            }, lang)

            .screenshot('google.png')
            .run(done);
    });
});

Ausführungsergebnis

$ node_modules/.bin/mocha test_google_selector.js


  Test Sample
    ✓ can select a select box. (3932ms)


  1 passing (4s)

Python + webdriver + phantomjs

from selenium import webdriver
from selenium.webdriver.support.ui import Select
import unittest


class TestSample(unittest.TestCase):
    def setUp(self):
        self.driver = webdriver.PhantomJS()
        self.driver.get('https://www.google.com/doodles')

    def tearDown(self):
        self.driver.quit()

    def test_lang_chooser(self):
        """can select a select box"""
        driver = self.driver
        selector = 'select#lang-chooser'
        lang = 'fr'

        # change the value of the select box
        element = driver.find_element_by_css_selector(selector)
        select = Select(element)
        select.select_by_value(lang)

        element = driver.find_element_by_css_selector(selector)
        self.assertEqual(
            lang, element.get_attribute("value"),
            'value of the select box has been changed'
        )

        self.assertTrue(
            '?hl={lang}'.format(lang=lang) in driver.current_url,
            'is included language type in url'
        )

        driver.save_screenshot("google.png ")


if __name__ == "__main__":
    unittest.main()

Ausführungsergebnis

$ python test_google_selector.py -v
test_lang_chooser (__main__.TestSample)
can select a select box ... ok

----------------------------------------------------------------------
Ran 1 test in 5.608s

OK

Impressionen

Unbeabsichtigt wurde es nur Phantom JS-System .... Wie schreibt man einen einfach zu lesenden Test? Gefällt mir Kommentare. Ich frage mich, ob der E2E-Test etwas sein sollte, das schnell und schnell geschrieben und ausgeführt werden kann. Es gibt mehr Selen-basierte ...


Casperjs

Nightmare

Python

--Interessiert ――Ich dachte, der Code wäre redundant, aber CasperJS ist auch ziemlich redundant ... Es hängt davon ab, wie Sie es schreiben. ――Es kann überraschend sein, wenn Sie verstehen, wie man gut schreibt.


Referenz

Recommended Posts

E2E-Test zur Auswahl des Auswahlfelds mit CasperJS, Nightmare und Python + WebDriver + PhantomJS
Fraktal zum Erstellen und Spielen mit Python
Wie man einen Taschentest mit Python macht
Verwenden Sie den Phantomjs-Webdriver von Selen mit Pythons Unittest
Python-Code zum Trainieren und Testen mit Custom Vision of Cognitive Service
Kratzen Sie das Essen mit Python und geben Sie es an CSV aus
MessagePack-Versuchen Sie, Java und Python mit RPC zu verbinden
Memo zum Erstellen einer eigenen Box mit Peppers Python
Prozedur zum Laden von MNIST mit Python und zur Ausgabe an png
Ich möchte die Optimierung mit Python und CPlex behandeln
Probieren Sie die DB-Operation mit Python aus und visualisieren Sie sie mit d3
Primzahlbeurteilung mit Python
Scraping mit Python + PhantomJS
Fahren Sie WebDriver mit Python
Primzahlbeurteilung mit Python
Veriloggen und Cocotb werden nur zum Entwerfen und Testen von Verilog in Python verwendet.
Bildschirm und geteilter Bildschirm mit Python- und SSH-Anmeldung am Remote-Server
[Python] Wie man mit Klassenvariablen mit Dekorator und Metaklasse spielt
Testen Sie Python mit Miniconda unter OS X und Linux mit travis-ci
Datei im Dialog mit Python auswählen → Dateinamen im Meldungsfeld anzeigen
Versuchen Sie, ein Unterfenster mit PyQt5 und Python zu öffnen
[Lass uns mit Python spielen] Bildverarbeitung zu Monochrom und Punkten
Konvertieren Sie Videos mit ffmpeg + python + opencv in Schwarzweiß
Ich habe versucht, die Benutzeroberfläche neben Python und Tkinter dreiäugig zu gestalten
Holen Sie sich zusätzliche Daten zu LDAP mit Python (Writer und Reader)
So melden Sie sich mit Python bei AtCoder an und senden automatisch
Zusammenfassung der Module, die die Installation von WebDriver mit Python automatisieren und unterstützen
Programmieren mit Python und Tkinter
Stellen Sie mit Python eine Verbindung zu BigQuery her
Ver- und Entschlüsselung mit Python
Stellen Sie mit Python eine Verbindung zu Wikipedia her
Post to Slack mit Python 3
Schalten Sie Python mit Alternativen auf 2.7 um
Schreiben Sie mit Python in csv
Python-Debug- und Testmodul
Python mit Pyenv und Venv
Fordern Sie Python3 und Selenium Webdriver heraus
Funktioniert mit Python und R.
Führen Sie Jupyter mit der REST-API aus, um Python-Code zu extrahieren und zu speichern
Ich möchte APG4b mit Python lösen (nur 4.01 und 4.04 in Kapitel 4)
So importieren Sie CSV- und TSV-Dateien mit Python in SQLite
IME On / Off wird in Zusammenarbeit mit Python und Arduino durch LED angezeigt
So erstellen Sie eine Überwachungskamera (Überwachungskamera) mit Opencv und Python
Beispiel zur Verwendung nach OAuth-Authentifizierung der BOX-API mit Python
Ich habe versucht, mit Selenium und Python einen regelmäßigen Ausführungsprozess durchzuführen
Umgang mit Fehlern bei der Installation von Python und Pip mit Choco
Versuchen Sie, Google Map und Geography Map mit Python anzuzeigen
Wirf etwas mit Python in Kinesis und stelle sicher, dass es drin ist
Ich habe versucht, Gesichtsmarkierungen mit Python und Dlib leicht zu erkennen
Verschieben Sie Daten mit Python Change / Delete (Writer und Reader) nach LDAP.
So erstellen Sie eine Python- und Jupyter-Ausführungsumgebung mit VSCode
[Python] Versuchen Sie, Zeichen aus Bildern mit OpenCV und pyocr zu erkennen