Java tutorial
/* * StartUp.java * Created on 2011-2-17; Project to Colt2010; $Id: SalesIssues2.java 309 2013-04-25 16:38:44Z tristan $ * * Copyright (c) 2011, Xu Brothers and/or its affiliates. All rights reserved. * Xu Brothers PROPRIETARY/CONFIDENTIAL. Use is subject to license terms. */ package com.waku.mmdataextract; import java.util.HashMap; import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.Set; import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; import org.openqa.selenium.chrome.ChromeDriver; /** * Using WebDriver. * * @versin $Rev: 309 $, $Date: 2013-04-26 00:38:44 +0800 (, 26 2013) $ * @author Jin */ public class SalesIssues2 { /** * @param args * @throws Exception */ public static void main(String[] args) throws Exception { String formUrl = "http://shouji.gd.chinamobile.com/gdmobile/productDetail/operatorssalesHeaderAction.do"; String fromUrl2 = "http://shouji.gd.chinamobile.com/gdmobile/productDetail/operatorssalesHeaderAction.do?provinceID=1&cityID="; String baseUrl = "http://shouji.gd.chinamobile.com/gdmobile/productDetail/operatorssalesSearchAction.do?type=1&brandId=0&productId=0&provinceId=1"; WebDriver driver = new ChromeDriver(); // Get the citySet from form url System.out.println("Go to url => " + formUrl); driver.get(formUrl); WebElement citySelector = driver.findElement(By.id("cityID")); List<WebElement> cityOptions = citySelector.findElements(By.tagName("option")); Map<String, String> cityIdNameMap = new HashMap<String, String>(); for (WebElement cityOption : cityOptions) { cityIdNameMap.put(cityOption.getAttribute("value"), cityOption.getText()); } System.out.println("Find cities: \n" + cityIdNameMap); // A class to hold Sales issue id and name class SalesIssue { @Override public String toString() { return id + ":" + name; } public SalesIssue(String id, String name) { this.id = id; this.name = name; } String id; String name; } // Get sales issues info Map<String, Set<SalesIssue>> citySalesIssueMap = new HashMap<String, Set<SalesIssue>>(); for (String cityId : cityIdNameMap.keySet()) { String cityUrl = fromUrl2 + cityId; driver.get(cityUrl); System.out.println("Go to url => " + cityUrl); WebElement salesIssueSelector = driver.findElement(By.id("salesissue")); List<WebElement> salesIssueOptions = salesIssueSelector.findElements(By.tagName("option")); if (salesIssueOptions.get(0).getAttribute("value").equals("0")) { System.out.println("No sales issues for " + cityIdNameMap.get(cityId)); } else { Set<SalesIssue> salesIssueSet = new HashSet<SalesIssue>(); for (WebElement salesIssueOption : salesIssueOptions) { SalesIssue salesIssue = new SalesIssue(salesIssueOption.getAttribute("value"), salesIssueOption.getText()); salesIssueSet.add(salesIssue); } citySalesIssueMap.put(cityId, salesIssueSet); System.out.println("Find sales issues: \n" + citySalesIssueMap); } } for (String cityId : cityIdNameMap.keySet()) { for (SalesIssue salesIssue : citySalesIssueMap.get(cityId)) { String finalUrl = baseUrl + "&cityId=" + cityId + "&salesissue=" + salesIssue.id; driver.get(finalUrl); System.out.println("Go to url => " + finalUrl); System.out .println("Province,,City," + cityIdNameMap.get(cityId) + ",Sales," + salesIssue.name); System.out.println(driver.getPageSource()); } } } }