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. BZOJ4145_The Prices_KEY

    题目传送门 看到M<=16经典状态压缩的数据范围,考虑题目. 一道类似于背包的题目. 设f[i][j]表示前i个商店,物品购买状态为j. 先将f[i][j]加上w[i](到i的路费),转移一次, ...

  2. 4515: [Sdoi2016]游戏

    4515: [Sdoi2016]游戏 链接 分析: 树链剖分 + 超哥线段树.注意细节. 代码: #include<cstdio> #include<algorithm> #i ...

  3. LOJ #2473. 「九省联考 2018」秘密袭击

    #2473. 「九省联考 2018」秘密袭击 链接 分析: 首先枚举一个权值W,计算这个多少个连通块中,第k大的数是这个权值. $f[i][j]$表示到第i个节点,有j个大于W数的连通块的个数.然后背 ...

  4. html5新特性data_*自定义属性使用

    HTML5规范里增加了一个自定义data属性. 这个自定义data属性的用法非常的简单, 就是你可以往HTML标签上添加任意以 "data-"开头的属性, 这些属性页面上是不显示的 ...

  5. python 实现字符串的切片功能

    '''string切片''' def string_split(stringone,split): m = [] if type(split)!=str: return False if split ...

  6. 开源第三方登录组件OAuthLogin2.0 架构解析及开源地址

    OAuthLogin2.0介绍地址: 入门地址:http://www.cnblogs.com/dazhuangtage/p/6306133.html Nuget地址:https://www.nuget ...

  7. linux(模糊批量删除文件)删除指定文件夹中某个文件除外的其他文件

    # shopt -s extglob# rm -fr !(file1)如果是多个要排除的,可以这样:# rm -rf !(file1|file2)首先科普下shopt -s extglobBash S ...

  8. MUI的踩坑笔记

    最近在做公司项目的手机端实现,稍微记录下遇到的坑 1.在app开发中,若要使用HTML5+扩展api,必须等plusready事件发生后才能正常使用,mui将该事件封装成了mui.plusReady( ...

  9. django1.11入门

    快速安装指南¶ 在使用Django之前,您需要安装它.我们有 完整的安装指南,涵盖所有可能性; 本指南将指导您进行简单,最小化的安装,在您完成介绍时可以正常工作. 安装Python¶ 作为一个Pyth ...

  10. iOS - Bundle 资源文件包生成和常见资源文件使用

    1.Bundle 文件 Bundle 文件,就是资源文件包.我们将许多图片.XIB.文本文件组织在一起,打包成一个 Bundle 文件.方便在其他项目中引用包内的资源. Bundle 文件是静态的,也 ...