51Testing软件测试论坛

标题: 如何爬取淘宝登录页面?Selenium告诉你! [打印本页]

作者: 啦啦啦啦哈    时间: 2017-7-17 10:42
标题: 如何爬取淘宝登录页面?Selenium告诉你!
【转帖】Selenium是目前最火的浏览器端自动化测试框架。Selenium有如下优点:支持多种语言编写的测试脚本;支持主流的浏览器(chrome、ie7+、firefox、safari、opera等);直接调用浏览器的本地接口,就像你直接操作浏览器一样;可以手写测试脚本,也可以通过ide录制测试脚本。
【Selenium1.0 VS Selenium2.0】
Selenium有1.0和2.0之分,那他们又有什么关系呢,下面我们先理理他们直接的关系。
Selenium1.0包括三个部分:selenium IDE、seleniumGrid、selenium RC。
▪ selenium IDE:firefox的一个插件,可以录制和回放脚本。
▪ selenium Grid:用于实现分布式测试。利用Grid,可以很方便地同时在多台机器上和异构环境中并行运行多个测试事例。
▪ selenium RC:Selenium 的核心部分,可以实现利用Selenium的代理服务器来实现访问浏览器实现自动化测试。Selenium RC又分为client和selenium server;client实现自动化脚本,selenium server负责控制浏览器行为。
Selenium1.0 使用的是javascript注入技术与浏览器打交道,稳定性大大依赖于Selenium内核翻译的javascript脚本的质量。Selenium 2.0 则是把selenium 1.0中selenium RC替换为了WebDriver。WebDriver利用浏览器原生的API,封装成一套更加面向对象的SeleniumWebDriverAPI,直接操作浏览器页面里的元素。所以selenium2.0=selenium1.0 + WebDriver。同时2.0还实现了一些1.0无法实现的功能例如:文件上传下载、弹出窗口操作、对话框操作;
【Selenium操作元素】
一、定位元素
自动化就是定位元素,操作元素的过程。Selenium通过下面几个静态类实现:
[attach]107501[/attach]
首先加载浏览器驱动,新建一个浏览器驱动对象:ChromeDriver driver = new ChromeDriver()。
Webdriver的findElement方法可以用来找到页面的某个元素,最常用的方法是用id和name查找。下面介绍几种比较常用的方法:
▲ By ID
假设页面写成这样:
[attach]107502[/attach]
那么可以这样找到页面的元素:
通过id查找:
[attach]107503[/attach]
▲ By Name
通过name查找:
[attach]107504[/attach]
▲ By XPATH
[attach]107505[/attach]
▲ By Class Name
假设页面写成这样:
[attach]107506[/attach]
可以通过这样查找页面元素:
[attach]107507[/attach]
▲By Link Text
假设页面元素写成这样:
[attach]107508[/attach]
那么可以通过这样查找:
[attach]107509[/attach]
二、 操作元素
▲yi 对输入框的操作
获取输入框元素:
[attach]107510[/attach]
在输入框中输入内容:
[attach]107511[/attach]
将输入框清空:
[attach]107512[/attach]
获取输入框的文本内容:
[attach]107513[/attach]
▲ 按钮
找到按钮元素:
[attach]107514[/attach]
点击按钮:
[attach]107515[/attach]
判断按钮是否enable:
[attach]107516[/attach]
▲ 表单
Form中的元素的操作和其它的元素操作一样,对元素操作完成后对表单的提交可以:
[attach]107517[/attach]

[attach]107518[/attach]
(但适合于表单提交)
▲Windows 和 Frames之间的切换
切换到某个frame:
[attach]107519[/attach]
从一个frame切换到另一个frame:
[attach]107520[/attach]
切换到某个window:
[attach]107521[/attach]
▲ 拖拽
[attach]107522[/attach]
▲ 访问网站
[attach]107523[/attach]
【基于chrome的淘宝登陆自动化】
一、 环境准备
使用的开发工具是MyEclipse,java开发环境已经配置完成。下载与浏览器版本对应的selenium包和浏览器驱动,我是通过指定浏览器驱动的绝对路径来加载驱动程序的。将selenium的依赖包导入java工程:
▪ Chrome驱动下载(点击直达):http://chromedriver.storage.googleapis.com/index.html
▪ Jar包下载(点击直达):http://docs.seleniumhq.org/projects/webdriver/
[attach]107524[/attach]
二、 测试程序编写
通过System的setProperty方法来指定浏览器的驱动地址,加载驱动成功后,通过new来创建一个驱动对象。如果不想用setProperty的方式,可以将chromedriver.exe 放在”C:\Windows\System32”路径下或者path可以找到的路径下并重启电脑即可:
[attach]107525[/attach]
通过get方法访问网站,也可以使用navigate方法访问,但是navigate完全依赖于底层的浏览器。果两种浏览器的行为不一致,那么代码执行的效果也会不一致。打开浏览器后,通过maxmize方法将浏览器最大化:
[attach]107526[/attach]
通过linkText方法获取登陆元素,跳转到登陆界面:
[attach]107527[/attach]


作者: 草帽路飞UU    时间: 2017-7-17 11:50
哟,又可以回去试试了




欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2