2016-08-26 2 views
2

Ich wollte Seite in PythonSelenium, die AngularJS verwendet. Es enthält eine Auswahloption und ich habe eine Reihe von Optionen ausprobiert, um es auszuwählen, aber es schlägt fehl.Wählen Sie Dropdown in AngularJS-Anwendung von Python Selen

<select id="xtzpp001" ng-model="..." ng-options="...." ng-change="changeView()"> 
 
    <option value class>select</option> 
 
    <option value="200" selected="selected">Student 1</option> 
 
    <option value="201">Student 2</option> 
 
    <option value="202">Student 3</option> 
 
</select>

Wie gesagt, habe ich versucht, ---

driver.find_element_by_xpath('//select[@id="xtzpp001"]/option[contains(text(), "Student 2")]').click() 

dann

from selenium.webdriver.support.ui import Select 

select = Select(driver.find_element_by_id('xtzpp001')) 
for i in select.options: 
    .......etc etc 

habe ich auch explizit wartet.

Ich kam zu wissen, dass Pytractor kann mir in dieser Situation helfen (nicht aktiv entwickelt, obwohl), aber ich bin nicht in der Lage, eine Dokumentation über die Option mit Pytractor zu finden.

Gibt es eine andere Möglichkeit, dies zu erreichen? oder pytractor äquivalent?

Oder kann ich Winkelmesser (oder irgendein Javascript-Framework) verwenden, um in Javascript von dieser Stufe aus zu testen und die Ergebnisse in Python ??

+0

ich bin wieder tun alles in Javascript mit Selen bereit, wenn es möglich ist, AngularJS Seite zu automatisieren. Irgendwelche Vorschläge? –

Antwort

0

Sie können auch Aktionen verwenden den Menüpunkt zu klicken, wird hier ein Beispiel:

menu = driver.find_element_by_css_selector(".nav") 
hidden_submenu = driver.find_element_by_css_selector(".nav #submenu1") 

ActionChains(driver).move_to_element(menu).click(hidden_submenu).perform() 
0

Verwenden Sie die Select-Klasse von selen.webdriver.support.ui. Übergeben Sie das ausgewählte Webelement an den Konstruktor. Verwenden Sie selectByVisibleText. Siehe die Antwort von @alecxe in der Post - Selenium - Python - drop-down menu option value

+0

Ich habe schon versucht, diese Optionen, einschließlich select_by_index(), select_by_value() von http://selenium-python.readthedocs.io/api.html#module-selenium.webdriver.support.select –

+0

Welchen Fehler bekommen Sie? Oder was passiert im Browser? – Grasshopper

+0

löst NoSuchElementException aus –

0

Wenn Sie alle möglichen Versuch versucht, aber nie Erfolg bekam, sollten Sie versuchen, execute_script() wie unten: -

element = driver.find_element_by_id("xtzpp001") 

driver.execute_script("var select = arguments[0]; for(var i = 0; i < select.options.length; i++){ if(select.options[i].text == arguments[1]){ select.options[i].selected = true; } }", element, "Student 2"); 
Verwandte Themen