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
原文地址:https://www.cnblogs.com/xxyBlogs/p/7133197.html