『心善淵』Selenium3.0基礎 — 13、Selenium操作下拉選單

繁華似錦Fighting發表於2021-07-03

頁面中的<select></select>標籤,就代表該元素是一個下拉選單。

1、使用Selenium中的Select類來處理下拉選單(推薦)

可以使用Select類中提供的方法來操作頁面中的下拉選單。

(1)操作步驟

# 1.匯入包Select類
from selenium.webdriver.support.select import Select

# 2.定位下拉選單元素

# 3.把定位的下拉選單元素儲存到Select類中
select = Select(下拉選單元素)

# 4.1 通過value屬性來選擇,option標籤的一個屬性值
select.select_by_value('屬性值')

# 4.2 通過選項索引(index)值選擇 索引從0開始
select_by_index(索引值)

# 4.3 通過選項名稱選擇
select_by_visible_text(選擇名稱)

(2)示例

頁面程式碼片段

<!DOCTYPE html>
<html lang="zh-cn">
<head>
    <meta charset="UTF-8">
</head>
<body>
<select name="selecta" id="selectA">
    <option value="bj">A北京</option>
    <option value="sh">A上海</option>
    <option value="gz">A廣州</option>
    <option value="cq">A重慶</option>
</select>
</body>
</html>

指令碼程式碼:

"""
1.學習目標:
    掌握selenium中Select類使用
2.語法(操作步驟)
    2.1匯入Select類
    2.2 定位下拉框的select標籤
    2.3 使用Select類提供的方法選擇選項
        2.3.1 通過選項的value值選擇
            select_by_value("value屬性值")
        2.3.2 通過選項索引值選擇 索引從0開始
            select_by_index(索引值)
        2.3.3 通過選項名稱選擇
            select_by_visible_text(選擇名稱)
3.需求
    在頁面中,使用Select類操作下拉框
"""
# 1.匯入selenium
from selenium import webdriver
from time import sleep
import os
from selenium.webdriver.support.select import Select

# 2.開啟瀏覽器
driver = webdriver.Chrome()

# 3.開啟頁面
url = "file:///" + os.path.abspath("./3.html")
driver.get(url)
sleep(2)
# 4.使用Select類操作下拉框
# 4.1 定位下拉框標籤
selectA = driver.find_element_by_id("selectA")

# 4.2 通過Select類選擇選項
# 建立下拉框物件
# Select(定位下拉框的元素--select標籤元素)
select = Select(selectA)

# 通過value值選擇選項(選擇上海)
select.select_by_value("sh")
sleep(2)

# 通過index值選擇選項,索引從0開始(選擇廣州)
select.select_by_index(2)
sleep(2)

# 通過text值選擇選項(選擇北京)
select.select_by_visible_text("A北京")
sleep(2)

# 5.關閉瀏覽器
driver.quit()

2、下拉選單物件的其他操作(瞭解)

呼叫如下方法,選擇下拉框中的選項

操作 說明
all_selected_options 檢視所有已選
first_selected_option 檢視第一個已選
is_multiple 檢視是否是多選
options 檢視選項元素列表

取消選擇:

操作 說明
deselect_by_value() 通過option標籤的value屬性來選擇
deselect_by_index() 通過選項索引(index)值選擇 索引從0開始
deselect_by_visible_text() 通過選項名稱選擇

示例

同上邊示例,具體看獲得的select下拉選單元素物件的操作。

# 1.匯入selenium
from selenium import webdriver
from time import sleep
import os
from selenium.webdriver.support.select import Select

# 2.開啟瀏覽器
driver = webdriver.Chrome()

# 3.開啟頁面
url = "file:///" + os.path.abspath("./3.html")
driver.get(url)
sleep(2)

# 4.使用Select類操作下拉框
# 4.1 定位下拉框標籤
selectA = driver.find_element_by_id("selectA")

# 4.2 通過Select類選擇選項
# 建立下拉框物件
# Select(定位下拉框的元素--select標籤元素)
select = Select(selectA)

"""
我們就以first_selected_option舉個例子,
其他的操作同理,自己嘗試。
"""
# 5.下拉框元素物件的操作
# 下拉框物件直接呼叫操作
# 5.1 列印下拉框第一個已選選項
print("列印第一個已選選項", select.first_selected_option)

# 5.2 檢視第一個已選選項物件的方法
print(dir(select.first_selected_option))

# 5.3 通過上一步,我們檢視選項物件有一個text方法
# 是獲取選項的名稱
print(select.first_selected_option.text)  # A北京

# 6.關閉瀏覽器
driver.quit()

3、通過元素二次定位方式操作下拉選單(重點)

(1)瞭解元素二次定位

先定位下拉選單,再定位選單中的具體元素,對下拉選單進行二次定位。

類似於XPathcss_selector層級定位。

在實際測試過程中,一個頁面可能有多個屬性基本相同的元素,如果要定位到其中的一個,這時候可以使用層級定位或者元素的二次定位。

即:先定位到父元素,然後再通過父元素定位子孫元素。

(2)示例:

頁面程式碼片段

<!DOCTYPE html>
<html lang="zh-cn">
<head>
    <meta charset="UTF-8">
</head>
<body>
<select name="selecta" id="selectA">
    <option value="bj">A北京</option>
    <option value="sh">A上海</option>
    <option value="gz">A廣州</option>
    <option value="cq">A重慶</option>
</select>
</body>
</html>

指令碼程式碼

"""
1.學習目標:
    掌握二次定位的方法
2.語法(操作步驟)
    2.1 定位父標籤
    2.2 通過父標籤定位子標籤
3.需求
    在頁面中,使用二次定位方法,操作下拉選單
4.總結
    二次定位:通過元素找另外元素。
    和xpath,css_selector層級定位類似。

    除了元素的基本操作外,元素也可以定位其他元素。
    元素.click()/clear()/send_keys()/find_element_xxx

    注意:二次定位不止使用在下拉選單操作中。
"""
# 1.匯入selenium
from selenium import webdriver
from time import sleep
import os

# 2.開啟瀏覽器
driver = webdriver.Chrome()

# 3.開啟頁面
url = "file:///" + os.path.abspath("./3.html")
driver.get(url)
sleep(2)

# 4.二次定位操作下拉選單
# 4.1 先定位父級元素--select標籤元素
select = driver.find_element_by_name("selecta")

# 4.2 通過select標籤元素定位option子標籤
option = select.find_element_by_css_selector("option[value='gz']")

# 4.3 點選選擇的選項
option.click()
sleep(2)

# 5.關閉瀏覽器
driver.quit()

相關文章