案例网址: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. Python利用切片操作,实现一个trim()函数,去除字符串首尾的空格,注意不要调用str的strip()方法:

    这是一个最简单的自定义函数,自己调用自己,我的理解是这样的: 1.传一个s参数进行判断,如果有空字符它会切掉前后的空字符,返回一个新的s,这个新的s还有的话会继续执行这种重复的操作,类似于递归(博主不 ...

  2. Zabbix安装时出现缺少PHP模块,解决过程

    我在安装时PHP缺少gettext模块和bcmath模块:一下为解决步骤: 1.进入到PHP源码包目录下的ext目录: #cd /soft/php-/ext 2.会看到ext目录下有gettext目录 ...

  3. Spring框架入门之基于Java注解配置bean

    Spring框架入门之基于Java注解配置bean 一.Spring bean配置常用的注解 常用的有四个注解 Controller: 用于控制器的注解 Service : 用于service的注解 ...

  4. 一文搞懂transform: skew

    如何理解斜切skew,先看一个demo.在下面的demo中,有4个正方形,分别是 红色:不做skew变换, 绿色:x方向变换, 蓝色:y方向变换, 黑色:两个方向都变换, 拖动下面的滑块可以查看改变s ...

  5. QFramework 使用指南 2020(三):脚本生成(1)基本使用

    在上一篇,我们对 QFramework 的两个主要版本提供了介绍,并且写下了第一个 QFramework 脚本. 在这一篇,我们学习 QFramework 中几乎每个项目都要用到并且从中受益的功能:自 ...

  6. 原型工具介绍———墨刀以及Axure RP比较

    原型工具——墨刀以及Axure的比较 1759233 目录 一.了解背景... 1 二.下面分开介绍一下这两款工具... 1 2.1 Axure RP. 1 2.2墨刀... 6 三.比较... 8 ...

  7. mysql8.0版本下命令行mysqld –skip-grant-tables 失效,无法登陆的问题

    1.管理员权限登陆cmd,不会使用管理员登陆的请搜索cmd,搜索结果右键. 2.命令行输入:net stop mysql;然后提示.服务停止中 --> 服务已停止,如出现其他错误请百度. 这只是 ...

  8. Mysql分区实战

    一,什么是数据库分区 前段时间写过一篇关于MySQL分表的的文章,下面来说一下什么是数据库分区,以mysql为例.mysql数据库中的数据是以文件的形势存在磁盘上的,默认放在/mysql/data下面 ...

  9. python控制窗口显示隐藏

    import win32con # 定义 import win32gui # 界面 import time # 时间 QQ= win32gui.FindWindow("TXGuiFounda ...

  10. 牛客Wannafly挑战赛23 B.游戏

    游戏 题目描述 小N和小O在玩游戏.他们面前放了n堆石子,第i堆石子一开始有ci颗石头.他们轮流从某堆石子中取石子,不能不取.最后无法操作的人就输了这个游戏.但他们觉得这样玩太无聊了,更新了一下规则. ...