Selenium:下拉框處理(Select模塊)


 在UI自動化測試過程中,經常會遇到一些下拉框,如果我們基於Webdriver操作的話就需要click兩次,而且很容易出現問題,實際上Selenium給我們提供了專門的Select(下拉框處理模塊)。


 引用路徑

from selenium.webdriver.support.select import Select

Select操作

# 通過select選項的索引來定位選擇對應選項(從0開始計數)
Select(s).select_by_index(5)
 
# 通過選項的value屬性值來定位
Select(s).select_by_value('2')
 
# 通過選項的文本內容來定位
Select(s).select_by_visible_text('牡丹江')
 
# 返回第一個選中的optionElement對象
Select(s).first_selected_option
 
# 返回所有選中的optionElement對象
Select(s).all_selected_options
 
# 取消所有選中的option
Select(s).deselect_all()
 
# 通過option的index來取消對應的option
Select(s).deselect_by_index(1)
 
# 通過value屬性,來取消對應option
Select(s).deselect_by_value('')
 
# 通過option的文本內容,取消對應的option
Select(s).deselect_by_visible_text('')

 

 

詳解:

我們在操作網頁時,經常會碰到下拉框,比如百度的搜索設置

 

有多種方法可以對下拉框中的元素進行選擇

一、間接選擇


 

先定位到下拉框,再定位其中的選項

代碼:

# coding = utf-8
from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains
from time import sleep
# 驅動文件路徑
driverfile_path = r'D:\coship\Test_Framework\drivers\chromedriver.exe'
# 啟動瀏覽器
driver = webdriver.Chrome(executable_path=driverfile_path)
# 打開百度首頁
driver.implicitly_wait(10)
driver.get(r'https://www.baidu.com/')
# 移動鼠標到設置上,再點擊搜索設置
set = driver.find_element_by_link_text("設置")
ActionChains(driver).move_to_element(set).perform()
driver.find_element_by_link_text("搜索設置").click()
# 定位下拉框,選擇其中的選項
sel = driver.find_element_by_css_selector("select#nr")
sel.find_element_by_css_selector("option[value='20']").click()
# 退出
sleep(5)
driver.quit()

二、直接選擇


 

直接定位到下拉框中的選項

代碼:

# coding = utf-8
from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains
from time import sleep
# 驅動文件路徑
driverfile_path = r'D:\coship\Test_Framework\drivers\chromedriver.exe'
# 啟動瀏覽器
driver = webdriver.Chrome(executable_path=driverfile_path)
# 打開百度首頁
driver.implicitly_wait(10)
driver.get(r'https://www.baidu.com/')
# 移動鼠標到設置上,再點擊搜索設置
set = driver.find_element_by_link_text("設置")
ActionChains(driver).move_to_element(set).perform()
driver.find_element_by_link_text("搜索設置").click()
# 直接定位到選項
driver.find_element_by_css_selector("select#nr>option:nth-child(2)").click()
# 退出
sleep(5)
driver.quit()

三、Select模塊


 

webdriver提供了一個Select模塊來專門對下拉框進行處理,使用時需要導入Select模塊

 

其中有三種定位選項的方法:

  • select_by_index():索引定位(從0開始)
  • select_by_value():value屬性定位
  • select_by_visible_text():選項的文本屬性

1、index定位

代碼:

# coding = utf-8
from selenium import webdriver
from selenium.webdriver.support.select import Select
from selenium.webdriver.common.action_chains import ActionChains
from time import sleep
# 驅動文件路徑
driverfile_path = r'D:\coship\Test_Framework\drivers\chromedriver.exe'
# 啟動瀏覽器
driver = webdriver.Chrome(executable_path=driverfile_path)
# 打開百度首頁
driver.implicitly_wait(10)
driver.get(r'https://www.baidu.com/')
# 移動鼠標到設置上,再點擊搜索設置
set = driver.find_element_by_link_text("設置")
ActionChains(driver).move_to_element(set).perform()
driver.find_element_by_link_text("搜索設置").click()
# 通過索引定位
sel = driver.find_element_by_css_selector("select#nr")
Select(sel).select_by_index(1)
# 退出
sleep(5)
driver.quit()

2、value定位

代碼:

# coding = utf-8
from selenium import webdriver
from selenium.webdriver.support.select import Select
from selenium.webdriver.common.action_chains import ActionChains
from time import sleep
# 驅動文件路徑
driverfile_path = r'D:\coship\Test_Framework\drivers\chromedriver.exe'
# 啟動瀏覽器
driver = webdriver.Chrome(executable_path=driverfile_path)
# 打開百度首頁
driver.implicitly_wait(10)
driver.get(r'https://www.baidu.com/')
# 移動鼠標到設置上,再點擊搜索設置
set = driver.find_element_by_link_text("設置")
ActionChains(driver).move_to_element(set).perform()
driver.find_element_by_link_text("搜索設置").click()
# 通過value定位
sel = driver.find_element_by_css_selector("select#nr")
Select(sel).select_by_value("20")
# 退出
sleep(5)
driver.quit()

3、文本屬性定位

代碼:

coding = utf-8
from selenium import webdriver
from selenium.webdriver.support.select import Select
from selenium.webdriver.common.action_chains import ActionChains
from time import sleep
# 驅動文件路徑
driverfile_path = r'D:\coship\Test_Framework\drivers\chromedriver.exe'
# 啟動瀏覽器
driver = webdriver.Chrome(executable_path=driverfile_path)
# 打開百度首頁
driver.implicitly_wait(10)
driver.get(r'https://www.baidu.com/')
# 移動鼠標到設置上,再點擊搜索設置
set = driver.find_element_by_link_text("設置")
ActionChains(driver).move_to_element(set).perform()
driver.find_element_by_link_text("搜索設置").click()
# 通過text定位
sel = driver.find_element_by_css_selector("select#nr")
Select(sel).select_by_visible_text("每頁顯示20條")
# 退出
sleep(5)
driver.quit()

 參考博客:https://www.cnblogs.com/eastonliu/p/9106307.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM