selenium之下拉框選擇(有select標簽和沒有select標簽)


1、有select標簽的下拉框處理

  1.1、導入的模塊/類(Select)

from selenium.webdriver.support.select import Select
#
from selenium.webdriver.support.ui import Select
# 兩者功能一樣,選其一即可,沒有本質的區別

  1.2、Select中有三種選擇下拉框選擇的方法   

    通過索引選擇(從0開始):select_by_index(索引)
    通過屬性的值(option標簽的屬性的值)選擇:select_by_value(值)
    通過文本選擇(下拉框的選項的文本):select_by_visible_text(文本)

  1.3、Select查看各個選項

    options:查看所有選項(包括已選和未選,即查看下拉框的所有選項)
    is_multiple:查看下拉框是否已經多選
    all_select_options:查看所有已選選項
    first_select_option:查看第一個已選(若有多個已選,則為第一個已選選項;單選則只有唯一一個)

  代碼示例:

# 導入需要的模塊Select()類是用來管理下拉框的
from selenium import webdriver
from selenium.webdriver.support.select import Select
import time
# 創建瀏覽器對象
driver = webdriver.Firefox()
driver.maximize_window()
# 訪問貼吧的高級搜素
driver.get('https://tieba.baidu.com/f/search/adv')

# 定位到下拉框元素
el_select = driver.find_element_by_name('rn')
# 創建一個下拉框對象
xialakuang = Select(el_select)

# 三種方法選擇下拉框選項
# 第一、通過選項的索引來選定選項(索引從0開始算)
xialakuang.select_by_index(0)
time.sleep(1)
xialakuang.select_by_index(2)
time.sleep(1)
xialakuang.select_by_index(1)
time.sleep(1)

# 第二種方法:通過option標簽的屬性值選擇
xialakuang.select_by_value('20')
time.sleep(1)
xialakuang.select_by_value('10')
time.sleep(1)
xialakuang.select_by_value('30')
time.sleep(1)

# 第三種:通過文本選擇(下拉框的值)
xialakuang.select_by_visible_text('每頁顯示20條')
time.sleep(1)
xialakuang.select_by_visible_text('每頁顯示10條')
time.sleep(1)
xialakuang.select_by_visible_text('每頁顯示30條')
time.sleep(1)

# 打印選擇的文本
# 查看第一個已選(若有多個已選則打印第一個,只有一個已選則打印一個)
print(xialakuang.first_selected_option.text)
# 打印所有已選的選項的文本
yixuan = xialakuang.all_selected_options
for i in yixuan:
    print('已選',i.text)
# 打印是否是多選
print(xialakuang.is_multiple)
# 打印所有選項(包括已選和未選的)
m_list = xialakuang.options
for a in m_list:
    print('選項',a.text)

# 關閉瀏覽器
driver.quit()

  1.4、取消選擇

    deselect_by_index(index)
    deselect_by_value(value)
    deselect_by_visible_text(text)
    deselect_all()

    前面三種分別對應前面的選擇選項的取消;deselect_all()方法用於多選下拉框,全部取消所有選擇

2、沒有select標簽的下拉框處理

  若下拉框無select標簽,意味着不能使用Select模塊處理下拉框;

  2.1、此時可以用到elements定位方法獲取下拉框元素組,然后再從元素組里一個一個用索引方法選擇,然后點擊選擇,如下代碼:

from selenium import webdriver
# 導入Select類,用於處理下拉框(標簽名必須是select否則此模塊無法使用)
from selenium.webdriver.support.select import Select
import time

# 創建一個瀏覽器對象
driver = webdriver.Firefox()
# 訪問百度
url = 'http://www.baidu.com'
driver.get(url)

# 定位到設置按鈕並執行點擊操作
s = driver.find_element_by_id('s-usersetting-top')
s.click()

# 定位到高級搜素並點擊
sous = driver.find_element_by_css_selector('.s-user-setting-pfmenu > a:nth-child(2)')
sous.click()

# 獲取下拉框下拉按鈕
xiala = driver.find_element_by_css_selector('.adv-gpc-select > div:nth-child(1) > span:nth-child(1)')
xiala.click()
time.sleep(3)
# 獲取下拉框選項結果集
sous_list = driver.find_elements_by_css_selector('.adv-gpc-select > div:nth-child(2) > div:nth-child(2) > p')
print(sous_list)
time.sleep(3)
# 選擇一個選項、
sous_list[3].click()
time.sleep(1)
xiala.click()
sous_list[1].click()
time.sleep(1)
xiala.click()
sous_list[2].click()
time.sleep(1)
xiala.click()
sous_list[4].click()
time.sleep(1)
xiala.click()
sous_list[0].click()

time.sleep(3)
driver.quit()

  2.2、還可以直接使用xpath定位直接定位到需要選擇的元素,然后點擊,與2.1內容相似

 


免責聲明!

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



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