반응형

파이썬, 셀레니움 선택된 목록에서 항목 작업하기 (select 요소)

 

글. 수알치 오상문 

 

[참고] AttributeError: 'WebElement' object has no attribute 'select_by_visible_text'

셀레니움 버전이 바뀌면서 select_by_visible_text 메소드는 더이상 지원하지 않는다. 대신에  Select 모듈을 사용해야 한다.

 

 

1. 아래 모듈을 임포트하자. 그러면 select 요소에 대한 기능을 이용할 수 있다.

from selenium.webdriver.support.select import Select

 

2. 선택한 select 요소를 Select로 지정하자.

# find_element로 선택한다.  
select_element = driver.find_element(By.ID,'selectElementID')
# 선택한 요소의 목록을 다루도록 Select로 선택한다.
select_object = Select(select_element)

 

3. 선택한 select 요소가 아래와 같다고 하자. 

<select>
 <option value=value1>Bread</option>
 <option value=value2 selected>Milk</option>
 <option value=value3>Cheese</option>
</select>

 

4. select 항목 선택하여 가져오기

# <select> 요소의 첫 번째를 가리진다.
select_object.select_by_index(1)
# <option> 값을 기준으로 선택한다.
select_object.select_by_value('value1')
# <option> 값에서 보이는 텍스트를 기준으로 선택한다.
select_object.select_by_visible_text('Bread')

 

5. 선택된 항목들 가져오기

# select 목록에서 선택된 항목들 가져오기
all_selected_options = select_object.all_selected_options
# 선택된 첫 항목 가져오기
first_selected_option = select_object.first_selected_option

 

6. 선택된 항목의 옵션 가져오기 

# 선택된 항목의 옵션 가져오기 
all_available_options = select_object.options

 

7. 선택 해제하기

# 인덱스를 이용하요 선택 해제
select_object.deselect_by_index(1)
# value 속성으로 선택 해제
select_object.deselect_by_value('value1')
# 보이는 텍스트를 이용하여 선택 해제
select_object.deselect_by_visible_text('Bread')
# 요소를 모두 선택 해제
select_object.deselect_all()

 

8. 다중 선택인지 확인하기 

does_this_allow_multiple_selections = select_object.is_multiple

 

 

반응형

+ Recent posts