2016-06-17 32 views
1

Ich verwende Selenium (Python), um einen Wert aus einer Dropdown-Liste auszuwählen, aber ich habe einige Probleme.Probleme beim Identifizieren eines Werts in einem Dropdown (Selenium Python)

Wenn ich Selenium IDE verwenden, identifiziert es die Dropdown-als-Taste wie folgt:

driver.find_element_by_xpath("(//button[@type='button'])[2]") 

Ich habe dann versucht, einen Wert aus der Liste auswählen, indem Sie:

Select(driver.find_element_by_xpath("(//button[@type='button'])[2]")).select_by_visible_text("Africa/Juba") 

That funktioniert nicht, weil "Auswahl funktioniert nur für Elemente, nicht für Schaltflächen.

Wenn ich das Element inspiziere, kann ich nichts Nützliches sehen, das ich verwenden kann, um das Dropdown zu identifizieren (das ist einfach einige davon):

<select selectpicker="" ng-options="timezone for timezone in model.timezones" ng-model="newAccount.timeZoneId" class="form-control ng-pristine ng-untouched ng-valid bs-select-hidden" data-live-search="true"> <option value="0" label="Africa/Abidjan">Africa/Abidjan</option><option value="1" label="Africa/Accra">Africa/Accra</option> <option value="2" label="Africa/Addis_Ababa">Africa/Addis_Ababa</option> <option value="3</option></select> 

Gibt es eine andere Möglichkeit, dass ich einen Wert aus der Dropdown-Liste auswählen kann?

Antwort

2

Das Element, das Sie mit Ihrem Xpath erhalten, ist ein button. Sie können Select nicht mit Schaltflächen verwenden. Sie möchten das select Element erhalten. Versuchen Sie folgendes:

Select(driver.find_element_by_xpath("//select[@ng-model='newAccount.timeZoneId']")).select_by_visible_text("Africa/Juba") 

bearbeiten Das Problem, das Sie macht Sinn haben, werden. In der HTML, die Sie freigegeben haben, gibt es kein option Element, das den Text Africa/Juba enthält. Wenn Sie Africa/Juba zu Africa/Algiers ändern, sollte es ohne Problem funktionieren. In den Kommentaren haben Sie dieses Element erwähnt: <span class="text">Africa/Juba</span>. Dies fehlt in Ihrem Beispiel HTML. Ein span innerhalb eines select sollte jedoch nicht funktionieren. Sie können die Klasse Select im Zusammenhang mit options verwenden.

+0

Ich habe versucht, das laufen, aber ich habe einen Fehler sagte: „selenium.common.exceptions.ElementNotVisibleException: Nachricht: Element nicht sichtbar: Element ist nicht sichtbar ist und nicht manipuliert werden kann“ Auch wenn unten der Tropfen hat erweitert und die Option ist auf dem Bildschirm sichtbar – ChrisG29

+0

@Chris Es ist schwer zu sagen, was das Problem ist. Ist die Seite öffentlich, damit ich es ausprobieren kann? – RemcoW

+0

Leider nicht, es wird immer noch entwickelt. Wäre es hilfreich, wenn ich nach dem Drop-Down-Code fragen würde, um eine ID hinzuzufügen, damit Selenium sich leichter identifizieren kann? Es scheint ein Problem zu haben, das Dropdown zu erkennen, wenn es diesen XPath verwendet – ChrisG29