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.文件目录:
随机推荐
- python+soket实现UDP协议的局域网广播程序
# udp_gb_server.py '''服务端(UDP协议局域网广播)''' import socket s = socket.socket(socket.AF_INET, socket.SOCK ...
- 17-[模块]-time&datetime
1.表示时间time方式 在Python中,用三种方式来表示时间,分别是时间戳.格式化时间字符串和结构化时间 1.时间戳(timestamp):也就是1970年1月1日之后的秒, 例如15063882 ...
- 【BZOJ1070】[SCOI2007]修车
[BZOJ1070][SCOI2007]修车 题面 以后要多写题面flag 题目描述 同一时刻有\(N\)位车主带着他们的爱车来到了汽车维修中心.维修中心共有\(M\)位技术人员,不同的技术人员对不同 ...
- python爬虫之urllib库介绍
一.urllib库 urllib是Python自带的一个用于爬虫的库,其主要作用就是可以通过代码模拟浏览器发送请求.其常被用到的子模块在Python3中的为urllib.request和urllib. ...
- UWP 应用程序名称本地化以及商店显示名称本地化
大家应该都知道,在做多语言的时候,我们一般会让App名字也会随着语言变化而本地化. 比如我的App微识别 https://www.microsoft.com/store/productId/9PDSN ...
- AgileRepository - 一个基于接口的Repository快速开发库
AgileRepository 这是一个可以帮助你快速开发Repository的lib.有点像SpringData JPA根据方法名.注解来自动生成查询方法的功能. 对于一些简单的查询,只需要定义接口 ...
- express的web server设置流程
对于express的设置,一直是拿来就用,只知其然,今天查了一下文档,记录详细过程如下. 1.实现基本常用功能需要的模块path 用来处理路径字符串拼接,设置模板路径和静态资源路径时使用cookie- ...
- elementUI el-select 多选情况下包含全部选项,及获得选中项的label
<template> <div> <span style="margin-left:30px;font-weight:bolder;">教练: ...
- Netty源码分析第8章(高性能工具类FastThreadLocal和Recycler)---->第3节: recycler的使用和创建
Netty源码分析第八章: 高性能工具类FastThreadLocal和Recycler 第三节: recycler的使用和创建 这一小节开始学习recycler相关的知识, recycler是n ...
- [转载]java面试中经常会被问到的一些算法的问题
Java面试中经常会被问到的一些算法的问题,而大部分算法的理论及思想,我们曾经都能倒背如流,并且也能用开发语言来实现过, 可是很多由于可能在项目开发中应用的比较少,久而久之就很容易被忘记了,在此我分享 ...