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

  

 

posted @ 2018-09-20 10:33  WangHello  阅读(1759)  评论(0编辑  收藏  举报