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