从签到脚本到自动化(一)
来源:互联网 发布:数据分析研究生 编辑:程序博客网 时间:2024/05/01 07:52
前一段时间好多同事因为签到或代签原因被重重罚了一笔。呵呵,本着潜心研究技术的目地,私下搞了两套签到脚本,同时也是复习一下好久不用的Java技术。
一.前台模拟页面登陆
第一套采用的是一套开源的自动化框架:WebDriver,模拟从页面登陆,填写签到信息,最终端到签到的整个流程。
先介绍一下WebDriver框架,官方介绍内容如下:
WebDriver is a tool for automating testing web applications, and in particular to verify that they work as expected. It aims to provide a friendly API that’s easy to explore and understand, which will help make your tests easier to read and maintain. It’s not tied to any particular test framework, so it can be used equally well with JUnit, TestNG or from a plain old “main” method.
翻译一下:
WebDriver是一套web应用的自动化测试工具,用于验证这些Web应用工作时是否达到预期。WebDriver旨在提供一套友好的API,易于研究与理解,可以使测试变得更容易,且易于维护。WebDriver并未绑定任何特殊的自动化框架,所以你可以很容易地将它和JUnit、TestNG,甚至可以直接从main方法开始写自动化。
签到登陆部分
1.看代码很容易就理解了,driver.findElement还是很好用的,除了不能直接抓取外(firefox下的webdriver是可以的,可惜咱的工作的系统不支持),支持从name、id、xpath等各种Web应用通常采用的查找方式。
01
WebDriver driver =
new
InternetExplorerDriver();
02
//打开IE浏览器,输入签到系统地址。
03
driver.get(WEB_HOME);
04
05
// 输入登陆信息并提交
06
driver.findElement(By.name(
"userId"
)).sendKeys(USERNAME);
07
driver.findElement(By.name(
"userPwd"
)).clear();
08
driver.findElement(By.name(
"userPwd"
)).sendKeys(PASSWORD);
09
driver.findElement(By.xpath(
"//input[@type='submit']"
)).sendKeys(
10
Keys.ENTER);
11
12
// 延时确保页面加载完成
13
try
{
14
TimeUnit.SECONDS.sleep(
3
);
15
}
catch
(InterruptedException e) {
16
e.printStackTrace();
17
}
上面代码执行完成之后就到了如下界面:
2.点击“签到/签退”链接并签到
这个时候处理就有点棘手了,因为必须要先点左边的“签到/签退”才能到真正要签到的页面,而左侧整个版本是在一个iframe中。熟悉Web开发的人肯定都知道,一个iframe就是一个页面,因此直接在当前页是获取不到这个“签到/签退”链接,必须要进入iframe页面才行,右半边也是同样的道理,好在WebDriver可以很方便的切换iframe,代码如下:
01
// 跳转到左侧
02
driver.switchTo().frame(
"leftFrame"
);
03
driver.findElement(By.linkText(
"签到/签退"
)).sendKeys(Keys.ENTER);
04
05
// 延时确保页面加载完成
06
try
{
07
TimeUnit.SECONDS.sleep(
3
);
08
}
catch
(InterruptedException e) {
09
e.printStackTrace();
10
}
再用同样的方式跳转到右侧后,真正的工作就开始啦~~嘿嘿,短短两行代码,结果你懂的:
1
// 输入签到签退信息
2
driver.findElement(By.id(
"remark"
)).sendKeys(content);
3
// 点击按钮提交签到
4
driver.findElement(By.xpath(
"//input[@value='签到']"
)).sendKeys(
5
Keys.ENTER);
虽然做完很兴奋,冷静下来这个明显还是有问题的,模拟用户操作的方式会存在很多问题,比如刚拷到白云的机器上试了一下,就有问题,弹出了一个没有预期的窗口,程序直接就中断了。
问题分析如下:
模拟操作时各种异常没能考虑。
没有定时执行的功能。
只有数十行代码,但涉及的资源包太多,打成JAR包后运行就已经有十几M了,相当臃肿。
- 从签到脚本到自动化(一)
- 从签到脚本到自动化(二)
- 如何从jenkins传递测试地址到自动化脚本
- 页面自动化之 selenium(一) 自动签到与签退
- Foursquare从Check-in(签到)到Radar(雷达)的自然变迁
- [从菜鸟到高手演练]之Linux下shell脚本的使用(一)
- 自动化脚本腾讯云配置集群(四)自动化安装从节点的JDK+Hadoop
- 选用python自动化脚本开发语言(一)
- Robot Framework自动化测试(一)---第一个脚本
- Robot Framework自动化测试(一)---第一个脚本
- Hadoop2.6.0自动化部署脚本(一)---神算子
- Robot Framework自动化测试(一)---第一个脚本
- Robot Framework自动化测试(一)---第一个脚本
- Robot Framework自动化测试(一)---第一个脚本
- Robot Framework自动化测试(一)---第一个脚本
- 【Git】自动化Maven项目构建脚本(一)
- python 自动化处理网页 (urllib , beatuifulsoup ,re)打卡签到
- TCL/EXPECT自动化测试脚本实例一 --- telnet到目标机器
- java 反编译利器!!
- 自定义Toast
- Linux中的completion
- Linux服务器性能小结
- django官方文档——发送邮件
- 从签到脚本到自动化(一)
- js表单验证非法字符
- django官方文档——Django settings
- 继续记录JAVA学习
- 【转】 se43修改sap标准菜单,登陆界面
- 从签到脚本到自动化(二)
- Java返回今天之后或之前的若干天(精确到小时)
- 户口本大小
- Java开源软件六大帮派