下拉選擇框select的處理
阿新 • • 發佈:2019-01-27
在使用Selenium做自動化測試的時候,難免會碰到下拉選擇框,下面幾種方式是比較常用的處理方式。
為了方便使用,我自己寫了一個HTML的demo:
程式碼如下:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>selenium 處理 下拉框</title>
</head>
<body bgcolor="#f0f8ff">
<h3 align="center">selenium下拉框處理方法</h3 >
<hr />
<td align="center">下拉框demo</td>
<br />
<select id="selectdemo" class="select" name="selectdemo">
<option name="jiaolian" value="210101" selected="selected">教練人員</option>
<option name="pingpang" value="210102">乒乓球球員</option >
<option name="lanqiu" value="210103 ">籃球運動員</option>
<option name="zuqiu" value="210103 ">足球運動員</option>
<option name="youyong" value="210402">游泳運動員</option>
<option name="tiaoshui" value="210403">跳水運動員</option>
</select >
</body>
</html>
1. 使用Webdriver提供的Select類的方法:
1)匯入依賴
# 兩種方法任選其一,都是指向同一個檔案
from selenium.webdriver.support.ui import Select
from selenium.webdriver.support.select import Select
2)Select類提供了3個方法用於選擇下拉選擇框中的其一
select_by_value(value)
select_by_index(index)
select_by_visible_text(text)
比如選擇籃球運動員選項:
# 例項化一個Select類的物件
selector = Select(driver.find_element_by_id("selectdemo"))
# 下面三種方法用於選擇"籃球運動員"
selector.select_by_index("2") # 通過index進行選擇,index從0開始
selector.select_by_value("210103") # 通過value屬性值進行選擇
selector.select_by_visible_text("籃球運動員") # 通過標籤顯示的text進行選擇
主要使用select_by_index()的時候,如果option中有index屬性,會優先通過index屬性選擇
3)Select類還提供了一些用於取消選中的方法
deselect_all() # 取消全選
deselect_by_value(value) # 通過value屬性取消選擇
deselect_by_index(index) # 通過index取消選擇
deselect_by_visible_text(text) # 通過text取消選擇
2. 先定位select 然後在定位option
# 定位到下拉選擇框
selector = driver.find_element_by_id("selectdemo")
# selector = driver.find_element_by_xpath(".//*[@id='selectdemo']")
# 選擇"籃球運動員"
selector.find_element_by_xpath("//option[@value='210103']").click()
# selector.find_elements_by_tag_name("option")[2].click()
3. 直接通過xpath層級標籤定位
# 直接通過xpath定位並選擇"籃球運動員"
driver.find_element_by_xpath(".//*[@id='selectdemo']/option[3]").click()
這是三種處理下拉選擇框的思路,其他的就是定位元素的方法了。