ruby/python/java全覆蓋的Selenium-Webdriver系列教程(1)————快速開始


Selenium 1.x時代已經遠去,它理應躺在歷史的角落里,靠着壁爐烤着火,抽着旱煙,在裊裊的升起的青煙中回憶那曾經屬於自己的美好時代。

不過事實卻並非如此,現今原本早應退役的selenium 1.x卻還是多數人堅定的選擇,究其原因不過是1.x時代遺留下了大量的文檔,代碼,教程讓人們誤以為1.x還是這個年代的主流,還應該光鮮亮麗在前台演出屬於它的美好。長江后浪推前浪,最為前浪的selenium 1.x的宿命應該是死在沙灘上。

好了,直入主題,由於開源社區不再維護selenium 1.x再加之更為先進的selenium 2.0確實有不少優勢之初可以完全取代1.x,在這里筆者會花一些筆墨,若干篇幅,爭取深入淺出的講解selenium 2.0的一些基本知識,常用方法和高級擴展,但由於筆者水平和時間精力等確實有限,文中應該避免不了謬誤和臆斷之處,還望眾位讀者多多海涵。

本文中所以代碼和示例均由Ruby/Python/Java編寫,本文介紹的webdriver api也主要是ruby/python/java binding。所以首先請確保ruby/python/java語言在開發環境上正確安裝。

教程的第一節從selenium 2.0和webdriver關系說起。

Selenium 2.0 和webdriver之間有什么關系,有什么不可告人的秘密?說來話長,但也簡單。Selenium 2.0其實就是webdriver。就像張飛就是張翼德,關羽就是關雲長一樣,叫法不同但內容卻是一樣的。

安裝ruby/python/java

  • ruby的話安裝ruby1.8.7以上的版本。注意selenium-webdriver只支持1.8.7以上的ruby版本;
  • python的話請安裝python2.x,本文寫作時webdriver尚不支持python3;
  • java的話請安裝jdk5以上的版本;

安裝selenium-webdriver

ruby 安裝selenium-webdriver

打開命令行,輸入下列代碼完成安裝。注意,如果你的開發環境需要http proxy的話,請注意在gem命令中加入–http_proxy參數;

    gem install selenium-webdriver [--http_proxy] 

在命令行中輸入gem list,如果selenium-webdriver正確安裝,則其應該出現在結果列表里。在本文寫作時,selenium webdriver的最新版本應該是2.32.1;

    gem list selenium-webdriver 

更具體的細節請參考這里

python 安裝selenium-webdriver

參見這里

java 安裝selenium-webdriver

安裝chrome

本文使用chrome作為測試瀏覽器進行講解,所以請確保開發環境上正確安裝了chrome。由於chrome版本更新較快,我們只需要選擇1個穩定版本安裝既可,本文中筆者使用的版本是chrome 23.0.1271.95, chrome driver的版本是26.0.1383.0;由於driver的版本高於chrome的版本,所以筆者在交互式環境中啟動chrome出有報錯信息,但只要chrome能啟動就好,報錯信息可以忽略。

安裝chrome driver和ie driver

參見這里

簡單的baidu test

下面我們寫幾行代碼在初次感受一下webdriver的魅力,好吧,說老實話原生的selenium webdriver並沒有什么獨特的魅力,相反到是watir-webdriver更加的平易近人老少咸宜。這個不是文本討論的范疇,暫且打住。

    # ruby 代碼
    require 'rubygems'  # for ruby187 only
    require 'selenium-webdriver'  

    driver = Selenium::WebDriver.for :chrome  
    driver.get "http://www.baidu.com"  
    sleep 3  

    driver.find_element(:id, 'kw').send_keys "Hello WebDriver!"     
    driver.find_element(:id, 'su').click

    puts driver.title     
    driver.quit  

    # python 代碼
    from time import sleep
    from selenium import webdriver

    driver = webdriver.Chrome()
    driver.get('http://www.baidu.com')
    sleep(3)

    driver.find_element_by_id('kw').send_keys('Hello WebDriver!')
    driver.find_element_by_id('su').click()

    print driver.title
    driver.quit()

    // java代碼
    // 文件BaiduTest.java
    import org.openqa.selenium.By;
    import org.openqa.selenium.WebDriver;
    import org.openqa.selenium.chrome.ChromeDriver;

    public class BaiduTest {

        public static void main(String[] args) {
            // TODO Auto-generated method stub
            WebDriver driver = new ChromeDriver();
            driver.get("http://www.baidu.com");

            driver.findElement(By.id("kw")).sendKeys("Hello Webdriver!");
            driver.findElement(By.id("su")).click();

            System.out.println(driver.getTitle());
            driver.quit();      
        }

    }

如果一切順利的話,這幾行代碼將會打開chrome瀏覽器,然后轉跳到baidu首頁。等待3秒后在搜索框中輸入Hello WebDriver並提交搜索結果至后台。然后在命令行打印出當前頁面的title,並關閉chrome瀏覽器。

如果你的代碼不能順利運行,請從如下幾個方面進行檢查。

ruby 版本

  • ruby的版本是否是1.8.7以上並正確安裝;
  • 是否正確安裝了Selenium WebDriver;
  • 代碼輸入是否有誤;
  • chrome driver是否正確安裝;
  • chrome版本與chrome driver版本是否適配,從理論上說,兩者版本號 基本 相同就可以了;

python 版本

  • python的版本是否是2.x並正確安裝;
  • 是否正確安裝了Selenium WebDriver;
  • 代碼輸入是否有誤;
  • chrome driver是否正確安裝;
  • chrome版本與chrome driver版本是否適配,從理論上說,兩者版本號 基本 相同就可以了;

java 版本

  • 是否安裝了jdk,注意不是jre;
  • 是否正確引入了jar包,一般來說你需要引入selenium-java-VERSION.jar以及selenium-server-standalone-VERSION.jar
  • 是否正確安裝了Selenium WebDriver;
  • chrome driver是否正確安裝;
  • chrome版本與chrome driver版本是否適配,從理論上說,兩者版本號 基本 相同就可以了;
  • 代碼輸入是否有誤;

Selenium-WebDriver ruby/python/java binding的安裝實際上非常的簡單和快速,稍微有點ruby/pyton/java基礎的讀者應該能夠順利的自行完成。

下一節將介紹webdriver的啟動和關閉,歡迎繼續關注。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM