Selenium WebElement.click () vs. Javascript Klick-Ereignis

8

Ich habe mich gefragt, wie die Unterschiede zwischen dem Aufruf der Methode click() des WebElement versus das Element nach ID zu finden und das click -Ereignis mit JavaScript auszulösen.

Nur um in der ersten Methode klar zu sein, rufe ich das .click() einer Instanz von WebElement auf :

%Vor%

Die zweite Technik ist:

%Vor%

Ich bin daran interessiert, alle Unterschiede zwischen diesen beiden Techniken für das Klicken auf Web-Elemente zu kennen, und auch die Vor- und Nachteile von beiden.

    
daniele 04.07.2014, 09:29
quelle

2 Antworten

9

Webdriver verwendet die native Unterstützung eines Browsers für die Zuordnung des DOM-Elements zum WebElement-Objekt mithilfe von id / xpath usw.

Das JavascriptExecutor.executeScript führt ein externes Skript im Kontext des aktuell ausgewählten Browserfensters aus. (ähnlich wie bei einem Augmented-Browsing-Tool wie fettaffe , falls du jemals benutzt hast), und für den Fall, dass das Skript ein DOM-Element zurückgibt, das in das WebElement-Objekt konvertiert wurde.

Man kann auch sagen, dass der von WebDriver in einem Browser simulierte Klick ähnlich ist wie der tatsächliche Benutzer im Vergleich zu einem, der mit Javascript aufgerufen wird.

In Wirklichkeit können mit WebDriver nicht alle Ereignisse fehlerfrei mit allen Webbrowsern, tatsächlich auch mit verschiedenen Versionen desselben Webbrowsers, automatisiert werden. (d. h. unterschiedliche Versionen von IE, FF usw. verhalten sich anders). Immer noch WebDriver ist das fast beste Tool dafür verfügbar.

Einmal (~ 4 Jahre zurück) auf einer bestimmten Version von IE haben wir beobachtet, dass wir keine Rechtsklick senden können oder Mauszeiger über generierte Menüverknüpfungen sind, also haben wir js verwendet, um das zu simulieren, was sehr browserunabhängig funktioniert Weg. So können Sie jetzt abschließen, für was die Ausführung von externem Javascript gut sein kann.

Außerdem gibt es automatisierte Web-Testing-Frameworks, die JavaScript für alles anstelle der nativen Unterstützung des Browsers verwenden. z.B. : Ссылка

Hinweis:

Shail016 04.07.2014, 10:19
quelle
1

Diese Art von Tests sind E2E (Ende zu Ende) nicht BDD .

Erste - wird jetzt ausgeführt, um die nächste Aktion auszuführen, müssen Sie eine Funktion schreiben, die die Ausführung verzögert, um z. B. neue Daten vom Server herunterzuladen.

Der zweite Code return promise - Ссылка - "Plant einen Befehl an Klicken Sie auf dieses Element. "- Sie können dann Callback verwenden, um die nächste Aktion auszuführen.

    
Krzysztof Safjanowski 04.07.2014 10:06
quelle