zoukankan      html  css  js  c++  java
  • 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:javaideaWorkStationautoLoginSeleniumProject
    mvn test
  • 相关阅读:
    分布式session管理解决方案
    RabbitMQ知识汇总
    RabbitMQ之集群模式总结
    Flexbox参数详解
    CSS Lint
    javascript中的defer属性和async属性
    简介BFC
    GIT 牛刀小试 (第二发)
    GIT 牛刀小试 (第一发)
    如何让浏览器支持HTML5标签
  • 原文地址:https://www.cnblogs.com/xxyBlogs/p/7133197.html
Copyright © 2011-2022 走看看