案例网址: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的更多相关文章

  1. Java使用MyEclipse构建webService简单案例

     什么是WebServices? 它是一种构建应用程序的普遍模型,可以在任何支持网络通信的操作系统中实施运行;它是一种新的web应用程序分支,是自包含.自描述.模块化的应用,可以发布.定位.通过web ...

  2. 【java+selenium】网易云音乐刷累计听歌数

    背景应该是在去年的时候,刷知乎看到一个问题,大概是说怎么刷网易云音乐个人累计听歌数,然后有一个高赞回答,贴了一段js代码,直接在浏览器console执行就可以了.当时试了下,直接一下子刷了有好几万.悲 ...

  3. (java)selenium webdriver学习---实现简单的翻页,将页面内容的标题和标题链接取出

    selenium webdriver学习---实现简单的翻页,将页面内容的标题和标题链接取出: 该情况适合能能循环page=1~n,并且每个网页随着循环可以打开的情况, 注意一定是自己拼接的url可以 ...

  4. 《手把手教你》系列基础篇之(二)-java+ selenium自动化测试-环境搭建(下)基于Maven(详细教程)

    1.简介 Apache Maven是一个软件项目管理和综合工具.基于项目对象模型(POM)的概念,Maven可以从一个中心资料片管理项目构建,报告和文件.由于现在企业和公司中Java的大部分项目都是基 ...

  5. 《手把手教你》系列基础篇(五)-java+ selenium自动化测试- 创建首个自动化脚本(详细教程)

    1.简介 前面几篇宏哥介绍了两种(java和maven)环境搭建和三大浏览器的启动方法,这篇文章宏哥将要介绍第一个自动化测试脚本.前边环境都搭建成功了,浏览器也驱动成功了,那么我们不着急学习其他内容, ...

  6. 《手把手教你》系列技巧篇(十四)-java+ selenium自动化测试-元素定位大法之By xpath上卷(详细教程)

    1.简介 按宏哥计划,本文继续介绍WebDriver关于元素定位大法,这篇介绍定位倒数二个方法:By xpath.xpath 的定位方法, 非常强大.  使用这种方法几乎可以定位到页面上的任意元素. ...

  7. 《手把手教你》系列技巧篇(十五)-java+ selenium自动化测试-元素定位大法之By xpath中卷(详细教程)

    1.简介 按宏哥计划,本文继续介绍WebDriver关于元素定位大法,这篇介绍定位倒数二个方法:By xpath.xpath 的定位方法, 非常强大.  使用这种方法几乎可以定位到页面上的任意元素. ...

  8. 《手把手教你》系列技巧篇(十六)-java+ selenium自动化测试-元素定位大法之By xpath下卷(详细教程)

    1.简介 按宏哥计划,本文继续介绍WebDriver关于元素定位大法,这篇介绍定位倒数二个方法:By xpath.xpath 的定位方法, 非常强大.  使用这种方法几乎可以定位到页面上的任意元素. ...

  9. 《手把手教你》系列技巧篇(十七)-java+ selenium自动化测试-元素定位大法之By css上卷(详细教程)

    1.简介 CSS定位方式和xpath定位方式基本相同,只是CSS定位表达式有其自己的格式.CSS定位方式拥有比xpath定位速度快,且比CSS稳定的特性.下面详细介绍CSS定位方式的使用方法.xpat ...

随机推荐

  1. 90002CAD相关操作

    第一章   初识CAD 1.1 CAD能干什么 (1)绘制机械图/建筑图/装修图等二维复杂工程图的不二之选.二维设计软件的王者. (2)CAD可以绘制平面图.轴测图(二维线框表示三维图形).立体图(三 ...

  2. maven替换中央仓库,阿里云镜像下载及自定义本地仓库位置

    maven替换中央仓库- 阿里云 在国内访问Maven仓库,下载速度太慢.下面是将中央仓库替换成阿里云的中央仓库的方法.国内还有其他的公共仓库,自己选择.  在你下载的maven版本-conf-set ...

  3. mysql函数拼接查询concat函数

    //查询表managefee_managefee的年year 和 month ,用concat函数拼成year-month.例如将2017和1 拼成2017-01.. select CONCAT(a. ...

  4. wait()、notify()方法原理,以及使用注意事项

    wait.notify原理 在前面以经说到对象锁的本质,实际上是对象头的一个监视器锁的数据结构.这个结构如下: (图片来源于网络) 几个线程一起竞争对象的锁(enter),只有一个能成功(acquir ...

  5. Linux下Nodejs安装(最新版)

    Linux安装最新版Node.js 由于直接yum安装的nodejs版本太低,所以本篇文章向大家介绍在 Linux 上安装 Node.js 最新版的方法. 安装环境 本机系统:CentOS Linux ...

  6. ValueError: Error when checking input: expected conv2d_1_input to have 4 dimensions, but got array with shape (60000, 28, 28)

    报错 Traceback (most recent call last): File "D:/PyCharm 5.0.3/WorkSpace/3.Keras/3.构建各种神经网络/3.CNN ...

  7. HDU1814Peaceful Commission求2-sa最小字典序

    #include <iostream> #include <cstdio> #include <vector> #include <cstring> # ...

  8. PAT L3-017. 森森快递

    L3-017. 森森快递 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 俞勇(上海交通大学) 森森开了一家快递公司,叫森森快递.因为 ...

  9. 第12讲-Java中的IO操作及对象的序列化与反序列化

    1.知识点 1.1.课程回顾 1.2.本章重点 1.2.1  io操作 1.2.2  对象的序列化与反序列化 2.具体内容 2.1.Java IO 2.1.1.什么是IO IO其实就是输入.输出 I ...

  10. 实现 Java 本地缓存,该从这几点开始

    缓存,我相信大家对它一定不陌生,在项目中,缓存肯定是必不可少的.市面上有非常多的缓存工具,比如 Redis.Guava Cache 或者 EHcache.对于这些工具,我想大家肯定都非常熟悉,所以今天 ...