下拉列表操作中分為兩種:select、非select
1、非select的下拉框操作
非select下拉列表操作與網頁元素操作一致,找到元素,定位元素,設置等待,點擊元素等等
接下來操作百度的設置按鈕,設置屬於一個下拉框
舉個栗子:
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 # 創建一個Chrome對象 driver = webdriver.Chrome() # 訪問百度 driver.get('http://baidu.com') # 非select下拉框操作 # 找到百度首頁的設置按鈕 driver.find_element_by_xpath('//div[@id="u1"]//a[@class="pf"]').click() # 等待下拉框的出現 loc = (By.XPATH, '//a[text()="高級搜索"]') WebDriverWait(driver, 10).until(EC.visibility_of_element_located(loc)) driver.find_element_by_xpath('//a[text()="高級搜索"]').click() # 退出瀏覽器 driver.quit()
2、select下拉框操作:
接下來演示select下拉框操作;繼續使用百度設置-高級搜索頁面來演示,繼續接上邊代碼繼續寫
selenium中有一個select類,用來操作select下拉列表
舉個栗子:操作下圖標紅的下拉框
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 from selenium.webdriver.support.select import Select import time # 創建一個Chrome對象 driver = webdriver.Chrome() # 訪問百度 driver.get('http://baidu.com') # 非select下拉框操作 # 找到百度首頁的設置按鈕 driver.find_element_by_xpath('//div[@id="u1"]//a[@class="pf"]').click() # 等待下拉框的出現 loc = (By.XPATH, '//a[text()="高級搜索"]') WebDriverWait(driver, 10).until(EC.visibility_of_element_located(loc)) driver.find_element_by_xpath('//a[text()="高級搜索"]').click() # 設置等待,等待select下拉框出現 select_loc = (By.XPATH, '//select[@name="ft"]') WebDriverWait(driver, 10).until(EC.visibility_of_element_located(select_loc)) ele = driver.find_element(*select_loc) s = Select(ele) # 以下標的方法定位下拉框中的元素 s.select_by_index(3) time.sleep(2) # 以value屬性的方式定位下拉框的元素 s.select_by_value('pdf') time.sleep(2) # 以文本的方式定位下拉框元素 s.select_by_visible_text('所有格式') time.sleep(2) # 退出瀏覽器 driver.quit()