2013-08-28 7 views
5

Ich bin neu in Behat. Ich verwende derzeit die Mink-Erweiterung und den Selenium2-Treiber, und ich würde gerne wissen, wie angegeben wird, dass der Test als Teil des Szenarios über einem Element positioniert werden soll.Wie kann ich Behat/Mink sagen, über ein Element auf einer Webseite zu zeigen?

Zum Beispiel, hier ist mein Szenario:

Scenario: Testing that the Contact Us submenu appears 
    Given I am on "/" 
    When I hover over "About" 
    Then I should see "Contact Us" 

Antwort

9

ich es herausgefunden, auf der Grundlage dieser Antwort https://stackoverflow.com/a/17217598 und ersetzt nur die Taste() mit mouseover().

Hier ist mein FeatureContext Code:

/** 
* @When /^I hover over the element "([^"]*)"$/ 
*/ 
public function iHoverOverTheElement($locator) 
{ 
     $session = $this->getSession(); // get the mink session 
     $element = $session->getPage()->find('css', $locator); // runs the actual query and returns the element 

     // errors must not pass silently 
     if (null === $element) { 
      throw new \InvalidArgumentException(sprintf('Could not evaluate CSS selector: "%s"', $locator)); 
     } 

     // ok, let's hover it 
     $element->mouseOver(); 
} 

Ich habe den CSS-Selektor passieren, wenn ich es verwenden, so Nutzung wie folgt aussieht:

... 
When I hover over the element ".about" 
... 
0

Alternate schweben über

/** 
* @Then /^I hover over "([^"]*)"$/ 
*/ 
public function iHoverOver($arg1) 
{ 
    $page = $this->getSession()->getPage(); 
    $findName = $page->find("css", $arg1); 
    if (!$findName) { 
     throw new Exception($arg1 . " could not be found"); 
    } else { 
     $findName->mouseOver(); 
    } 
} 
0
/** 
* works better with css, uses different method for css than xpath 
* @Then /^I mouse over "(?P<selector>[^"]*)"$/ 
*/ 



public function iMouseOver($selector){ 
     $element = $this->find($selector); 
     if($element == null){ 
      throw new Exception('Element '.$selector.' NOT found'); 
     } 
     $this->iFocusOn($selector); 
     if (strstr($selector, '//')) { 
      $element->mouseOver(); 
     } else { 
      $this->mouseOver($selector, '1'); 
     } 
    } 
+0

Ich kann keine Dokumentation auf dem iFocu finden sOn() -Methode, die Sie dort verwenden. – Alpha01

Verwandte Themen