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有個初步的輪廓上的認識即可。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章