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