Java写的自动抢购红米note手机(2016/4/6 米粉节)

         受同学所托,帮其抢红米手机,老是抢不到,于是就想着写个程序,多线程实时监听,虽然最终还是没抢到,但还是将程序分享给大家。(其实在排除学校网速的影响下,我真怀疑雷总到底有没有发布小米手机让大家抢,所以还是建议大家尽量不要抢小米手机,太坑!)

      程序使用java写的,采用Maven构建的一个项目,采用selenium包。这里先给出平台的搭建,后续给出相应的程序代码。

1:使用Maven模板构建一个项目

切换到工作目C:\workshop下,输入
mvn archetype:generate -DgroupId=com.yiibai -DartifactId=NumberGenerator -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false

2:修改pom.xml

修改后的内容如下:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0http://maven.apache.org/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.yiibai</groupId>
  <artifactId>NumberGenerator</artifactId>
  <packaging>jar</packaging>
  <version>1.0-SNAPSHOT</version>
  <name>NumberGenerator</name>
  <url>http://maven.apache.org</url>
  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  </properties>
  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.11</version>
      <scope>test</scope>
    </dependency>
    <dependency>
       <groupId>org.seleniumhq.selenium</groupId>
       <artifactId>selenium-java</artifactId>
       <version>2.53.0</version>
    </dependency>
    <dependency>
       <groupId>org.seleniumhq.selenium</groupId>
       <artifactId>selenium-htmlunit-driver</artifactId>
       <version>2.20</version>
    </dependency>
  </dependencies>
</project>


3cd进入project目录中:C:\\Workshop\\ NumberGenerator中输入mvn cleaninstall,然后输入mvneclipse:eclipse

这样在eclipse# File -> Import... # General -> ExistingProjects into Workspace # Click next #  将现有工程导入eclipse

4: 代码

以下是抢购红米note3的主页:

以下是程序的代码:

MyThread.java

 

package com.yiibai;

import java.util.List;

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.firefox.FirefoxDriver;

public class myThread extends Thread{
	
	private String name;
	public myThread(String name){
		this.name = name;
	}
	public void run(){
		
		// 小米官网抢购红米note3页面
		String baseurl = "http://item.mi.com/buyphone/note3";    
		// 小米官网登录信息
    	String baseurl2 = "https://account.xiaomi.com/pass/serviceLogin?callback=http%3A%2F%2Forder.mi.com%2Flogin%2Fcallback%3Ffollowup%3Dhttp%253A%252F%252Fitem.mi.com%252Fbuyphone%252Fnote3%26sign%3DZmYyZmU3NmE0NWNmMjZkYzk5YmU5ZWJjMzc2Zjg1YzNhMjY3NTJjMg%2C%2C&sid=mi_eshop";
    	WebElement loginElement = null;
    	List<WebElement> element = null;
    	List<WebElement> taocan = null;
    	WebElement btn = null;

		WebDriver driver = new FirefoxDriver();
		System.out.println("starting:");
    	driver.get(baseurl2);
    	
    	driver.findElement(By.id("username")).sendKeys("13721035842");   // 输入自己小米官网登录账号
    	driver.findElement(By.id("pwd")).sendKeys("19910715aabb");    // 输入小米官网登录密码
    	driver.findElement(By.id("login-button")).click();
    	
    	System.out.println(driver.getCurrentUrl());
    	
    	try {
			sleep(5000);
		} catch (InterruptedException e1) {
			// TODO Auto-generated catch block
			e1.printStackTrace();
		}
    	driver.navigate().to(baseurl);    
    	System.out.println("hello world!!");
    	
		element = driver.findElements(By.className("J_stepItem"));
		if(element == null || element.size() == 0){
			driver.close();
		}
		element.get(1).click();           // 选择高配版 3GB内存 + 32GB容量
		element = driver.findElements(By.className("J_stepItem"));    
		element.get(2).click();            // 选择双网通
		element = driver.findElements(By.className("J_stepItem"));
		element.get(5).click();   // 选择银白色
		
		taocan = driver.findElements(By.className("J_packageItem"));  // 看是否到时间出现套餐选择
		while(taocan == null || taocan.size() == 0){
			taocan = driver.findElements(By.className("J_packageItem"));  // 一直循环等待套餐的出现
			System.out.println("listening11...." + name);
			try {
				sleep(500);
			} catch (InterruptedException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
		taocan.get(0).click();    // 等到选择第一个套餐
		
		element = driver.findElements(By.className("btn"));  
		element.get(0).click();                // 点击下一步抢购按钮  等待
		//driver.quit(); 
		System.out.println(element.size());
	}
}

主函数test.java

 

package com.yiibai;
import java.util.List;

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.firefox.FirefoxDriver;

/**
 * Hello world!
 *
 */
public class test 
{
	
	
    public static void main( String[] args ) throws InterruptedException
    {
    	
    	myThread th1 = new myThread("A");   // 开启5个线程 等同于开启5个浏览器 实时监听
    	myThread th2 = new myThread("B");
    	myThread th3 = new myThread("C");
    	myThread th4 = new myThread("D");
    	myThread th5 = new myThread("E");
    	
    	th1.start();
    	th2.start();	
    	th3.start();
    	th4.start();
    	th5.start();
    	
    	
	}
    	
        
}

在抢购前5分钟将test.java开启,一直等待吧,祝你好运。

 

 

参考文献:

1maven创建java项目  http://www.yiibai.com/maven/create-a-java-project-with-maven.html

2seleniumwebdriver

http://docs.seleniumhq.org/docs/03_webdriver.jsp#setting-up-a-selenium-webdriver-project

猜你喜欢

转载自blog.csdn.net/Lu597203933/article/details/51173886