頁面中的<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)瞭解元素二次定位
先定位下拉選單,再定位選單中的具體元素,對下拉選單進行二次定位。
類似於XPath
,css_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()