2016-07-11 4 views
0

Wir haben zwei Schaltfläche mit dem Namen „Inschrijven“ in Tab1 Abschnitt und Tab2 Abschnitt als enter image description hereWie auf OnClick Attribut in Behat + Nerz zugreifen?

in Bild unten gezeigt
Tab 1: 
<span class="form-submit-wrapper"><input type="submit" id="edit-submit--3" name="op" value="Inschrijven" class="form-submit"></span> 

Tab 2: 
<span class="form-submit-wrapper"><input onclick="return validate_course_anywhere(this)" type="submit" id="edit-submit--22" name="op" value="Inschrijven" class="form-submit"></span> 

When I click element with id "edit-submit--3" Dieses Behat Code Szenario in Tab 1 Abschnitt gearbeitet wird, aber nicht in Tab 2 Abschnitt (When I click element with id "edit-submit--22")

       /** 
           * @When /^I click element with id "([^"]*)"$/ 
           */ 
           public function iClickElementWithId($class) { 
              $locator = "#$class"; 
              $element = $this->getSession()->getPage()->find('css', $locator); 

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

              $element->click(); 
              $this->getSession()->wait(1000); 
           } 

Aber Fehlermeldung wird in Tab 2 Zeige:

Exception thrown by (//html/descendant-or-self::*[@id = 'edit-submit--22'])[1] 
Element is not clickable at point (813.5, 16.666671752929688). Other element would receive the click: <a href="/certificering" title="" class="menu__link"></a> 

Antwort

0

Es scheint, dass der Selektor in Ordnung ist, das Problem hier ist, dass nicht anklickbar ist und ein anderes Element vorne ist und den Klick erhält.

Einige der möglichen Probleme: 1. Warten auf das Element sichtbar sein 2. Sie haben zwei Elemente mit derselben ID und dem ersten gefunden wird, aber nicht anklickbar 3. Warten auf die Seite geladen werden wenn

benötigt

um die onClick zu verwenden Attribut Sie einen CSS-Selektor wie verwenden: [Onclick * = ‚some_value_from_attribute‘]

Sie sollten eine Methode, um durch die Auswahltaste und nicht bestimmte Methode für nur ein Attribut.

Eine weitere zu vermeidende Sache ist die Verwendung von blinden Wartezeiten. Sie sollten versuchen, bedingte Wartezeiten zu verwenden.

Verwandte Themen