记一次java-selenium自动抢红包最简单案例1
案例网址:http://xinyue.qq.com/act/pc/xyjf/a20170907envelopes/index.htm?ADTAG=AD_gw.home.pt.2_dyghb.20170926&atm_cl=ad&atm_pos=13256&e_code=358951
案例介绍,一个腾讯的整点抢红包自动化。每天循环自动抢早10点整和晚上八点整的红包,此案例只有一个按钮较简单,适合入门。
遇到的问题:
1无法定位“抢”
百度搜“selenium如何进入frame”
2.程序提示缺少类
http://www.cnblogs.com/zdfbk/p/8183167.html打包教程
导包jar出来时报错缺少类,就是缺少包嘛,问了N个前辈,问了N个群其中很多个前辈不懂装懂,差点被带歪了(讲分布式啊,还有一个前辈远程帮忙搞还得反过来教他。—。—)。微微吐槽下。
有着前辈(某公司主管)陪伴信心倍增,找的很仔细找了一下午各种小问题都处理过,最后发现问题定位在path的路径不对,我和前辈高兴坏了,终于找到了问题所在,但是想想不对啊,我H盘里确实有这个东西啊,如果是在别的电脑那可能会因为这个报错。不出所料,修改了之后还是报错。大失所望之后前辈陪着我找到了这就放弃了。
最后历时2天,自己解决了。(问题能否解决在于你自身的坚持。这个很重要)原因是我少导了POI包,(eclipse这个项目没导POI包都能正常运行。。)—。—|||
项目及包链接: https://pan.baidu.com/s/1smrTpdb 密码: 6666
运行截图和结果
代码展示------大牛轻喷,代码很简陋,有很多需要优化的。请指出
package TengXunHongBao; //import org.openqa.selenium.*;
//import org.openqa.selenium.chrome.ChromeDriver; public class mainBody { public static void main(String[] args) {
// TODO Auto-generated method stub
String webUrl = "http://xinyue.qq.com/act/pc/xyjf/a20170907envelopes/index.htm?ADTAG=AD_gw.home.pt.2_dyghb.20170926&atm_cl=ad&atm_pos=13256&e_code=358951";
//new openWeb(webUrl);
new GetNetworkTime(webUrl); } }
mianBody.java
package TengXunHongBao; //import java.sql.Driver; //import org.openqa.selenium.*;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver; //import com.sun.accessibility.internal.resources.accessibility; public class openWeb { int i= 0;
public openWeb(String web)
{
i++;
WebDriver driver = new ChromeDriver();
//打开网址
driver.get(web);
//设置浏览器大小,此次设置为最大化
driver.manage().window().maximize(); try {
Thread.sleep(2000);
driver.findElement(By.linkText("[QQ登录]")).click(); Thread.sleep(2000); //进入frame
driver.switchTo().frame("loginIframe");
Thread.sleep(2000);
System.out.println("进入frame");
driver.findElement(By.id("login")).findElement(By.className("face")).click();//这个可行
//driver.findElement(By.className("face")).click();这个有时候会错误
//driver.findElement(By.xpath("//*[@id='qlogin_list']/a[1]]")).click();
System.out.println("成功登陆");
//跳出frame
Thread.sleep(1000);
driver.switchTo().defaultContent();
//点击抢
Thread.sleep(2000);
driver.findElement(By.id("get_red_package")).click();
System.out.println("点击'抢'成功");
System.out.println("成功抢到红包");
Thread.sleep(1000); System.out.println("运行成功");
Thread.sleep(4000);
//获取抢到的G分
String Ptext = driver.findElement(By.xpath("//*[@id='gz_1']/p[1]")).getText();
System.out.println(Ptext); driver.quit();
System.out.println();
System.out.println("重新运行。-----------这是分界线-----------");
i=0;
new GetNetworkTime(web);
} catch (Exception e) {
// TODO: handle exception
System.out.println("运行错误");
driver.quit();
try {
Thread.sleep(1000);
if (i<50)
{
System.out.println("运行第"+(i+1)+"次");
new openWeb(web);
}
} catch (InterruptedException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
new GetNetworkTime(web);
}
} }
}
openWeb.java
package TengXunHongBao; import java.io.IOException;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;
//import java.sql.Time;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale; //import com.sun.swing.internal.plaf.synth.resources.synth_zh_HK; public class GetNetworkTime { public GetNetworkTime(String webUrl) {
System.out.println(getWebsiteDatetime(webUrl) + " [bjtime]");
} private static String getWebsiteDatetime(String webUrl) {
try {
URL url = new URL(webUrl);// 取得资源对象
URLConnection uc = url.openConnection();// 生成连接对象
uc.connect();// 发出连接
long ld = uc.getDate();// 读取网站日期时间
Date date = new Date(ld);// 转换为标准时间对象
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.CHINA);// 输出北京时间 /////////定义固定时间。fHH=11就是11点
int fss = 65;
int fmm = 60;
int fHH = 10; SimpleDateFormat ss = new SimpleDateFormat("ss", Locale.CHINA);
SimpleDateFormat mm = new SimpleDateFormat("mm", Locale.CHINA);
SimpleDateFormat HH = new SimpleDateFormat("HH", Locale.CHINA); //region 老代码
/*
* 这个是老代码啦
String sss= ss.format(date);
String smm= mm.format(date);
String sHH= HH.format(date);
*/
//endregion
//睡眠时间
int sleepTime = 0;
//转int
int sss = Integer.parseInt(ss.format(date));
int smm = Integer.parseInt(mm.format(date));
int sHH = Integer.parseInt(HH.format(date));
System.out.println("现在是北京时间"+sHH+":"+smm+"-"+sss+"秒"); //判断是否比
if (sHH >= 20) {
fHH = 34;
} else if ((fHH - sHH) <= 0) {
fHH = 20;
}else if (fHH-sHH>=0)
{
}
else {
System.out.println("时间错误");
}
System.out.print("距离下一次抢红包时间"+fHH+"时还需睡眠");
//小时减一
if (sss == 0 && smm == 0) {
} else {
fHH = fHH - 1;
}
//分钟减一
if (sss == 0) {
} else {
fmm = fmm - 1;
}
System.out.print((fHH - sHH)+"时"+(fmm - smm)+"分"+(fss - sss) +"秒" );
sss = (fss - sss+40) * 1000;
smm = (fmm - smm) * 1000 * 60;
sHH = (fHH - sHH) * 1000 * 60 * 60;
/*
System.out.println("修改后");
System.out.println("秒"+sss);
System.out.println("分"+smm);
System.out.println("时"+sHH);
*/
sleepTime = sss + smm + sHH;
System.out.println( "--总计毫秒数"+sleepTime);
/////// Thread.sleep(sleepTime);
new openWeb(webUrl); return sdf.format(date);
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (InterruptedException e) {
// TODO Auto-generated catch block这是因为sleep添加的
e.printStackTrace();
}
return null;
} }
GetNetworkTime.java
记一次java-selenium自动抢红包最简单案例1的更多相关文章
- Java使用MyEclipse构建webService简单案例
什么是WebServices? 它是一种构建应用程序的普遍模型,可以在任何支持网络通信的操作系统中实施运行;它是一种新的web应用程序分支,是自包含.自描述.模块化的应用,可以发布.定位.通过web ...
- 【java+selenium】网易云音乐刷累计听歌数
背景应该是在去年的时候,刷知乎看到一个问题,大概是说怎么刷网易云音乐个人累计听歌数,然后有一个高赞回答,贴了一段js代码,直接在浏览器console执行就可以了.当时试了下,直接一下子刷了有好几万.悲 ...
- (java)selenium webdriver学习---实现简单的翻页,将页面内容的标题和标题链接取出
selenium webdriver学习---实现简单的翻页,将页面内容的标题和标题链接取出: 该情况适合能能循环page=1~n,并且每个网页随着循环可以打开的情况, 注意一定是自己拼接的url可以 ...
- 《手把手教你》系列基础篇之(二)-java+ selenium自动化测试-环境搭建(下)基于Maven(详细教程)
1.简介 Apache Maven是一个软件项目管理和综合工具.基于项目对象模型(POM)的概念,Maven可以从一个中心资料片管理项目构建,报告和文件.由于现在企业和公司中Java的大部分项目都是基 ...
- 《手把手教你》系列基础篇(五)-java+ selenium自动化测试- 创建首个自动化脚本(详细教程)
1.简介 前面几篇宏哥介绍了两种(java和maven)环境搭建和三大浏览器的启动方法,这篇文章宏哥将要介绍第一个自动化测试脚本.前边环境都搭建成功了,浏览器也驱动成功了,那么我们不着急学习其他内容, ...
- 《手把手教你》系列技巧篇(十四)-java+ selenium自动化测试-元素定位大法之By xpath上卷(详细教程)
1.简介 按宏哥计划,本文继续介绍WebDriver关于元素定位大法,这篇介绍定位倒数二个方法:By xpath.xpath 的定位方法, 非常强大. 使用这种方法几乎可以定位到页面上的任意元素. ...
- 《手把手教你》系列技巧篇(十五)-java+ selenium自动化测试-元素定位大法之By xpath中卷(详细教程)
1.简介 按宏哥计划,本文继续介绍WebDriver关于元素定位大法,这篇介绍定位倒数二个方法:By xpath.xpath 的定位方法, 非常强大. 使用这种方法几乎可以定位到页面上的任意元素. ...
- 《手把手教你》系列技巧篇(十六)-java+ selenium自动化测试-元素定位大法之By xpath下卷(详细教程)
1.简介 按宏哥计划,本文继续介绍WebDriver关于元素定位大法,这篇介绍定位倒数二个方法:By xpath.xpath 的定位方法, 非常强大. 使用这种方法几乎可以定位到页面上的任意元素. ...
- 《手把手教你》系列技巧篇(十七)-java+ selenium自动化测试-元素定位大法之By css上卷(详细教程)
1.简介 CSS定位方式和xpath定位方式基本相同,只是CSS定位表达式有其自己的格式.CSS定位方式拥有比xpath定位速度快,且比CSS稳定的特性.下面详细介绍CSS定位方式的使用方法.xpat ...
随机推荐
- 变量声明关键字var ,let,const
今天带大家了解的是比较有趣的几个变量声明关键字var,let,const. 我们在最初接触JS的时候,变量是我们重要的一个组成部分,在使用时规定必须要先进行声明,否则网页将会报错: console.l ...
- python 冷知识(装13 指南)
python 冷知识(装13 指南) list1 += list2 和 list1 = list1 + list2 的区别 alpha = [1, 2, 3] beta = alpha # alpha ...
- 洛谷 P1640 【连续攻击游戏】
question bank :luogu question Number :1640 title :Continuous attacking game link :https://www.luogu. ...
- springboot之swagger快速启动
springboot之swagger快速启动 简介 介绍 可能大家都有用过swagger,可以通过ui页面显示接口信息,快速和前端进行联调. 没有接触的小伙伴可以参考官网文章进行了解下demo页面. ...
- codeforces 862 C. Mahmoud and Ehab and the xor(构造)
题目链接:http://codeforces.com/contest/862/problem/C 题解:一道简单的构造题,一般构造题差不多都考自己脑补,脑洞一开就过了 由于数据x只有1e5,但是要求是 ...
- 牛客第五场 G max 思维
链接:https://www.nowcoder.com/acm/contest/143/G来源:牛客网 Give two positive integer c, n. You need to find ...
- CODE[VS] 1294 全排列
1294 全排列 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题解 查看运行结果 题目描述 Description 给出一个n, 请输出n的所有全 ...
- 工作中遇到的99%SQL优化,这里都能给你解决方案(三)
-- 示例表 CREATE TABLE `employees` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(24) NOT NULL ...
- linux常用命令二
linux常用命令一 常用指令 ls 显示文件或目录 -l 列出文件详细信息l(list) -a 列出当前目录下所有文件及目录,包括隐藏的a(all ...
- javase复习(一)
break,continue,return区别: continue:跳出本次循环,还要再执行下次循环 break:跳出循环,若有多层循环则只跳出本层循环,其他层的循环需要挨个break return: ...