java+selenium實現火車票自動刷學生票
阿新 • • 發佈:2019-02-16
import org.openqa.selenium.By;
import org.openqa.selenium.Keys;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.interactions.HasInputDevices;
public class homeTicket {
private String url;
public String getUrl() { return url; } public void setUrl(String url) { this.url = url; } private WebDriver driver = null; private String webBrowserPath = ""; public void init() { webBrowserPath = "chromedriver.exe" ; System. setProperty( "webdriver.chrome.driver", webBrowserPath ); driver = new ChromeDriver(); } public void quitDrvier() { if ( null != driver) { driver .quit(); } } public void waitForSecond() { try { Thread. sleep(3000); } catch (InterruptedException e) { e.printStackTrace(); } } public void waitForSecondLong() { try { Thread. sleep(10000); } catch (InterruptedException e) { e.printStackTrace(); } } public homeTicket() { this.url = "https://kyfw.12306.cn/otn/leftTicket/init"; } public String getPath() { return url; } public void getContent() { init(); driver.get(this.url); driver.manage().window().maximize(); waitForSecond(); driver.findElement(By.xpath("//*[@id=\"fromStationText\"]")).clear(); driver.findElement(By.xpath("//*[@id=\"fromStationText\"]")).click(); waitForSecond(); driver.findElement(By.xpath("//*[@id=\"fromStationText\"]")).sendKeys("北京西"); waitForSecond(); ((HasInputDevices) driver).getKeyboard().sendKeys(Keys.ARROW_DOWN); ((HasInputDevices) driver).getKeyboard().sendKeys(Keys.ARROW_DOWN); ((HasInputDevices) driver).getKeyboard().sendKeys(Keys.RETURN); waitForSecond(); driver.findElement(By.xpath("//*[@id=\"toStationText\"]")).clear(); driver.findElement(By.xpath("//*[@id=\"toStationText\"]")).click(); waitForSecond(); driver.findElement(By.xpath("//*[@id=\"toStationText\"]")).sendKeys("廣州"); ((HasInputDevices) driver).getKeyboard().sendKeys(Keys.ARROW_DOWN); ((HasInputDevices) driver).getKeyboard().sendKeys(Keys.RETURN); waitForSecond(); driver.findElement(By.id("sf2_label")).click(); waitForSecond(); driver.findElement(By.xpath("//*[@id=\"train_date\"]")).click(); waitForSecond(); /*2017年1月16日的學生火車票*/ driver.findElement(By.xpath("/html/body/div[30]/div[2]/div[2]/div[16]/div")).click(); waitForSecond(); driver.switchTo().defaultContent(); while(true){ driver.findElement(By.id("query_ticket")).click(); waitForSecondLong(); try { String s1=driver.findElement(By.xpath("//*[@id=\"YW_2400000Z3501\"]")).getText().toString(); String s2=driver.findElement(By.xpath("//*[@id=\"YW_240000Z2010D\"]")).getText().toString(); System.out.println(s1+"*********"+s2); if(s1.equals("無")&&s2.equals("無")){ continue; }else{ while(true){ java.awt.Toolkit.getDefaultToolkit().beep(); } } } catch (Exception e) { e.printStackTrace(); } }
}
public static void main(String[] args) {
homeTicket parser=new homeTicket();
parser.getContent();
}
}