Selenium2自動化測試實戰基於Python語言》讀書筆記--第2章
第2章 測試環境搭建
2.1 Windows下的環境搭建
Python 2 or Python 3?
書中是選擇使用了Python 3,我個人是選擇了適合當前產品的Python 2,大家各自看吧。
2.1.1 安裝Python
根據作業系統選擇對應版本進行安裝即可,不再贅述。
2.1.2 安裝setuptools與pip
setuptools是Python Enterprise Application Kit(PEAK)的一個副專案,它是Python的distutilsde工具的增強工具,可以讓程式猿更方便地建立和釋出Python包,特別是那些對其他包有依賴性的狀況。
當需要安裝第三方Python包時,經常會使用easy_install命令,其實該命令是由PEAK開發的setuptools包裡帶的一個簡易安裝命令,因此使用easy_install時實際上是在呼叫setuptools來完成安裝模組的工作。
pip是一個安裝和管理Python包的工具, 通過pip來安裝Python包變得十分簡單,省去了搜尋-查詢版本-下載-安裝等繁瑣的過程。pip的安裝依賴於setuptools,所以在安裝pip之前需要先安裝setuptools。
2.1.3 安裝Selenium
通過pip命令可以直接安裝Selenium:pip install selenium
當只輸入包名稱則預設安裝最新的版本,當然也可以指定版本號安裝:pip install selenium==2.48.0
檢視安裝的包的版本資訊:pip show selenium
2.1.4 安裝ActivePython
ActivePython是由ActiveState公司推出的Python專用程式設計和除錯工具。
ActivePython包含完整的Python核心,整合pip包管理工具,提供IDLE,以及WindowsAPIs服務等,總之非常完善,只是不開源,但可以免費使用。
Ps:本人使用的是Python2.7,所以下載的ActivePython也是針對此版本的。
2.2 Ubuntu下的環境搭建
Ubuntu自身對Python的依賴性較強,所以都是自帶Python,同時包含2和3兩個版本。
setuptools與pip已經存在於Ubuntu的軟體倉庫中,可以直接使用apt-get命令進行安裝:
<span style="color:#000000"><code>sudo apt-get install python3-setuptools
sudo apt-get install python3-pip</code></span>
- 1
- 2
安裝Selenium:pip install selenium
2.3 使用IDLE編寫Python
IDLE(Integrated Development Environment,整合開發環境)
Alt+P:回退到上一次編輯的程式碼
Alt+N:前進到下一次編輯的程式碼
2.4 編寫第一個自動化指令碼
baidu.py
<span style="color:#000000"><code class="language-python"><span style="color:#880000"># -*- coding:utf-8 -*-</span>
<span style="color:#000088">from</span> selenium <span style="color:#000088">import</span> webdriver
driver = webdriver.Firefox()
driver.get(<span style="color:#009900">"https://www.baidu.com"</span>)
driver.find_element_by_id(<span style="color:#009900">"kw"</span>).send_keys(<span style="color:#009900">"Selenium2"</span>)
driver.find_element_by_id(<span style="color:#009900">"su"</span>).click()
driver.quit()</code></span>
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
對上述程式碼進行解釋:
# -*- coding:utf-8 -*-
防止亂碼問題,以及方便地在程式中新增中文註釋,把編碼統一成UTF-8,在Python2時代,這個基本是必須的,但是到了Python3時代就不那麼重要了。
from selenium import webdriver
匯入WebDriver包,才能使用WebDriver API進行自動化指令碼開發。
driver=webdriver.Firefox()
把webdriver的Firefox物件賦值給變數driver,只有獲得了瀏覽器物件後,才可以啟動瀏覽器,開啟網址,操作頁面元素,Firefox瀏覽器去掉預設已經在Selenium WebDriver包裡了,可以直接呼叫,如果是使用IE或者Chrome瀏覽器則需要安裝驅動才行。
driver.get("https://www.baidu.com")
獲得瀏覽器物件後,通過get()方法,可以向瀏覽器傳送網址URL。
driver.find_element_by_id("kw").send_keys("Selenium2")
關於頁面元素的定位在後面會相吸介紹,這裡是通過id=kw,定位到百度的輸入框,並通過鍵盤輸入方法send_keys()向百度輸入框裡輸入“Selenium2”搜尋關鍵字。
driver.find_element_by_id("su").click()
這一步通過id=su定位“百度一下”搜尋按鈕,並向搜尋按鈕傳送單擊事件click()。
driver.quit()
退出並關閉瀏覽器及相關的驅動程式。
這裡在實際執行中遇到了一個問題,當執行該指令碼時,出現了錯誤提示:
<span style="color:#000000"><code>selenium.common.exceptions.WebDriverException: <span style="color:#000088">Message</span>: <span style="color:#009900">'geckodriver'</span> executable needs <span style="color:#000088">to</span> be <span style="color:#000088">in</span> PATH.</code></span>
- 1
在網上搜了一下,發現是Firefox高版本需要使用 geckodriver 來驅動,不再使用Selenium預設自帶的Firefox webdriver。
需要在下面這個地址下載 geckodriver 並將其放在系統環境變數PATH目錄裡即可:
https://github.com/mozilla/geckodriver/releases
這裡我是直接把下載到的檔案放在了Python的安裝目錄裡,再次執行指令碼發現還有錯誤,這次錯誤簡單了,就是無法訪問網頁,這個查自己的主機發現是訪問百度出了點問題,修改一下DNS就解決了。
不過還有個問題: 整個過程,很快,就是開啟瀏覽器,輸入百度地址搜尋關鍵字,然後瀏覽器就關閉了,根本沒截到圖,要想截到圖,就得註釋掉driver.quit()
這句,效果就出來了:
2.5 安裝瀏覽器驅動
WebDriver支援:
- Firefox(FirefoxDriver)
- IE(InternetExplorerDriver)
- Opera(OperaDriver)
- Chrome(ChromeDriver)
- Android(AndroidDriver)
- iPhone(IPhoneDrvier)
各個驅動的下載地址:http://www.seleniumhq.org/download/
操作步驟就是下載對應驅動,將驅動檔案放在Path環境變數目錄下即可。
2.6 不同程式語言下使用WebDriver
W3C(全球資訊網聯盟)對WebDriver做定義和規範:http://www.w3.org/TR/webdriver/
WebDriver:是一個遠端控制介面,支援反省和使用者代理的控制權。它提供了一個獨立於系統平臺和程式語言的線協議(Wire Protocol)作為一種遠端程式程式指示Web瀏覽器的行為。
- Java中引入Selenium WebDriver實現自動化測試
<span style="color:#000000"><code class="language-java"><span style="color:#000088">package</span> com.test.<span style="color:#000088">case</span>;
<span style="color:#880000">//新增Selenium(webdiver)引用</span>
<span style="color:#000088">import</span> org.openqa.selenium.By;
<span style="color:#000088">import</span> org.openqa.selenium.WebDriver;
<span style="color:#000088">import</span> org.openqa.selenium.firefox.*;
<span style="color:#000088">public</span> <span style="color:#000088">class</span> <span style="color:#4f4f4f">BaiduTest</span> {
<span style="color:#000088">public</span> <span style="color:#000088">static</span> <span style="color:#000088">void</span> <span style="color:#009900">main</span>(String[] args){
WebDriver driver = <span style="color:#000088">new</span> FirefoxDriver();
driver.get(<span style="color:#009900">"https://www.baidu.com"</span>);
driver.findElement(By.id(<span style="color:#009900">"kw"</span>)).sendKeys(<span style="color:#009900">"selenium2"</span>);
driver.findElement(By.id(<span style="color:#009900">"su"</span>)).click();
driver.quit();
}
}</code></span>
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- Ruby中引入Selenium WebDriver實現自動化測試
<span style="color:#000000"><code class="language-ruby"><span style="color:#880000">#匯入Selenium(webdriver)包</span>
<span style="color:#000088">require</span> <span style="color:#009900">'selenium-webdriver'</span>
driver = <span style="color:#009900">Selenium::WebDriver</span>.<span style="color:#000088">for</span> <span style="color:#006666">:firefox</span>
driver.navigate.to <span style="color:#009900">"https://www.baidu.com"</span>
driver.find_element(<span style="color:#006666">:id</span>, <span style="color:#009900">'kw'</span>).send_keys <span style="color:#009900">"selenium2"</span>
driver.find_element(<span style="color:#006666">:id</span>, <span style="color:#009900">'su'</span>).click()
driver.quit</code></span>
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
雖然在不同語言中語法上有差異,不過共同點都是:
- 首先匯入Selenium(webdriver)模組
- 呼叫Selenium的瀏覽器驅動,獲取瀏覽器控制程式碼(driver)並啟動瀏覽器
- 通過控制程式碼訪問百度URL
- 通過控制程式碼操作頁面元素(百度輸入框和按鈕)
- 通過控制程式碼關閉瀏覽器
2.7 總結
本章主要是介紹了selenium的一些概念、安裝、簡單示例、瀏覽器驅動、不同語言的支援。
內容並不複雜,主要是實操上與書中取得一致效果,對selenium有個初步的輪廓上的認識即可。
相關文章
- 《Selenium2自動化測試實戰基於Python語言》讀書筆記--第3章Python筆記
- 《Web介面開發與自動化測試(基於Python語言)》讀書筆記(一)WebPython筆記
- JB的閱讀之旅-Selenium2自動化測試實戰
- Selenium2Java自動化測試實戰讀書筆記(一)Java筆記
- 《Web介面開發與自動化測試基於Python語言》--第11章WebPython
- 基於Selenium2 與Python自動化測試環境搭建Python
- JMeter實戰-全棧效能測試第3、4章讀書筆記JMeter全棧筆記
- 基於Python豆瓣自動化測試【2】Python
- UI自動化測試實戰UI
- Go語言精進之路讀書筆記第46條——為被測物件建立效能基準Go筆記物件
- 基於postman的api自動化測試實踐PostmanAPI
- Java + SikuliX 基於影像實現自動化測試Java
- python介面自動化測試之python基礎語法Python
- 基於Python的測試驅動開發實戰Python
- 讀書筆記:組合語言(王爽)實驗七筆記組合語言
- C語言深度剖析——讀書筆記C語言筆記
- 基於Python的介面自動化實戰-基礎篇之讀寫配置檔案Python
- 基於 Htte 的 API 自動化測試API
- Go語言精進之路讀書筆記第45條——使用模糊測試讓潛在bug無處遁形Go筆記
- 《Maven實戰》之讀書筆記Maven筆記
- 基於Selenium+Python的web自動化測試框架PythonWeb框架
- python實戰-基於正交實驗(工具:allpairs)自動生成介面異常測試用例PythonAI
- 讀書寫筆記-王爽《組合語言》筆記組合語言
- 基於PhantomFlow的自動化UI測試UI
- swift - 基於TCL的自動化測試框架Swift框架
- 自動化測試進階課程——Selenium自動化測試通關實戰班
- 讀書筆記:《Python3網路爬蟲開發實戰》——第2章:爬蟲基礎筆記Python爬蟲
- 讀書筆記(四):深度學習基於Keras的Python實踐筆記深度學習KerasPython
- 【記】《.net之美》之讀書筆記(一) C#語言基礎筆記C#
- Selenium 自動化測試從零實戰
- python自動化測試Python
- 使用go語言開發自動化API測試工具GoAPI
- 《Go 語言程式設計》讀書筆記 (六) 基於共享變數的併發Go程式設計筆記變數
- 【讀書筆記】異化勞動筆記
- 自動化測試如此容易!多語言自動化測試框架 Selenium 程式設計(C#篇)框架程式設計C#
- 基於python+appium+yaml安卓UI自動化測試分享PythonAPPYAML安卓UI
- 基於 Pytest+Requests+Allure 實現介面自動化測試
- XtraBackup官方文件讀書筆記和測試筆記