반응형

셀레니움, 드롭다운 Select 상자 항목 선택하기 

 

글. 수알치 오상문 

 

다음과 같은 Select 상자가 있다고 하자. 

이 상자에 있는 과일 중에서 Mango를 셀레니움에서 선택하려고 한다.

예제에 사용한 HTML 코드는 다음과 같다.

 

<html>
<head><title>hello</title></head>
<body>
Select!!!
<select id="fruits01" class="select" name="fruits">
  <option value="0">Choose your fruits:</option>
  <option value="1">Banana</option>
  <option value="2">Mango</option>
  <option value="3">Apple</option>  
  <option value="2">Pear</option>
</select>  
</body>
</html>

 

다음은 셀레니움 코드이다. 

 

from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.chrome.service import Service
from webdriver_manager.chrome import ChromeDriverManager
import time

driver = webdriver.Chrome(service=Service(ChromeDriverManager().install())) 
WebDriverWait(driver, 3) 
driver.get('http://127.0.0.1:5000/select')
WebDriverWait(driver, 5)
time.sleep(0.5)

driver.find_element(By.XPATH, "//*[@id='fruits01']/option[text()='Mango']").click()

input("Quit? :")
driver.quit()

 

셀레니움 코드 중에서 다음 내용이 select 상자 항목을 바꾸는 부분이다.

XPATH 방식으로 찾아가서 text가 Mango인 것을 클릭하여 선택하는 방식이다.

 

driver.find_element(By.XPATH, "//*[@id='fruits01']/option[text()='Mango']").click()

 

[참고] 다음처럼 Select 모듈을 이용하는 방법은 더 유용하게 쓸 수 있다. 

from selenium import webdriver
from selenium.webdriver.support.ui import Select
driver = webdriver.Firefox()  # Chrome()
url = "접속주소"
driver.get('url')
# id를 이용하여 select 상자를 찾음
select = Select(driver.find_element_by_id('fruits01'))
# 선택 항목이 나타나게 만듦
select.select_by_visible_text('Mango')
# value를 이용하여 선택 (Mango는 2) 
select.select_by_value('2')

 

[화면] 셀레니움을 이용하여 Select 상자 선택 항목을 Mango로 변경했음

 

반응형

+ Recent posts