记一次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 ...
随机推荐
- 单选多选(CocosCreator)
推荐阅读: 我的CSDN 我的博客园 QQ群:704621321 1.前沿 首先来说说我们的需求吧:随机出现单选题或者多选题,完全回答正确才算正确(多选题中少选错选算错),核实答案的 ...
- React-native 关于 android真机 出现连不上服务器
我们都知道使用RN开发移动端应用时,我们要在手机端运行程序,可以下载 expo 这个软件进行扫描二维码连接到开发的APP上 有时会有突然连不上之前连上过的应用,出现如下画面 首先保证你的电脑和你的手机 ...
- 探索Asp net core3中的 项目文件、Program.cs和通用host(译)
引言 原文地址 在这篇博客中我将探索一些关于Asp.net core 3.0应用的基础功能--.csproj 项目文件和Program源文件.我将会描述他们从asp.net core 2.X在默认模版 ...
- Java中指令重排
/** * 指令重排:代码执行顺序与预期不一致 (发生在前后行代码无联系时) * 目的:提高性能 * */ public class HappenBefore { private static int ...
- 大型互联网公司分布式ID方案总结
ID是数据的唯一标识,传统的做法是利用UUID和数据库的自增ID,在互联网企业中,大部分公司使用的都是Mysql,并且因为需要事务支持,所以通常会使用Innodb存储引擎,UUID太长以及无序,所以并 ...
- Java连载26-方法(语法结构)
一.方法 1.返回值类型如果不是void,表示这个方法执行结束之后必须返回一个具体的数值,当方法执行结束的时候没有返回任何数值,编译器会报错,怎么返回值呢?并且要求“值”的数据类型必须和“方法的返回值 ...
- HDU - 2824 The Euler function 欧拉函数筛 模板
HDU - 2824 题意: 求[a,b]间的欧拉函数和.这道题卡内存,只能开一个数组. 思路: ϕ(n) = n * (p-1)/p * ... 可利用线性筛法求出所有ϕ(n) . #include ...
- Codeforces Round #480 (Div. 2) B. Marlin
题目地址:http://codeforces.com/contest/980/problem/B 官方题解: 题意: 有一个城市有4行n列,n是奇数,有一个村庄在(1,1),村民在(4,n)钓鱼:还有 ...
- 基于注解的读取excel的工具包
easyexcel-wraper easyexcel-wraper是什么? 一个方便读取excel内容,且可以使用注解进行内容验证的包装工具 easyexcel-wraper有哪些功能? 在easye ...
- A - 猜数字
http://acm.hdu.edu.cn/showproblem.php?pid=1172 猜数字 猜数字游戏是gameboy最喜欢的游戏之一.游戏的规则是这样的:计算机随机产生一个四位数,然后玩家 ...