11 - selenium 常見操作,使用 select 類來處理 下拉列表操作


  下拉列表包括:非 select 元素 和 select 元素兩種

 

非 select 元素:通過文本值定位元素,建議直接進行點擊操作

下拉列表未顯示屬性值為:display:none

下拉列表顯示屬性值為:display: block

    

select 元素使用 select 類來處理

  是select 一定會有 option;通過下標方式選元素、value屬性選元素、文本內容選元素

    

 

 

 需要引入 select 類:

from selenium.webdriver.support.select import Select

Select 類里面的方法行為:

初始化 webelement 傳進來的是元素對象,並且是構造函數,必須是 Select 對象,如果不是會拋異常元素對象的標簽名的小寫不=select,就會拋出不期望的標簽名異常

options:返回屬於此選擇標記的所有選項的列表

select_by_value:通過 value 值來獲取 select 列表的標簽名;  (譯:歪留)

select_by_index:通過 下標 來獲取 select 列表的標簽名;  (譯:in戴克斯的)

select_by_visible_text:通過 可見的文本內容 來獲取 select;  (譯:為則bou)

from selenium import webdriver
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
import time
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.support.select import Select        # select元素操作類

driver = webdriver.Chrome()

driver.get("http://www.baidu.com")

# 找到元素
ele = driver.find_element_by_xpath('//div[@id="u1"]//a[@name="tj_settingicon"]')
# # 1、鼠標懸浮操作,實例化
ActionChains(driver).move_to_element(ele).pause(0.5).click(ele).perform()
# ele.click()


# 下拉列表:非select元素
loc = (By.XPATH, '//a[text()="高級搜索"]')
WebDriverWait(driver, 20).until(EC.visibility_of_element_located(loc))
driver.find_element(*loc).click()

# 下拉列表:select元素  Select類
select_loc = (By.XPATH, '//select[@name="ft"]')
WebDriverWait(driver, 20).until(EC.visibility_of_element_located(select_loc))
ele = driver.find_element(*select_loc)

# Select(driver.find_element(*select_loc)).select_by_index(3)  # 從0開始
# time.sleep(3)
s = Select(ele)  # 第一步,實例化對象

# 三種方式選擇下拉屬性:
# 下標方式選元素,從0開始    
s.select_by_index(3)    # (譯:因代克斯的)
# s.deselect_by_index()     # 不選中
time.sleep(3)

# value屬性選元素
s.select_by_value("all")
# s.deselect_by_value()     # 不選中
time.sleep(3)

# 文本內容選元素:下拉框文本值內容
s.select_by_visible_text("微軟 Powerpoint (.ppt)")
# s.deselect_by_visible_text("下拉框文本內容")     # 不選中

 


免責聲明!

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