下拉列表包括:非 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("下拉框文本內容") # 不選中