小編寫這篇文章的主要目的,主要是給大家做出一個解答,解答內(nèi)容包括一些Python常用的技能,包括Python selenium下拉選擇框?qū)崙?zhàn)應(yīng)用,那么,具體的一個內(nèi)容是什么呢?下面就給大家詳細的解答下。
一、前言
selenium的下拉選擇框。我們通常會遇到兩種下拉框,一種使用的是html的標簽select,另一種是使用input標簽做的假下拉框。
后者我們通常的處理方式與其他的元素類似,點擊或使用JS等。而對于前者,selenium給了有力的支持,就是Select類。
進行測試的網(wǎng)站:http://sahitest.com/demo/selectTest.htm
網(wǎng)頁及對應(yīng)源碼:
二、關(guān)于導入方式
兩種導入方式:
from selenium.webdriver.support.ui import Select #或者直接從select導入 from selenium.webdriver.support.select import Select
三、選擇、反選、選項的實戰(zhàn)應(yīng)用例子
話不多說,直接上代碼:
#-*-coding:utf-8-*- """ author:lucas Function: file:selectStudy.py time:2021/8/20 1:27下午 """ import unittest import time from selenium import webdriver from selenium.webdriver.support.ui import Select class SelectStudy(unittest.TestCase): def setUp(self): #創(chuàng)建一個Chrome WebDriver的實例 self.driver=webdriver.Chrome() #選擇頁面第一個下拉框,依次選擇值O1-O3 def test_selectO1ToO3(self): driver=self.driver driver.get('http://sahitest.com/demo/selectTest.htm') #實例化Select s1=Select(driver.find_element_by_id('s1Id')) #查看選擇框的默認值 print s1.first_selected_option.text #選擇第二個選項o1 s1.select_by_index(1) time.sleep(3) #為了方便查看效果,可以加上等待時間 time.sleep(3) #選擇value="o2"的項,value是option標簽的一個屬性值,并不是顯示在下拉框中的值 s1.select_by_value("o2") #查看選中選擇框的默認值 print s1.first_selected_option.text time.sleep(3) #選擇text="o3"的值,即在下拉時我們可以看到的文本,visible_text是在option標簽中間的值,是顯示在下拉框的值 s1.select_by_visible_text("o3") time.sleep(3) #反選操作,包括取消某個值和全部取消 def test_cancel_select(self): driver=self.driver driver.get('http://sahitest.com/demo/selectTest.htm') s4=Select(driver.find_element_by_id('s4Id')) #全選 for option in s4.options: if not option.is_selected(): print option.text s4.select_by_visible_text(option.text) time.sleep(3) #根據(jù)index取消選中 s4.deselect_by_index(0) time.sleep(3) #根據(jù)value取消選中 s4.deselect_by_value("o1val") time.sleep(5) #根據(jù)標簽文本選中 s4.deselect_by_visible_text("o2") time.sleep(5) #全選 for option in s4.options: if not option.is_selected(): s4.select_by_visible_text(option.text) time.sleep(3) #取消選中所有選項 s4.deselect_all() #查看選中項目 """ 輸出結(jié)果為: o1 o2 With spaces With nbsp """ def test_view_selection(self): driver=self.driver driver.get('http://sahitest.com/demo/selectTest.htm') s4=Select(driver.find_element_by_id('s4Id')) #查看選擇框的默認值 s4.select_by_index(1) s4.select_by_value("o2val") s4.select_by_visible_text("With spaces") s4.select_by_value("o4val") for select in s4.all_selected_options: print select.text def tearDown(self): self.driver.close() if __name__=="__main__": unittest.main()
注意:
反選(deselect)取消操作只適用于添加了multiple的下拉框,否則會報錯
raise NotImplementedError("You may only deselect options of a multi-select")
NotImplementedError:You may only deselect options of a multi-select
四、總結(jié)
1、Select提供了三種選擇方法:
select_by_index(index)——通過選項的順序,第一個為0 select_by_value(value)——通過value屬性 select_by_visible_text(text)——通過選項可見文本
2、Select提供了四種方法取消選擇:
deselect_by_index(index) deselect_by_value(value) deselect_by_visible_text(text) deselect_all()
3、Select提供了三個屬性方法給我們必要的信息:
options——提供所有的選項的列表,其中都是選項的WebElement元素 all_selected_options——提供所有被選中的選項的列表,其中也均為選項的WebElement元素 first_selected_option——提供第一個被選中的選項,也是下拉框的默認值
補充:三種定位方法如下
1.select_by_visible_text():選項的文本內(nèi)容
from selenium.webdriver.support.select import Select from time import sleep from selenium import webdriver dr=webdriver.Chrome() dr.get('url') dr.maximize_window() #先定位到下拉框,通過text文本定位 Select(find_element_by_id('q')).select_by_visible_text('蒼井空') sleep(2) dr.quit()
2.select_by_value():value屬性定位
from selenium.webdriver.support.select import Select from time import sleep from selenium import webdriver dr=webdriver.Chrome() dr.get('url') dr.maximize_window() #先定位到下拉框,通過value屬性定位 Select(find_element_by_id('q')).select_by_value('3') sleep(2) dr.quit()
3.select_by_index():索引定位(0開始)
from selenium.webdriver.support.select import Select from time import sleep from selenium import webdriver dr=webdriver.Chrome() dr.get('url') dr.maximize_window() #先定位到下拉框,通過索引定位 Select(find_element_by_id('q')).select_by_index('1') sleep(2) dr.quit()
到此為止,這篇文章就給大家介紹到這里了,希望可以給大家?guī)砀鄮椭?/p>
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/128247.html
摘要:難在哪里根據(jù)上面的標簽需要定位最后一行標簽,以下列出了四種方式,定位的方式多樣并不唯一,使用時根據(jù)情況進行解析即可。加入每日一練我們使用并指明標簽內(nèi)全部文本即可定位。 ...
摘要:不過動態(tài)渲染的頁面不止這一種。再有淘寶這種頁面,它即使是獲取的數(shù)據(jù),但是其接口含有很多加密參數(shù),我們難以直接找出其規(guī)律,也很難直接分析來抓取。我們用一個實例來感受一下在這里們依然是先打開知乎頁面,然后獲取提問按鈕這個節(jié)點,再將其 上一篇文章:Python3網(wǎng)絡(luò)爬蟲實戰(zhàn)---36、分析Ajax爬取今日頭條街拍美圖下一篇文章:Python3網(wǎng)絡(luò)爬蟲實戰(zhàn)---38、動態(tài)渲染頁面抓取:Spla...
摘要:自己犯下的低級錯誤后面不可加括號,因為是屬性,不是方法方法才用調(diào)用。 1、測試的時候一般調(diào)用的瀏覽器窗口都不是全屏的,為了不影響體驗我們需要將窗口最大化 解決的方案: showImg(https://segmentfault.com/img/bV7p2M?w=448&h=270); 按照自己的意愿設(shè)置窗口大小(注意:其中數(shù)字大小為像素點) showImg(https://segment...
摘要:一個網(wǎng)站使用的特征就是源代碼里包含了入口比如如果你在一個網(wǎng)站上看到了,那么采集這個網(wǎng)站數(shù)據(jù)的時候要格外小心。直接點擊下拉框中的選項不一定可行。未審核初審通過復審通過審核不通過專門提供了類來處理下拉框。 JavaScript JavaScript 是網(wǎng)絡(luò)上最常用也是支持者最多的客戶端腳本語言。它可以收集 用戶的跟蹤數(shù)據(jù),不需要重載頁面直接提交表單,在頁面嵌入多媒體文件,甚至運行網(wǎng)頁游戲。...
閱讀 917·2023-01-14 11:38
閱讀 888·2023-01-14 11:04
閱讀 747·2023-01-14 10:48
閱讀 2025·2023-01-14 10:34
閱讀 954·2023-01-14 10:24
閱讀 829·2023-01-14 10:18
閱讀 504·2023-01-14 10:09
閱讀 581·2023-01-14 10:02