selenium之数据驱动框架应用WPS个人中心自动签到
wps在注册后,有个每日签到的功能,签到后有几率送wps的专属金币【稻米】,为了免费获得,又不想每天都是人工去执行签到动作,所以用selenium写了个小脚本,准备用数据驱动框架来完成这个事情,数据驱动那就要有数据,这个数据就是元素定位文件,本脚本中我用wpsLoginInfo.properties文件
#wps 登入信息
wps.platform.url=https://vip.wps.cn/
wps.admin.userName=你的wps帐号
wps.admin.password=你的wps密码
#点击登入
wps.HomePage.loginLink=css->#header > div > div.top_r > div.top_login > div.top_lg_link > a
#选择登入方式
wps.HomePage.loginWay=css->body > div.login > div.login_n > div.login_icon > div.icon_section > a.btn_icon_wps
#帐号
wps.HomePage.userName=css->#email
#密码
wps.HomePage.password=css->#password
#选择不要自动登入
wps.HomePage.chooseNotAutoLogin=css->#keepOnline
#登入按钮
wps.HomePage.loginButton=css->#login
#等登入成功跳转界面用户名出来
wps.HomePage.waitSuccessInfo=css->#header > div > div.top_r > div.top_login > div.top_lg_info > span.user_name > a
#直接进入翻牌签到界面
wps.HomePage.intoSignInWebUrl=https://vip.wps.cn/sign/iframe?day=0&daySignRewards=
#选牌
wps.HomePage.chooseBoard=css->#awardUL > li.award_li7 > div > div.cardback
#直接进入个人中心
wps.HomePage.intoCenter=https://vip.wps.cn/center/
#等待个人中心加载完毕
wps.HomePage.waitCenter=css->#loginbar > div > div.roulette > a
有了数据,那剩下的就是获取这些数据并定位元素了
package pageObjects; import initWebDriver.InitBaseInfo;
import modules.Common;
import org.openqa.selenium.support.PageFactory;
import util.ObjectMap; /**
* Created by xxy on 2015/10/22.
*/
public class WPSLoginPage extends InitBaseInfo {
private String url;
private String userName;
private String passWord;
private ObjectMap login_property_url;
private Common common; public WPSLoginPage() throws Exception {
common = new Common();
login_property_url = new ObjectMap(wpsoginPropertyUrl);
this.url = login_property_url.getLoginInfo("wps.platform.url");
this.userName = login_property_url.getLoginInfo("wps.admin.userName");
this.passWord = login_property_url.getLoginInfo("wps.admin.password");
PageFactory.initElements(driver, this);
} public void openUrl() throws Exception {
driver.get(this.url);
} public void clickLoginLink() throws Exception {
common.webElement(driver, login_property_url.getLocator("wps.HomePage.loginLink")).click();
} public void ChooseLoginWay() throws Exception {
common.webElement(driver, login_property_url.getLocator("wps.HomePage.loginWay")).click();
} public void inputUserName() throws Exception {
common.webElement(driver, login_property_url.getLocator("wps.HomePage.userName")).sendKeys(userName);
} public void inputPassWord() throws Exception {
common.webElement(driver, login_property_url.getLocator("wps.HomePage.password")).sendKeys(passWord);
} public void chooseNotAutoLogin() throws Exception {
common.webElement(driver, login_property_url.getLocator("wps.HomePage.chooseNotAutoLogin")).click();
} public void clickLoginButton() throws Exception {
common.webElement(driver, login_property_url.getLocator("wps.HomePage.loginButton")).click();
} public void signIn() throws Exception {
common.webElement(driver, login_property_url.getLocator("wps.HomePage.waitSuccessInfo"));
driver.get(login_property_url.getLoginInfo("wps.HomePage.intoSignInWebUrl"));
Thread.sleep(5000);
common.webElement(driver, login_property_url.getLocator("wps.HomePage.chooseBoard")).click();
driver.get(login_property_url.getLoginInfo("wps.HomePage.intoCenter"));
common.webElement(driver, login_property_url.getLocator("wps.HomePage.waitCenter"));
}
}
每个元素定位的方法已经有了,那剩下的就是调用这些方法了
package testScripts; import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
import pageObjects.WPSLoginPage; /**
* Created by xxy on 2015/10/22.
*/
public class WPSLoginTest {
private static WPSLoginPage page; @BeforeClass
public void beforeClass() throws Exception {
page = new WPSLoginPage();
page.openUrl();
} @Test
public void login() throws Exception {
page.clickLoginLink();
page.ChooseLoginWay();
page.inputUserName();
page.inputPassWord();
page.chooseNotAutoLogin();
page.clickLoginButton();
page.signIn();
}
}
最后用maven启动项目即可,本文章中列举了重点的地方,其他的脚本内容可以自行定义,脚本使用目前自动化比较传统的数据驱动框架,框架结构我已经写好了,使用的testNG+maven项目结构,只要下载后打开项目即可成功执行,我是建议在写个bat脚本来执行这个脚本,好处是只要开机,使用鼠标双击bat文件,就可以自动签到,bat的脚本如下,脚本路径自己自定义
d:
cd D:\java\ideaWorkStation\autoLoginSeleniumProject
mvn test
selenium之数据驱动框架应用WPS个人中心自动签到的更多相关文章
- Selenium WebDriver 数据驱动测试框架
Selenium WebDriver 数据驱动测试框架,以QQ邮箱添加联系人为示例,测试框架结构如下图,详细内容请阅读吴晓华编著<Selenium WebDiver 实战宝典>: Obje ...
- 游戏UI框架设计(6): 消息传递中心
游戏UI框架设计(6) --消息传递中心 最近一直忙于一个益智类游戏的研发工作,所以博客有段时间没有更新了.经过朋友的督促,决定这两天立刻完成最后的两篇博客讲解(UI框架).说起“消息传递中心”,或者 ...
- selenium pyunit单元测试框架
selenium pyunit单元测试框架 #PyUnit框架 #coding = utf - 8 #将要被测试的类 class Widget: def __int__(self,size = (40 ...
- spring框架学习(四)自动装配
set注入和构造注入有时在做配置时比较麻烦.所以框架为了提高开发效率,提供自动装配功能,简化配置.spring框架式默认不支持自动装配的,要想使用自动装配需要修改spring配置文件中<bean ...
- 3分钟手把手带你搭建基于selenium的自动化框架
1 .什么是seleniumSelenium 是一个基于浏览器的自动化工具,它提供了一种跨平台.跨浏览器的端到端的web自动化解决方案.Selenium主要包括三部分:Selenium IDE.Sel ...
- Selenium+Java完整框架搭建(2019完整版)
一.WebDriver框架开发实战 1.框架的思想 (1)什么是框架? 框架是可以被应用开发者定制的应用骨架 (2)为什么要写框架? 提高脚本可维护性 提高编写脚本的速度 提高脚本可阅读性 (3)框架 ...
- selenium浏览器自动化测试框架文档(修正版)
写在最前面:目前自动化测试并不属于新鲜的事物,或者说自动化测试的各种方法论已经层出不穷,但是,能够在项目中持之以恒的实践自动化测试的团队,却依旧不是非常多.有的团队知道怎么做,做的还不够好:有的团队还 ...
- 2020 | 可替代Selenium的测试框架Top15
本文首发于 微信公众号: 软测小生 Selenium是一种开源自动测试工具.它可以跨不同的浏览器和平台在Web应用程序上执行功能,回归,负载测试.Slenium是最好的工具之一,但确实有一些缺点. 业 ...
- python+selenium简易自动化框架,包含生成测试报告以及发送结果至Email
Selenium+python环境搭建见虫师的pdf文档,非常详尽 简易框架: 1.文件目录:
随机推荐
- [COGS257]动态排名系统 树状数组套主席树
257. 动态排名系统 时间限制:5 s 内存限制:512 MB [问题描述]给定一个长度为N的已知序列A[i](1<=i<=N),要求维护这个序列,能够支持以下两种操作:1.查询A[ ...
- Qt5.4 All Modules
Qt5.4 All Modules Qt Essentials Qt essentials define the foundation of Qt on all platforms. They are ...
- python+soket实现UDP协议的客户/服务端中文聊天程序
没什么特别的东西,网上烂大街的C/S框架.(基于windows 7 + python 3.4) 为了实现中文聊天,我加入了一点修改: msg.encode('utf-8') # msg 为输入(且将要 ...
- 数据增强利器--Augmentor
最近遇到数据样本数目不足的问题,自己写的增强工具生成数目还是不够,终于在网上找到一个数据增强工具包,足够高级,足够傻瓜.想要多少就有多少!再也不怕数据不够了! 简介 Augmentor是一个Pytho ...
- 10-[协程] greenlet模块、 gevent模块
1.greenlet模块:实现20个任务切换 如果我们在单个线程内有20个任务,要想实现在多个任务之间切换,使用greenlet模块可以非常简单地实现这20个任务直接的切换 使用yield生成器的方式 ...
- 11 基于django的图书管理系统 多表
1.需求 作业需求:1.列出图书列表.出版社列表.作者列表2.点击作者,会列出其出版的图书列表3.点击出版社,会列出旗下图书列表4.可以创建.修改.删除 图书.作者.出版社 踩分点:1.满足需求1,2 ...
- [NOI2007]货币兑换 cdq分治,斜率优化
[NOI2007]货币兑换 LG传送门 妥妥的\(n \log n\)cdq做法. 这题用cdq分治也可以\(n \log n\)但是在洛谷上竟然比一些优秀的splay跑得慢真是见了鬼了看来还是人丑常 ...
- CodeForces 915D Almost Acyclic Graph
Description You are given a directed graph consisting of \(n\) vertices and \(m\) edges (each edge i ...
- Python中re模块详细介绍
正则的介绍及应用实例详解 """ 1.什么是正则 正则就是用一系列具有特殊含义的字符组成一套规则,该规则用来描述具有某一特征的字符串, 正则就是用来去一个大的字符串中匹配 ...
- 菜鸟vimer成长记——第0章、我眼中的vim学习
这是一系统总结vim的学习文章,记录我自己学习vim的过程和感悟.与此同时也想分享出来给大家,欢迎大家互相讨论和学习. 在这里假设你们对vim已经有了一些基本的认识或者说已经使用过几个月的vim.该系 ...