1. 程式人生 > >下拉選擇框select的處理

下拉選擇框select的處理

在使用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()

這是三種處理下拉選擇框的思路,其他的就是定位元素的方法了。