ruby之selenium自動化 or ruby爬蟲利器-selenium


 

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

  

 


免責聲明!

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



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