2017-05-09 6 views
0

ich auf einig Selen Java-Code bin zu arbeiten und ich bin Ausführung von JavaScript-Code ExecuteScript wie unten verwenden:JavaScript klicken, wenn geklickt return true, wenn nicht falsch

 WebElement menu = driver.findElement(By.cssSelector(string1)); 
    ((JavascriptExecutor) driver).executeScript("arguments[0].click();", menu); 

Was ich tun können, will erkennen Wenn das Element angeklickt werden kann, wenn die Schaltfläche deaktiviert ist, wird das Klick-Ereignis nicht ausgelöst, also brauche ich eine Flagge. Das Problem mit JS ist, dass ein click -Ereignis nicht definiert zurückgibt.

Also brauche ich eine Flagge in meinem ExecuteScript, zum Beispiel:

 Object flag_to_stop = ((JavascriptExecutor) driver).executeScript("<<something here if returns true string else returns false string>>, menu); 

    while (Object.toString.equals(<<true string>>)) 

Dann kann ich eine While-Schleife ausführen und wenn flag_to_stop falsch ist, kann ich brechen;

Irgendwelche Vorschläge Jungs ??

Dies ist hauptsächlich eine JavaScript-Frage, der gesamte Java-Code wurde zur Verfügung gestellt.

+0

Ich würde denken, dass ein nicht definierter Fehler würde bedeuten, Sie versuchen, die Veranstaltung auf ein Objekt aufzurufen, die noch erstellt werden muss. Es wäre also ein guter Anfang, herauszufinden, ob es tatsächlich existiert, bevor das Skript ausgeführt wird. – Icewine

+0

Sie können überprüfen, ob das Element aktiviert ist oder nicht, bevor Sie mit ['WebElement.isEnabled()'] (https://seleniumhq.github.io/selenium/docs/api/java/org/openqa/selenium/WebElement.html) klicken # isEnabled--) –

+1

myButton = driver.find_element_by_id ("buttonId") wenn myButton.is_enabled(): myButton.click() Dies sollte es tun und gibt es einen bestimmten Grund Sie die JavascriptExecutor verwenden, wie Sie können Verwenden Sie Selen, um das Gleiche zu tun. –

Antwort

0

können Sie Folgendes versuchen:

boolean flag_to_stop = false; 
    try{ 

    ((JavascriptExecutor) driver).executeScript("arguments[0].click();", menu); 

    flag_to_stop = true; 
    } 
    catch{Exception e){ 

    flag_to_stop = false; 
    } 
Verwandte Themen