2016-09-19 1 views
0

Der Versuch, ein Formular mit Python und Selen automatisch zu füllen. Drop-Down-Menü html ist:Dropdown-Menüs in Python/Selen

<select id="typeOfTeacher" class="chosen-select-no-single ng-untouched ng-dirty ng-valid-parse ng-valid ng-valid-required" required="" ng-class="{ 'has-error' : positionDetailForm.typeOfTeacher.$invalid && !positionDetailForm.typeOfTeacher.$pristine }" ng-change="vm.setRequired()" tabindex="-1" ng-model="vm.data.typeOfTeacher" name="typeOfTeacher" data-placeholder="Select" style="display: none;"> 
<option value="" disabled="" selected="">Select</option> 
<option class="ng-binding ng-scope" value="1" ng-repeat="teacherType in vm.teacherTypes">No position at the moment</option> 
<option class="ng-binding ng-scope" value="2" ng-repeat="teacherType in vm.teacherTypes">Supply</option> 
<option class="ng-binding ng-scope" value="3" ng-repeat="teacherType in vm.teacherTypes">Permanent</option> 
</select> 

Python-Code ist:

elem = Select(browser.find_element_by_id('typeOfTeacher')) 
elem.select_by_value("1") 

Fehler ist "Element derzeit nicht sichtbar ist und nicht mit werden interagierten kann".

+0

Hast du mit 'WevDriverWait' versuchte vor Interaktion sichtbar, bis Element zu warten ?? –

Antwort

0

Ich habe nicht die Python Select-Methode verwendet, aber ich würde vermuten, dass die Fehlermeldung bedeutet, dass das Menü nicht geöffnet wird, und daher ein Element im Menü immer noch ausgeblendet ist und nicht mit interagiert werden kann.

versuchen, etwas wie folgt aus:

element = driver.find_element_by_id('typeOfTeacher').click() 
driver.find_element_by_css_selector("[value=\"1\"]").click() 
0

Diese

element = driver.find_element_by_id('typeOfTeacher').click() 
element.find_element_by_xpath(".//option[@value='1']").click() 
0

funktionieren würde Es sieht aus wie Problem Timing. Sie sollten versuchen, Waits zu verwenden.

Ich würde Ihnen vorschlagen, WebDriverWait verwenden warten, bis Dropdown sichtbar vor Interaktion wie folgt: -

from selenium import webdriver 
from selenium.webdriver.common.by import By 
from selenium.webdriver.support.ui import WebDriverWait 
from selenium.webdriver.support import expected_conditions as EC 

element = WebDriverWait(driver, 10).until(EC.visibility_of_element_located((By.ID, "typeOfTeacher"))) 

select = Select(element) 
select.select_by_value("1")