com.waku.mmdataextract.SalesIssues2.java Source code

Java tutorial

Introduction

Here is the source code for com.waku.mmdataextract.SalesIssues2.java

Source

/*
 * 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());
            }
        }
    }
}