2012-10-08 6 views
6

Ich arbeite seit einigen Monaten mit Selenium WebDriver und habe ein Problem mit einem Dropdown-Menü in einer Webanwendung, an der ich gerade arbeite .Selenium WebDriver - Auswahlmenü in Chrome unter Mac OS X kann nicht geschlossen werden

Was passiert, ist, dass der Test die Seite öffnet, mehrere Elemente auf der Seite überprüft, indem man sie findet und dann sicherstellt, dass sie angezeigt werden. Danach wird ein Text in verschiedene Felder eingegeben, dann wird das Optionsauswahlfeld angeklickt, um das Dropdown-Menü zu öffnen. Anschließend durchläuft der Test alle Optionen im Dropdown-Menü, bis er die gewünschte Option gefunden hat, und klickt dann auf diese Option.

An dieser Stelle ist die Option ausgewählt, aber das Dropdown-Menü ist nicht geschlossen.

Ich habe versucht, klicken Sie auf die Option erneut auswählen, aber dies hat keine Wirkung, während des restlichen Tests werden andere Seiten navigiert und das Menü nicht geschlossen.

Dann wird die Seite gespeichert und dann weg navigiert. Das Dropdown-Menü bleibt jedoch so lange bestehen, bis der Browser geschlossen wird.

Dies ist der Code aus der App:

<select id="options" name="options" class="options"> 
<option value="option1 (auto)">option1 (auto)</option> 
<option value="option2">option2</option> 
<option value="option3">option3</option> 
</select> 

Antwort

1

ich das Problem mit einer Arbeit um gelöst zu haben, da dies der einzige Weg ist, die ich gefunden habe, zu arbeiten.

Erstens danke eugene.polschikov für Ihre Antwort, obwohl es das Problem nicht gelöst hat, hat es mein Auge etwas geöffnet, ich hatte keine Kenntnis von action builder, und es hat mir einige großartige Ideen über zukünftige Tests gegeben. Danke auch an alle, die dies gelesen haben und über eine mögliche Lösung nachgedacht haben.

Die Problemumgehung, die jetzt vorhanden ist, ist, dass die Auswahl nicht geöffnet ist. Die Art und Weise, wie der Code funktioniert, ist, dass er die Liste öffnen und die gewünschte finden würde. Klicken Sie darauf. An dieser Stelle wird die Auswahl nicht geschlossen, so dass der Code die Auswahl nicht mehr öffnet auf die versteckte Option, um es auszuwählen, nicht 100%, was ich wollte, aber es funktioniert.

Happy Programmierung, Ben.

2

die erste Lösung, die ich versuchen würde, ist auf unterschiedliche Weise auf die Menüoptionen klicken. Selenium API bietet uns diese Möglichkeit. 1) Lokalisieren z.B. css Selektoren der Elemente.

String cssOption1 = "select[id='options']>option[value='option1 (auto)']"; 
String cssOption2 = "select[id='options']>option[value='option2']"; 
String cssOption3 = "select[id='options']>option[value='option3']"; 

Vergessen Sie auch nicht, um zu überprüfen, dass Sie Elemente richtig zB gefunden .in firepath, Firebug Addon in FFox: proper location on web element in firepath

Ansatz 1

driver.findElement(By.cssSelector(cssOption2)).click(); 

Ansatz 2 mit Aktionen Builder API

WebElement mnuOptionElement; 
mnuOptionElement = driver.findElement(By.cssSelector(cssOption2)); 
Actions builder = new Actions(driver); 
// Move cursor to the Main Menu Element 
builder.moveToElement(mnuOptionElement).click(); 

weitere Informationen über Aktionen Builder Sie here

Ansatz 3 mit jsExecutor auf Web-Element klicken, um zu bekommen. Arbeitet immer für mich in allen Situationen.

JavascriptExecutor js = (JavascriptExecutor) driver; 
     StringBuilder stringBuilder = new StringBuilder(); 
     stringBuilder.append("var x = $(\'"+cssOption2+"\');"); 
     stringBuilder.append("x.click();"); 
     js.executeScript(stringBuilder.toString()); 

Hoffnung das funktioniert für Sie

+0

Danke für Sie zu beantworten, aber egal, wie ich auf dem Dropdown klicken unten Menü bleibt offen. Ich habe auch verschiedene Möglichkeiten versucht, auf die Auswahl zu klicken, um zu versuchen, sie zu schließen, aber ach, kein Glück. –

+0

Haben Sie versucht, mit Javascript zu klicken? Es ist der dritte, den ich beschrieben habe –

+0

Ja, ich bin nicht auf Java-Skript, aber ich selbst und ein Mitarbeiter versucht JQuery und Javascript und vergeblich. Wir waren immer in der Lage, die Drop-Box zu öffnen, aber wir konnten es nie schließen, wir versuchten, Tasten drücken und Mausklick, aber kein Glück. Nochmals vielen Dank, –

0

Wenn ein Mensch kann Flucht drücken Sie die Combobox zu verlassen, können Sie, dass durch die Umstellung auf das aktive Element in Selen tun:

from selenium.webdriver.common.keys import Keys 
    element = driver.switch_to.active_element 
    element.send_keys(Keys.ESCAPE)