selenium是什么?自動化測試工具,他支持各種瀏覽器,chrome,firefox等,我們可以在這些瀏覽器里面安裝插件,可以方便的進行web測試,也可以通過代碼操作,直接對web界面進行測試。
selenium支持多種語言開發java、python、ruby、c#、js、php等。這邊,我用的是ruby+selenium,通過簡單的描述,對selenium也有了大概的認識,讓我們實際操作一下。我介紹的比較基礎,cookie,驗證碼處理,郵箱驗證等這些,先不作詳細介紹!基礎這邊我會比較詳細的介紹!
開發環境:ruby安裝在centos虛擬機上,因為win不太適合做ruby開發
ruby安裝結束后,在安裝se(selenium簡稱se)
主機是win10
first:我們安裝虛擬機centos后,先安裝ruby,ruby的安裝步驟就不說了,ruby安裝結束后,安裝selenium
gem install selenium-webdriver
這里,se就安裝好啦,然后呢因為我一般啟動win10上的chrome,不起動虛擬機的,虛擬機比較卡,所以我在win10上安裝java包,和Chromedriver,可以去https://www.seleniumhq.org/download/這里下載

我這邊已經安裝好了,然后我們win+r進入這個目錄,輸入以下命令,就相當於把selenium的服務器開起來了。

second:我們就進行一些簡單的網頁操作,用ruby+selenium來操作
在虛擬機下,敲入下面三條,你就會發現selenium控制chrome打開了瀏覽器窗口
第一條命令我們要使用這個包,第二條命令我們是要啟動chrome瀏覽器,第三條,我們要啟動的是我本地win10的chrome瀏覽器,這個ip地址就是win10的ip地址,selenium的端口號就是4444
require "selenium-webdriver" caps = Selenium::WebDriver::Remote::Capabilities.chrome driver = Selenium::WebDriver.for :remote, url: 'http://192.168.16.139:4444/wd/hub', desired_capabilities: caps
先隨便打開一個網址,比如打開google
driver.get "https://www.google.com"

(1)向搜索欄輸入hello,下面是搜索欄的位置

我們可以這樣子獲取這個元素,提供(xpath,css獲取元素)
xpath:
element1 = driver.find_element(:xpath,"//*[@id=\"lst-ib\"]")
element1.send_keys("hello")
css:
element2 = driver.find_element("css","input#lst-ib")
element1.send_keys("hello")
(2)點擊提交按鈕

driver.find_element(:xpath,"//*[@id=\"tsf\"]/div[2]/div[3]/center/input[1]").click
(3)清楚搜索欄的元素
driver.find_element("css","input#lst-ib").clear()
(4)想獲取全網站的內容
content = driver.find_element(:xpath,"//html").attribute("outerHTML")
or
content = driver.page_source
(5)頁面切換,如果切換后一個此時,windowName 就是last,再切回來就是first
driver.switch_to_window("windowName")
(6)瀏覽器的前進和后退,獲取當前的url
driver.navigate.forward driver.navigate.back
driver.current_url
(7)最大化瀏覽器,以及設置瀏覽器的長寬
driver.manage.window.maximize driver.manage.window.resize_to(600,400)
(8)定位一組,多個元素的定位就在find_element后面加s,舉一個簡單的例子
一個網頁一雙鞋子,可能有多個size,我們先隨機選擇一個,size是總的,下面寫偽代碼 size = driver.find_elements(:xpath,"鞋子的select的位置") size[rand(size.length-1)].click
(9)設置代理和cookie登入
caps = Selenium::WebDriver::Remote::Capabilities.chrome( "@capbalities" => {"proxy"=>proxy,"cookie"=>cookie} )
driver = Selenium::WebDriver.for :remote, url: 'http://192.168.16.139:4444/wd/hub', desired_capabilities: caps
(10)關閉瀏覽器
driver.quit
(11)將鼠標移向指定位置,有時候有些按鈕不可以點擊的,你要移動在這個元素的位置上,一直保持着,才會加載出別的東西來,
driver.action.move_to("元素位置").perform
先介紹到這里,至於cookie保存和導入,有時候注冊頁面主要發送認證郵箱,就是認證地址的點擊,還有一些驗證碼的處理,這邊就不做介紹了。
其實selenium是一個很好玩的東西,我曾經拿這個去注冊一些平台,發表博客--自動注冊和自動登入然后在發表博客。以上說的比較簡單,但是簡單的過程大家可以先體會,但是我測試的復雜的網站都包含以上部分,以上部分需要大家去專研,因為三言兩語說不清。
目前我拿selenium來做自動化測試+爬蟲,覺得還是蠻好玩的,慢慢挖掘中!
這個文檔還是不錯的,很詳細介紹:https://www.seleniumhq.org
