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个人中心自动签到的更多相关文章

  1. Selenium WebDriver 数据驱动测试框架

    Selenium WebDriver 数据驱动测试框架,以QQ邮箱添加联系人为示例,测试框架结构如下图,详细内容请阅读吴晓华编著<Selenium WebDiver 实战宝典>: Obje ...

  2. 游戏UI框架设计(6): 消息传递中心

    游戏UI框架设计(6) --消息传递中心 最近一直忙于一个益智类游戏的研发工作,所以博客有段时间没有更新了.经过朋友的督促,决定这两天立刻完成最后的两篇博客讲解(UI框架).说起“消息传递中心”,或者 ...

  3. selenium pyunit单元测试框架

    selenium pyunit单元测试框架 #PyUnit框架 #coding = utf - 8 #将要被测试的类 class Widget: def __int__(self,size = (40 ...

  4. spring框架学习(四)自动装配

    set注入和构造注入有时在做配置时比较麻烦.所以框架为了提高开发效率,提供自动装配功能,简化配置.spring框架式默认不支持自动装配的,要想使用自动装配需要修改spring配置文件中<bean ...

  5. 3分钟手把手带你搭建基于selenium的自动化框架

    1 .什么是seleniumSelenium 是一个基于浏览器的自动化工具,它提供了一种跨平台.跨浏览器的端到端的web自动化解决方案.Selenium主要包括三部分:Selenium IDE.Sel ...

  6. Selenium+Java完整框架搭建(2019完整版)

    一.WebDriver框架开发实战 1.框架的思想 (1)什么是框架? 框架是可以被应用开发者定制的应用骨架 (2)为什么要写框架? 提高脚本可维护性 提高编写脚本的速度 提高脚本可阅读性 (3)框架 ...

  7. selenium浏览器自动化测试框架文档(修正版)

    写在最前面:目前自动化测试并不属于新鲜的事物,或者说自动化测试的各种方法论已经层出不穷,但是,能够在项目中持之以恒的实践自动化测试的团队,却依旧不是非常多.有的团队知道怎么做,做的还不够好:有的团队还 ...

  8. 2020 | 可替代Selenium的测试框架Top15

    本文首发于 微信公众号: 软测小生 Selenium是一种开源自动测试工具.它可以跨不同的浏览器和平台在Web应用程序上执行功能,回归,负载测试.Slenium是最好的工具之一,但确实有一些缺点. 业 ...

  9. python+selenium简易自动化框架,包含生成测试报告以及发送结果至Email

    Selenium+python环境搭建见虫师的pdf文档,非常详尽 简易框架: 1.文件目录:

随机推荐

  1. JavaScript总结(四)

    详解BOM(浏览器对象模型(Browser Object Model)) ✍ Window对象方法 方法 描述 alert() 显示带有一段消息和一个确认按钮的警告框 blur() 把键盘焦点从顶层窗 ...

  2. tkinter的GUI设计:界面与逻辑分离(一)-- 初次见面

    PyQt实现界面与逻辑分离的设计很是方便,详情可以见我的第一篇博文. 不过本文将使用python的标准库 tkinter,来实现界面与逻辑分离的GUI 设计. 我们来设计一个很简单的程序: 目的:长度 ...

  3. 【HNOI2015】实验比较

    题面 题解 首先将所有相等的用并查集缩点,然后会发现题目有一个很有用的性质: 对每张图片\(i\),小D都最多只记住了某一张质量不比\(i\)差的另一张图片\(K_i\). 于是将\(K_i\)作为\ ...

  4. Gitlab+Jenkins学习之路(七)之发布PHP项目

    使用git+jenkins实现持续集成 Step1:构建一个自由风格的php-deploy Step2:Gernal配置,丢弃旧的构建,防止jenkins构建较多之后变臃肿 Step3:源码管理:这里 ...

  5. move.js运动插件

    move.js 运动插件是一款针对元素动画效果的插件.可以运用此插件制作出各类元素效果. 插件GitHub地址:https://github.com/visionmedia/move.js 下面整理学 ...

  6. Spark计算模型RDD

    RDD弹性分布式数据集 RDD概述 RDD(Resilient Distributed Dataset)叫做弹性分布式数据集,是Spark中最基本的数据抽象,它代表一个不可变.可分区.里面的元素可并行 ...

  7. 服务端模版注入漏洞检测payload整理

    服务端模版注入漏洞产生的根源是将用户输入的数据被模版引擎解析渲染可能导致代码执行漏洞 下表涵盖了java,php,python,javascript语言中可能使用到的模版引擎,如果网站存在服务端模版注 ...

  8. Java将json字符串转成map

    Map<String, Object> map = (Map<String, Object>) JSONUtils.parse(result)

  9. java的内存管理机制

    1.内存区域的分类 栈内存:基本类型变量和对象的引用,优势在于存取速度快 堆内存:new创建的对象和数组以及对象的实例化变量,优势在于动态分配内存,但是存取速度相对较慢 2.不同类型的内存分配 (1) ...

  10. Daily Scrumming 2015.10.21(Day 2)

    今明两天任务表 Member Today’s Task Tomorrow’s Task 江昊 配置ruby与rails环境 配置mysql与数据库用户管理 配置apache2环境 学习rails Ac ...