在我們瀏覽網頁的時候經常會碰到下拉框,WebDriver提供了Select類來處理下拉框,詳情請往下看:
本章中用到的關鍵方法如下:
- select_by_value():設置下拉框的值
- switch_to.alert.accept():定位并接受現有警告框(詳情請參考Python爬蟲 - Selenium(9)警告框(彈窗)處理)
- click():鼠標點擊事件(其他鼠標事件請參考Python爬蟲 - Selenium(5)鼠標事件)
- move_to_element():鼠標懸停(詳情請參考Python爬蟲 - Selenium(5)鼠標事件)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
|
from selenium import webdriver from selenium.webdriver import ActionChains from selenium.webdriver.support.select import Select import time driver = webdriver.Chrome() driver.get( 'http://www.baidu.com' ) # 鼠標懸停至“設置”鏈接 link = driver.find_element_by_link_text( '設置' ) ActionChains(driver).move_to_element(link).perform() time.sleep( 2 ) #睡兩秒,看一下效果 # 打開搜索設置 driver.find_element_by_link_text( "搜索設置" ).click() time.sleep( 2 ) #睡兩秒,看一下效果 # 搜索結果顯示條數 sel = driver.find_element_by_xpath( "//select[@id='nr']" ) Select(sel).select_by_value( '50' ) # 顯示50條 time.sleep( 2 ) #睡兩秒,看一下效果 # 保存設置 driver.find_element_by_class_name( "prefpanelgo" ).click() time.sleep( 2 ) #睡兩秒,看一下效果 # 定位并接受現有警告框 alert = driver.switch_to.alert.accept() time.sleep( 2 ) #睡兩秒,看一下效果 driver.quit() |
select類中的函數列表
函數 | 解析 |
---|---|
options | 返回select元素所有的options |
all_selected_options | 返回select元素中所有已選中的選項 |
first_selected_option | 返回select元素中選中的第一個選項 |
select_by_index(index) | 通過索引定位,index索引是從“0”開始 |
select_by_value(value) | 通過value屬性值定位 |
select_by_visible_text(text)t | 通過文本值定位,visible_text是在option標簽中間的值,即顯示在下拉框的值; |
deselect_all() | 取消全部的已選擇項 |
deselect_by_index(index) | 取消已選中的索引項 |
deselect_by_value(value) | 取消已選中的value值 |
deselect_by_visible_text(text) | 取消已選中的文本值 |
舉例
html如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
<!DOCTYPE html> < html lang = "en" > < head > < meta charset = "UTF-8" > < title >我是標題</ title > </ head > < body > <!--select標簽--> < select name = "city" size = "5" multiple = "multiple" > < option value = "1" tabindex = "1" >北京</ option > < option value = "2" tabindex = "2" selected = "selected" >河南</ option > < option value = "3" tabindex = "3" >河北</ option > < option value = "4" tabindex = "4" >山東</ option > < option value = "5" tabindex = "5" >上海</ option > </ select > </ body > </ html > |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
from selenium import webdriver from selenium.webdriver.support.select import Select import time driver = webdriver.Chrome(r "D:\browser\chromedriver\chromedriver.exe" ) driver.get( "http://localhost:63342/ui_test/select%E6%A0%87%E7%AD%BE.html" ) driver.maximize_window() ele = driver.find_element_by_name( "city" ) select = Select(ele) select.select_by_value( "3" ) # 選中"河北" time.sleep( 3 ) select.select_by_index( 0 ) # 選中"北京" time.sleep( 3 ) select.deselect_by_value( "3" ) # 取消選中"河北" time.sleep( 3 ) select.deselect_by_index( 0 ) # 取消選中"北京" time.sleep( 3 ) driver.quit() |
Selenium文集傳送門:
標題 | 簡介 |
---|---|
Python爬蟲 - Selenium(1)安裝和簡單使用 | 詳細介紹Selenium的依賴環境在Windows和Centos7上的安裝及簡單使用 |
Python爬蟲 - Selenium(2)元素定位和WebDriver常用方法 | 詳細介紹定位元素的8種方式并配合點擊和輸入、提交、獲取斷言信息等方法的使用 |
Python爬蟲 - Selenium(3)控制瀏覽器的常用方法 | 詳細介紹自定義瀏覽器窗口大小或全屏、控制瀏覽器后退、前進、刷新瀏覽器等方法的使用 |
Python爬蟲 - Selenium(4)配置啟動項參數 | 詳細介紹Selenium啟動項參數的配置,其中包括無界面模式、瀏覽器窗口大小設置、瀏覽器User-Agent (請求頭)等等 |
Python爬蟲 - Selenium(5)鼠標事件 | 詳細介紹鼠標右擊、雙擊、拖動、鼠標懸停等方法的使用 |
Python爬蟲 - Selenium(6)鍵盤事件 | 詳細介紹鍵盤的操作,幾乎包含所有常用按鍵以及組合鍵 |
Python爬蟲 - Selenium(7)多窗口切換 | 詳細介紹Selenium是如何實現在不同的窗口之間自由切換 |
Python爬蟲 - Selenium(8)frame/iframe表單嵌套頁面 | 詳細介紹如何從當前定位的主體切換為frame/iframe表單的內嵌頁面中 |
Python爬蟲 - Selenium(9)警告框(彈窗)處理 | 詳細介紹如何定位并處理多類警告彈窗 |
Python爬蟲 - Selenium(10)下拉框處理 | 詳細介紹如何靈活的定位并處理下拉框 |
Python爬蟲 - Selenium(11)文件上傳 | 詳細介紹如何優雅的通過send_keys()指定文件進行上傳 |
Python爬蟲 - Selenium(12)獲取登錄Cookies,并添加Cookies自動登錄 | 詳細介紹如何獲取Cookies和使用Cookies進行自動登錄 |
Python爬蟲 - Selenium(13)設置元素等待 | 詳細介紹如何優雅的設置元素等待時間,防止程序運行過快而導致元素定位失敗 |
Python爬蟲 - Selenium(14)窗口截圖 | 詳細介紹如何使用窗口截圖 |
Python爬蟲 - Selenium(15)關閉瀏覽器 | 詳細介紹兩種關閉窗口的區別 |
到此這篇關于Python爬蟲之Selenium下拉框處理的實現的文章就介紹到這了,更多相關Selenium 下拉框內容請搜索服務器之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持服務器之家!
原文鏈接:https://blog.csdn.net/jamieblue1/article/details/90082819