Das Ausführen eines Klicks über JavaScript weist einige Verhaltensweisen auf, die Sie beachten sollten. Wenn beispielsweise der Code, der an das onclick
-Ereignis Ihres Elements gebunden ist, window.alert()
aufruft, kann es sein, dass Ihr Selenium-Code hängt, abhängig von der Implementierung des Browser-Treibers. Das heißt, Sie können die Klasse JavascriptExecutor
verwenden, um dies zu tun. Meine Lösung unterscheidet sich jedoch von den anderen vorgeschlagenen, da Sie immer noch die WebDriver-Methoden zum Suchen der Elemente verwenden können.
// Assume driver is a valid WebDriver instance that
// has been properly instantiated elsewhere.
WebElement element = driver.findElement(By.id("gbqfd"));
JavascriptExecutor executor = (JavascriptExecutor)driver;
executor.executeScript("arguments[0].click();", element);
Sie sollten auch beachten Sie, dass Sie besser dran sein könnte, die click()
Methode der WebElement
Schnittstelle, aber disabling native events vor Ihrem Fahrer Instanziierung. Dies würde das gleiche Ziel erreichen (mit denselben potenziellen Einschränkungen), aber Sie nicht zwingen, Ihr eigenes JavaScript zu schreiben und zu pflegen.
ich nicht bekommen es - Sie wollen die '.click()' JavaScript-Funktion, dass binded abzufeuern Taste? Oder benötigen Sie etwas wie http://code.google.com/p/selenium/wiki/FrequentlyAskedQuestions#Q:_How_do_I_execute_Javascript_directly? – WTK