2016-08-26 4 views
2

AngularJS을 사용하는 PythonSelenium의 페이지를 테스트하고 싶습니다. 그것은 선택 옵션을 포함하고 그것을 선택하는 옵션을 시도했지만 실패합니다. Python Selenium의 AngularJS 응용 프로그램에서 드롭 다운을 선택하십시오

내가 말했듯이

<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>

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

from selenium.webdriver.support.ui import Select 

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

는 또한 명시 적으로 대기를 사용했다.

필자가 파이 트렉터가이 상황에서 도움이 될 수 있다는 사실을 알게되었지만 (실제로 활발하게 개발되지는 않음), 파이 트랙터를 사용하는 선택 옵션에 관한 문서는 찾을 수 없습니다.

이 작업을 수행 할 수있는 다른 방법이 있습니까? 또는 pytractor 이에 상응하는?

또는 각도기 (또는 자바 스크립트 프레임 워크)를 사용하여 Javascript에서 테스트를 계속하고 Python에 결과를 통합/콜백 할 수 있습니까 ??

+0

AngularJS 페이지를 자동화 할 수 있으면 Selenium을 사용하여 Javascript의 모든 작업을 다시 수행 할 준비가되었습니다. 어떤 제안? –

답변

0

당신은 또한 작업을 사용할 수 있습니다 메뉴 항목을 클릭하면 다음과 같은 예가 표시됩니다.

0

selenium.webdriver.support.ui의 Select 클래스를 사용하십시오. 선택 web 요소를 생성자에 전달합니다. selectByVisibleText를 사용하십시오. 포스트에 @alecxe으로 대답을 참조하십시오 - Selenium - Python - drop-down menu option value

+0

나는 select_by_index(), select_by_value() (http://selenium-python.readthedocs.io/api.html#module-selenium.webdriver.support.select)를 포함하여 이러한 옵션을 사용해 보았습니다. –

+0

어떤 오류가 발생합니까? 아니면 브라우저에서 무슨 일이 일어나고 있습니까? – Grasshopper

+0

은 NoSuchElementException을 발생시킵니다. –

0

을 모든 가능한 시도를 시도했지만 성공을 가지고하지 않은 경우, 당신은 다음과 execute_script()를 사용하여 시도해야합니다 : -

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"); 
관련 문제