當前位置:首頁 » 編程語言 » pythonselenium教程

pythonselenium教程

發布時間: 2023-07-09 15:55:40

㈠ 關於python的Selenium框架全解,一篇完整的說明書

目錄

安裝 selenium 第三方庫

下載瀏覽器驅動:

需要把這些瀏覽器驅動放入 Python 應用目錄裡面的 Script 文件夾裡面

① 200 多本 Python 電子書(和經典的書籍)應該有

② Python標准庫資料(最全中文版)

③ 項目源碼(四五十個有趣且可靠的練手項目及源碼)

④ Python基礎入門、爬蟲、網路開發、大數據分析方面的視頻(適合小白學習)

⑤ Python學習路線圖(告別不入流的學習)
私信我01即可獲取大量Python學習資源

每次當selenium啟動chrome瀏覽器的時候,chrome瀏覽器很乾凈,沒有插件、沒有收藏、沒有 歷史 記錄,這是因為selenium在啟動chrome時為了保證最快的運行效率,啟動了一個裸瀏覽器,這就是為什麼需要配置參數的原因,但是有些時候我們需要的不僅是一個裸瀏覽器

selenium啟動配置參數接收是ChromeOptions類,創建方式如下 :

創建了ChromeOptions類之後就是添加參數,添加參數有幾個特定的方法,分別對應添加不同類型的配置項目

常用配置參數:

其他配置項目參數

製作無頭瀏覽器

規避檢測

門戶網站檢測如果是selenium請求的,有可能會拒絕訪問。這也是一種反爬機制

實現規避檢測

注意:這里只能使用 options 添加

如果有其他的模塊要添加,注意要分開添加

元素定位語法

常用語法:

在 element 變成 elements 時,返回符合條件的所有元素組成的數組

控制瀏覽器大小

瀏覽器後退,前進

刷新

在搜索框模擬回車操作

在 WebDriver 中, 將這些關於滑鼠操作的方法封裝在 ActionChains 類提供

ActionChains 類提供了滑鼠操作的常用方法:

語法:

想使用selenium中的鍵盤事件,首先我們必須導入Keys包,需要注意的是包名稱Keys首字母需要大寫。Keys類中提供了幾乎所有的鍵盤事件包括組合按鍵如 Ctrl+A、 Ctrl+C 等

使用語法:

其他事件可以通過查看源碼獲取

顯式等待使WebdDriver等待某個條件成立時繼續執行,否則在達到最大時長時拋出超時異常

實例:

WebDriverWait類是由WebDirver 提供的等待方法。在設置時間內,默認每隔一段時間檢測一次當前頁面元素是否存在,如果超過設置時間檢測不到則拋出異常

語法:

參數:

如果某些元素不是立即可用的,隱式等待是告訴WebDriver去等待一定的時間後去查找元素。 默認等待時間是0秒,一旦設置該值,隱式等待是設置該WebDriver的實例的生命周期

案例

語法:

alert 裡面的方法

WebDriver操作cookie的方法:

參考鏈接: https://www.jianshu.com/p/773c58406bdb

與普通的在headers里添加 {'Cookies':' '} 不一樣的是,此方法需要按照cookie的name,value,path,domain格式逐個cookie添加

通過execute_script()方法執行javaScripts代碼來移動滾動條的位置

㈡ 從零開始學python爬蟲(八):selenium提取數據和其他使用方法

知識點:

知識點:了解 driver對象的常用屬性和方法

注意:最新版本的selenium已經取消了這種格式,取而代之的是:

你要先導入:

然後再:

知識點:掌握 driver對象定位標簽元素獲取標簽對象的方法




代碼實現,如下,獲取騰訊新聞首頁的新聞標簽的內容。

知識點:掌握 元素對象的操作方法


參考代碼示例:

知識點:掌握 selenium控制標簽頁的切換


知識點:掌握 selenium控制frame標簽的切換

知識點:掌握 利用selenium獲取cookie的方法

知識點:掌握 selenium控制瀏覽器執行js代碼的方法


知識點:掌握 手動實現頁面等待





知識點:掌握 selenium開啟無界面模式





知識點:了解 selenium使用代理ip





知識點:了解 selenium替換user-agent

㈢ 如何用python+selenium+phantomjs獲得一個網頁的動態生成的html代碼

一般我們使用python的第三方庫requests及框架scrapy來爬取網上的資源,但是設計javascript渲染的頁面卻不能抓取,此時,我們使用web自動化測試化工具Selenium+無界面瀏覽器PhantomJS來抓取javascript渲染的頁面,下面實現一個簡單的爬取

環境搭建

准備工具:python3.5,selenium,phantomjs

我的電腦裡面已經裝好了python3.5

安裝Selenium

1pip3 install selenium

安裝Phantomjs

按照系統環境下載phantomjs,下載完成之後,將phantomjs.exe解壓到python的script文件夾下

使用selenium+phantomjs實現簡單爬蟲

123456789fromselenium import webdriverdriver = webdriver.PhantomJS()driver.get('http.com') #載入網頁data = driver.page_source #獲取網頁文本driver.save_screenshot('1.png') #截圖保存print(data)driver.quit()

selenium+phantomjs的一些使用方法

設置請求頭里的user-Agent

123456789101112fromselenium import webdriverfromselenium.webdriver.common.desired_capabilities import DesiredCapabilitiesdcap = dict(DesiredCapabilities.PHANTOMJS) #設置useragentdcap['phantomjs.page.settings.userAgent'] = ('Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:25.0) Gecko/20100101 Firefox/25.0 ') #根據需要設置具體的瀏覽器信息driver = webdriver.PhantomJS(desired_capabilities=dcap) #封裝瀏覽器信息driver.get('h.com') #載入網頁data = driver.page_source #獲取網頁文本driver.save_screenshot('1.png') #截圖保存print(data)driver.quit()

請求超時設置

webdriver類中有三個和時間相關的方法:

1.pageLoadTimeout 設置頁面完全載入的超時時間,完全載入即完全渲染完成,同步和非同步腳本都執行完

2.setScriptTimeout 設置非同步腳本的超時時間

3.implicitlyWait 識別對象的智能等待時間

1234567fromselenium import webdriverdriver = webdriver.PhantomJS()driver.set_page_load_timeout(5) #設置超時時間driver.get('htt.com')print(driver.title)driver.quit()

設置瀏覽器窗口大小

調用啟動的瀏覽器不是全屏的,有時候會影響我們的某些操作,所以我們可以設置全屏

12driver.maximize_window() #設置全屏driver.set_window_size('480','800') #設置瀏覽器寬480,高800

元素定位

import webdriverdriver = webdriver.PhantomJS()driver.set_page_load_timeout(5)driver.get('i.com')try:driver.get('.com')driver.find_element_by_id('kw') # 通過ID定位driver.find_element_by_class_name('s_ipt') # 通過class屬性定位driver.find_element_by_name('wd') # 通過標簽name屬性定位driver.find_element_by_tag_name('input') # 通過標簽屬性定位driver.find_element_by_css_selector('#kw') # 通過css方式定位driver.find_element_by_xpath("//input[@id='kw']") # 通過xpath方式定位driver.find_element_by_link_text("貼吧") # 通過xpath方式定位print(driver.find_element_by_id('kw').tag_name ) # 獲取標簽的類型except Exceptionase:print(e)driver.quit()

操作瀏覽器前進或後退

import webdriverdriver = webdriver.PhantomJS()try:driver.get('httai.com') #訪問網路首頁driver.save_screenshot('1.png')driver.get('ht.sina.com.cn') #訪問新浪首頁driver.save_screenshot('2.png')driver.back() #回退到網路首頁driver.save_screenshot('3.png')driver.forward() #前進到新浪首頁driver.save_screenshot('4.png')except Exceptionase:print(e)driver.quit()

好文要頂關注我收藏該文

㈣ 從零開始學Python-使用Selenium抓取動態網頁數據

AJAX(Asynchronouse JavaScript And XML:非同步JavaScript和XML)通過在後台與伺服器進行少量數據交換,Ajax 可以使網頁實現非同步更新,這意味著可以在不重帶洞新載入整個網頁的情況下,對網頁的某部分進行局部更新。傳統的網頁(不使用Ajax)如果需要更新內容,必蠢者枯須重載整個網頁頁面。

因為傳統的網頁在傳輸數據格式方面,使用的是 XML 語法,因此叫做 AJAX ,其實現在數據交互基本上都是使用 JSON 。使用AJAX載入的數據,即使使用了JS將數據渲染到了瀏覽器中,在 右鍵->查看網頁源代碼 還是不能看到通嫌隱過ajax載入的數據,只能看到使用這個url載入的html代碼。

法1:直接分析ajax調用的介面。然後通過代碼請求這個介面。

法2:使用Selenium+chromedriver模擬瀏覽器行為獲取數據。

Selenium 相當於是一個機器人。可以模擬人類在瀏覽器上的一些行為,自動處理瀏覽器上的一些行為,比如點擊,填充數據,刪除cookie等。 chromedriver 是一個驅動 Chrome 瀏覽器的驅動程序,使用他才可以驅動瀏覽器。當然針對不同的瀏覽器有不同的driver。以下列出了不同瀏覽器及其對應的driver:

現在以一個簡單的獲取網路首頁的例子來講下 Selenium 和 chromedriver 如何快速入門:


參考:Selenium的使用


直接直接分析ajax調用的介面爬取

selenium結合lxml爬取

㈤ 如何在python下安裝selenium

不知道你是linux 還是 windows 兩種通用的方法可用命令直拆岩接自動安裝

如果你安裝了pip 使用命令:pip install selenium

如果你安裝了setuptools 使用命令:easy_install selenium

如果你兩個都沒裝 建議你裝一下 因為以後用的話會很方便 很好裝的


把這個下載納尺下來 解壓之後 用命令cd到該文件夾下 運行命令旅茄御:python setup.py install

不是很新的版本 你可以去官網上下載最新版本的來用

㈥ 怎麼用python做自動化測試

這里以web自動化測試為例,簡單介紹一下如何使用python進行web自動化測試,主要用到selenium這個框架,實驗環境win10+python3.6,主要內容如下:

1.首先,安裝selenium框架,這個直接在cmd窗口輸入命令「pipinstallselenium」就行,如下,安裝非常快:

2.安裝完成後,還需要安裝瀏覽器驅動程序,不然直接運行程序會報錯,以谷歌瀏覽器chrome為例,需要下載chromedriver驅動程序,如下,這里chromedriver的版本必須要與自己平台瀏覽器的版本匹配:

下載完成後,是一個zip壓縮包,裡面就一個chromedriver.exe文件,這里需要將這個文件復制到python安裝目錄下,如下:

3.最後,我們就可以進行selenium框架測試了,測試代碼如下,非常簡單,創建一個webdriver,如果能正常打開對應網頁,則說明selenium安裝成功:

之後就可以直接定位相關元攜余素,進行web自動化測試了,主要方法如下(共有8種),辯洞滾分別是id、name、classname、tagname、linktext、partiallinktext、xpath和cssselector,這里可以自行測試,相關資料非常豐富:

至此,我們就完成了pythonweb自動化測試框架selenium的安裝和簡單使用。總的來說,整個過程非常簡單,只要你有一定的python基礎,熟悉一下上面的安裝過程,很快就能搭建好本地selenium自動化測試框架,網上也顫芹有相關教程和資料,介紹的非常詳細,感興趣的話,可以搜一下,希望以上分享的內容能對你有所幫助吧,也歡迎大家評論、留言進行補充。

㈦ 如何搭建python+selenium自動化測試框架

selenium是一個web的自動化測試工具,不少學習功能自動化的同學開始首選selenium,相因為它相比QTP有諸多有點:

*免費,也不用再為破解QTP而大傷腦筋

*小巧,對於不同的語言它只是一個包而已,而QTP需要下載安裝1個多G的程序。

*這也是最重要的一點,不管你以前更熟悉C、java、ruby、python、或都是C#,你都可以通過selenium完成自動化測試,而QTP只支持VBS

*支持多平台:windows、linux、MAC,支持多瀏覽器:ie、ff、safari、opera、chrome

*支持分布式測試用例的執行,可以把測試用例分布到不同的測試機器的執行,相當於分發機的功能。

關於selenium的基礎知識與java平台的結合,我之前寫過一個《菜鳥學習自動化測試》系列,最近學python,所以想嘗試一下selenium的在python平台如何搭建;還好這方法的文章很容易,在此將搭建步驟整理分享。

搭建平台windows

准備工具如下:

-------------------------------------------------------------

下載python

-------------------------------------------------------------

如果你是新學python,哪果你沒有要用的包是必須依賴於pyhton2.x 的,那麼請毫不猶豫的選擇python3.5吧!

window安裝步驟:

1、下載python安裝。

又報了個錯:

Chromeversionmustbe>=27.0.1453.0 (Driverinfo:chromedriver=2.0,platform=WindowsNT5.1SP3x86)

說我chrome的版本沒有大於27.0.1453.0,這個好辦,更新到最新版本即可。

安裝IEdriver

在新版本的webdriver中,只有安裝了iedriver使用ie進行測試工作。

iedriver的下載地址在這里,記得根據自己機器的操作系統版本來下載相應的driver。

暫時還沒嘗試,應該和chrome的安裝方式類似。

記得配置IE的保護模式

如果要使用webdriver啟動IE的話,那麼就需要配置IE的保護模式了。

把IE里的保護模式都選上或都勾掉就可以了。

㈧ 使用python簡單封裝selenium常用函數

年前走查腳本代碼時,發現大家對selenium功能都在重復造輪子,而且容易出現一些常見低級bug。於是在閑暇之餘,封裝一些常用的selenium功能。

在某些網頁中,存在多個frame嵌套。而selenium提供的find_element函數只能在當前frame中查找,不能切換到其他frame中,需要從最上級frame中逐步切換(當然也可以指定xpath的絕對路徑,但是一般沒人這么做)。在我們寫代碼過程中,需要明確知道當前frame位置和需要尋找元素的frame位置。在frame切換過程中,容易因為疏忽導致frame切換錯誤導致元素無法找到的bug。

頁面中分布的frame,可以理解為樹狀結構。因此我們可以採用遞歸的方式, 沿著某條搜索路線frame節點,依次對樹中每個節點均做一次訪問。

我們以163網址上的登錄框為例:點擊登錄按鈕,彈出登錄iframe頁面。輸入框位置在iframe中,因此我們不能使用xpath獲取元素位置,需要進入iframe中,然後獲取元素。

手動切換ifame可能會產生bug,因此需要一套自動切換和檢索frame的機制。具體代碼如下:

需要注意的是:如果頁面中多個frame中,存在相同的xpath元素。還是需要指定frame的路徑,否則會返回搜索到的第一個元素。

強制等待

直接調用系統time.sleep函數,不管頁面載入情況一定會等待指定的時間, 即使元素已被載入 。

1.如果設置的時間較長,會浪費時間

2.如果設置的時間較短,元素可能沒有載入。

頁面中某元素如果未能立即載入,隱式等待告訴WebDriver需等待一定的時間,然後去查找元素。默認不等待,隱式等待作用於整個WebDriver周期,只需設置一次即可。

1.在上文的find_element函數中,採用遞歸方式在所有frame尋找元素。若採用隱式等待,則在每個frame中都需要等待設定的時間,耗時非常長。

2.某些頁面我們想要的元素已經載入完畢,但是部分其他資源未載入。隱式等待必須等待所有元素載入完畢,增加額外等待時間。

顯示等待一般作用於某一個元素,在設定的時間范圍內,默認每間隔0.5秒查找元素。返回被載入的元素,若超過設定的時間范圍未能查找則報錯。顯示等待作為selenium常用的等待機制,我們來看下他的源碼和機制。

driver 注釋中解釋為WebDriver實例,但是代碼中並未有相關檢測,因此可以傳入任何對象

但是__repr__函數中使用到session_id屬性,如果需要顯示屬性或者轉為str對象,最好在driver對象中添加session_id屬性

在until函數中,我們可以看到driver對象傳入method函數。在計時結束前,在不斷循環執行method函數,如果method函數有正常返回值則退出循環,否則報TimeoutException錯誤。

可以採用裝飾器對隱式等待進行封裝,這樣代碼更加精簡

同樣的,採用裝飾器對其他常用的函數進行封裝,例如強制等待、點擊、輸入文本等。

裝飾器雖然很方便,但也會產生一些麻煩。例如在find_element函數遞歸調用過程中,理應只要執行一次裝飾器函數。但因為裝飾器已經裝飾完畢,導致每次遞歸都會執行。例如強制等待的sleep函數,如果遞歸次數越多等待時間越長。

解除裝飾器一般有兩種做法:一是約定參數,當遞歸第二次調用時則不生效。例如

這種方式實現簡單,容易理解。但是增加了參數限制,在fun函數中就不能使用first_sleep參數。

二是採用裝飾器採用wrapped實現,通過訪問wrapped屬性獲得原始函數。例如

但是某一個函數被多個裝飾器裝飾時,需要遞歸解除裝飾器。例如

最後整體代碼如下

這次的封裝其實還存在很多問題

1.find_element函數不僅僅只是提供查找元素功能,還提供一些其他功能,因此叫element_operation更為合適。

2.find_element函數的參數過多,並且很多參數的使用並不在函數本身中,對代碼閱讀很不友好。

3.得小心避免參數重復問題,假設裝飾器sleep和裝飾器wait_time都使用time這個參數,將無法區分具體是哪個函數使用。

4.不利於擴展和維護,當功能過多時find_element的參數過於龐大。

如果只是簡單地封裝和使用,上面這種方式也能達到較好的效果。如果想進一步封裝,建議採用鏈式調用方式,裝飾器輔助封裝。例如

這樣函數的擴展性和可閱讀性有較大的提升

㈨ python3+selenium自動化測試-下拉選擇框13

(13)下拉選擇框
selenium的下拉選擇框。我們通常會遇到兩種下拉框,一種使用的是html的 標簽select ,另一種是使用 input標簽 做的假下拉框。
標簽select :需要用到 Select類 ,先要導入select方法,
from selenium.webdriver.support.select import Select
input標簽 :通常的處理方式與其他的元素類似,點擊或使用JS等。

認識一下select下拉框選擇:
<select id="nr" name="NR">
<option selected="" value="10">每頁顯示10條</option>
<option value="20">每頁顯示20條</option>
<option value="50">每頁顯示50條</option>

定位:
1、通過select選項的索引來定位選擇對應選項(從0開始計數),如選擇第三個選項:select_by_index(2)
2、通過選項的value值來定位,select_by_value("20")
3、通過選項的文本內容來定位。select_by_visible_text("每頁顯示50條")

Select提供了三種 選擇方法
select_by_index(index) ——通過選項的順序,第一個為 0
select_by_value(value) ——通過value屬性
select_by_visible_text(text) ——通過選項可見文本

同時,Select提供了四種方法 取消選擇
deselect_by_index(index) --取消對應index選項
deselect_by_value(value) --取消對應value選項
deselect_by_visible_text(text) --取消對應文本選項
deselect_all() --取消所有選項

Select為你提供了相應的方法(或者應該說是屬性了),用來查看選中了哪一項:
options ——提供所有的選項的列表,其中都是選項的WebElement元素
all_selected_options ——提供所有被選中的選項的列表,其中也均為選項的WebElement元素
first_selected_option ——提供第一個被選中的選項,也是下拉框的默認值

熱點內容
scratch少兒編程課程 發布:2025-04-16 17:11:44 瀏覽:640
榮耀x10從哪裡設置密碼 發布:2025-04-16 17:11:43 瀏覽:368
java從入門到精通視頻 發布:2025-04-16 17:11:43 瀏覽:84
php微信介面教程 發布:2025-04-16 17:07:30 瀏覽:310
android實現陰影 發布:2025-04-16 16:50:08 瀏覽:793
粉筆直播課緩存 發布:2025-04-16 16:31:21 瀏覽:345
機頂盒都有什麼配置 發布:2025-04-16 16:24:37 瀏覽:213
編寫手游反編譯都需要學習什麼 發布:2025-04-16 16:19:36 瀏覽:812
proteus編譯文件位置 發布:2025-04-16 16:18:44 瀏覽:366
土壓縮的本質 發布:2025-04-16 16:13:21 瀏覽:593