2017-06-04 1 views
0

Ich erhalte einen Fehler, wenn ich versuche, eine Checkbox mit Behat/Mink/Selen zu überprüfen. Unten finden Sie meine Einstellungen und eine Beschreibung meines Fehlers.Behat, Nerz und Selen. Wie überprüfe ich ein Kontrollkästchen?

behat.yml

default: 
    extensions: 
     Behat\MinkExtension: 
      goutte: ~ 
      selenium2: ~ 

composer.json

{ 
    "require": { 
     "behat/behat": "~3.3", 
     "behat/mink-extension": "~2.2", 
     "behat/mink-goutte-driver": "~1.2", 
     "behat/mink-selenium2-driver": "~1.3" 
    }, 
    "config": { 
     "bin-dir": "bin/" 
    } 

}

I Selen 3.4.0 wie diese ausgeführt werden (einschließlich eines Gecko-Treiber)

java -Dwebdriver.gecko.driver=/home/ubuntu/path/to/geckodriver -jar selenium-server-standalone-3.4.0.jar 

FeatureContext Klasse:

<?php 

use Behat\MinkExtension\Context\MinkContext; 
use Behat\Behat\Tester\Exception\PendingException; 

/** 
* Defines application features from the specific context. 
*/ 
class FeatureContext extends MinkContext 
{ 
} 

?> 

Das Merkmal zu test

Feature: Search 
    In order to use behat 
    As a tester 
    I need to be able to get all these componets to work! 

    @javascript 
    Scenario: A very simple test of behat functionality 
     Given I am on "http://behat-testing.christaylordeveloper.co.uk/" 
     Then I should see "MY BLOG" 
     And the "#slave-para" element should not contain "Hi there" 
     When I check "test-cb" 
     Then the "#slave-para" element should contain "Hi there" 

Der Fehler
Dies ist die Ausgabe des Test einen MouseMoveTo Fehler zeigt

[email protected]:~/behat-tests$ bin/behat 
Feature: Search 
    In order to use behat 
    As a tester 
    I need to be able to get all these componets to work! 

    @javascript 
    Scenario: A very simple test of behat functionality    # features/simple-test.feature:7 
    Given I am on "http://behat-testing.christaylordeveloper.co.uk/" # FeatureContext::visit() 
    Then I should see "MY BLOG"          # FeatureContext::assertPageContainsText() 
    And the "#slave-para" element should not contain "Hi there"  # FeatureContext::assertElementNotContains() 
    When I check "test-cb"           # FeatureContext::checkOption() 
     mouseMoveTo 
     Build info: version: '3.4.0', revision: 'unknown', time: 'unknown' 
     System info: host: 'ip-172-31-7-6', ip: '172.31.7.6', os.name: 'Linux', os.arch: 'amd64', os.version: '4.4.0-1018-aws', java.version: '1.8.0_131' 
     Driver info: driver.version: RemoteWebDriver (WebDriver\Exception\UnknownCommand) 
    Then the "#slave-para" element should contain "Hi there"   # FeatureContext::assertElementContains() 

--- Failed scenarios: 

    features/simple-test.feature:7 

1 scenario (1 failed) 
5 steps (3 passed, 1 failed, 1 skipped) 
0m3.75s (10.46Mb) 

Wenn ich das @javascript-Tag auskommentiere und den letzten Schritt des Szenarios auskomme (was Javascript mit einbezieht), passiert es gut.

Wie kann ich mit Javascript ohne diesen mouseMoveTo Fehler testen?

Danke

Update-Nummer 2:

ich das jetzt haben Arbeits chromedriver Version 2.32 und Selen Standalone-Server 3.5.3

ich den Server über die Befehlszeile wie folgt aus laufen :

java -Dwebdriver.chrome.driver=chromedriver -jar selenium-server-standalone-3.5.3.jar 

Mein Behat.yml ist

default: 
    extensions: 
     Behat\MinkExtension: 
      goutte: ~ 
      selenium2: ~ 
      browser_name: 'chrome' 

Antwort

1

Für die checbox Überprüfung MinkContext hat bereits vordefinierte Methoden, wie checkOption(optionName) und uncheckOption(optionName) Dokumentation sagt:

  • Checks Checkbox mit dem angegebenen id | Name | label | Wert
    • Beispiel: Wenn ich "Perlenkette" überprüfe
    • Beispiel : Und ich überprüfen "Perlenkette"

Da diese Methode in MinkContext ist, können Sie es von Ihrem .feature Datei wie verwenden:

When I check "accept_checkbox" 

oder in Ihrem FeatureContext.php Datei wie

$this->checkOption('optionIdentifier') 

MinkContext Link hat eine Menge vordefiniert ed Methoden, schau sie dir an!

+0

Vielen Dank Igor. Ich habe eine Bearbeitung zu meiner ursprünglichen Frage hinzugefügt. Ich habe das Gefühl, dass in meiner Feature Context Klasse einige essentielle 'use'-Anweisungen fehlen, da ich die elementaren vordefinierten Methoden wie' Wenn ich "cb_id" 'anschaue oder auch Dinge wie' Wenn ich "link" 'folge, nicht verwenden kann. Vielleicht fehlt mir etwas? – CTaylorGuitar

+0

@CTaylorGuitar seltsam, weil alle Bibliotheken vorhanden sind, können Sie Behath mit 'behat-dl' laufen. und wenn Sie versuchen, '$ this-> checkOption ('optionIdentifier')' in Ihrer Methode in featureContext aufzurufen, welche Art von Fehler erhalten Sie? –

+0

Ich habe die ursprüngliche Frage noch einmal bearbeitet und nun wird meine Situation und der Fehler deutlicher erklärt, hoffe ich. Irgendwelche Ratschläge, wie man Checkboxen mit Selen ankreuzen kann, erhielten – CTaylorGuitar

0

So nach der Aktualisierung der Frage wurde klar, was das Problem ist. mouseMoveTo Fehler ist ein bekanntes Problem bei der Verwendung von selenium3. Dieser Fehler tritt nur für firefox Browser mit gecko Treiber auf. Um dieses Problem zu beheben, können Sie chrome verwenden oder die Bibliothek MinkSelenium2Driver aktualisieren. Sollte master Zweig von MinkSelenium2Driver sein, der behat/mink: [email protected] erfordert. Hier ist der Punkt des Problems MinkSelenium2Driver Also, wenn es ok für Sie alle verwenden die neuesten Versionen Behat, dann könnte composer.json wie folgt aussieht:

"require": { 
    "behat/behat": "v3.3.1", 
    "behat/mink": "v1.7.1", 
    "behat/mink-extension": "v2.2", 
    "behat/mink-selenium2-driver": "dev-master", 

}

+0

danke so sehr. Ich werde dies testen und bald wieder auf Sie zurückkommen. – CTaylorGuitar

+0

Ok, also habe ich zuerst die Chrome-Option ausprobiert. Ich musste vom Gecko zum Chrom-Fahrer wechseln und alles schien gut zu laufen. Allerdings habe ich die Fehlermeldung "Sie verwenden nicht unterstützte Befehlszeilenflags --ignore-certificate-errors" erhalten. Ich konnte keine direkte Vorgehensweise finden. Wenn ich diesen Chrome-Fehler beheben kann, schien es eine gute Methode zu sein, da der Chrome-Browser gestartet wurde.Dann habe ich deine neue Composer-Datei ausprobiert (danke). Ein Lade mehr Fehler. Dumme Frage: Muss ich den Selen-Standalone-Server, den ich verwende, ändern? Vielleicht zu Version 2.x wechseln, um der Composer-Datei zu entsprechen? – CTaylorGuitar

+0

Über Chrome - seltsam Ich habe nicht einen solchen Fehler bekommen, vielleicht die neueste Chrome-Treiber-Version. Über das Aktualisieren auf die letzte Version habe ich einen Fehler beim Update bekommen - wenn es so ist - würde ich Ihnen empfehlen, das nächste zu tun: 1) lösche alle Dateien unter/vendor Verzeichnis 2) säubere composer.lock Datei 3) renne 'composer update Behat/Nerz-Selen2-Treiber –

Verwandte Themen