예제 #1
0
        public void SearchAndWaitBySeleniumRemoteControl()
        {
            //not working on latest IE and FireFox versions
            ISelenium sel = new DefaultSelenium("localhost", 4444, "*iehta", "http://www.google.com");

            sel.Start();
            sel.Open("http://www.google.com/");
            sel.Type("q", "FitNesse");
            sel.Click("btnG");
            sel.WaitForPageToLoad("3000");
        }
예제 #2
0
        ///<summary>
        ///Recursive Method, recall this method when timeout or other errors happend
        ///Call PDFAnalysis method to download PDF from from http://www.hkexnews.hk/listedco/listconews/advancedsearch/search_active_main.asp
        ///and extract data from PDF  by specific stock code
        ///</summary>
        ///<param name="index">ricList index</param>
        ///<returns> void </returns>
        private void DataCaptureFromPDF(int index)
        {
            ISelenium pdfSearch1     = new DefaultSelenium("localhost", 4444, "*iexplore", "http://www.hkexnews.hk");
            int       start_position = index;

            pdfSearch1.Start();
            try
            {
                pdfSearch1.Open("/listedco/listconews/advancedsearch/search_active_main.asp");
                pdfSearch1.WaitForPageToLoad("60000");

                for (; start_position < ricList.Count; start_position++)
                {
                    pdfSearch1.Type("txt_stock_code", ricList[start_position].ricCodeStr);
                    pdfSearch1.Click("//table[@id='Table1']/tbody/tr[3]/td/table[2]/tbody/tr/td/table/tbody/tr[14]/td[3]/label/a[1]/img");
                    pdfSearch1.WaitForPageToLoad("30000");

                    String pdfUrl = pdfSearch1.GetAttribute("//table[@id='Table4']/tbody/tr[8]/td/table/tbody/tr[3]/td[4]/table/tbody/tr/td/a@href");
                    pdfList.Add(coreObj.PDFAnalysis(pdfUrl, ricList[start_position].ricCodeStr));

                    pdfSearch1.Click("//table[@id='Table5']/tbody/tr/td/table/tbody/tr/td[1]/a/img");
                    pdfSearch1.WaitForPageToLoad("30000");
                }

                pdfSearch1.Close();
                pdfSearch1.Stop();
            }
            catch (Exception ex)
            {
                String errLog = ex.ToString();
                coreObj.WriteLogFile(errLog);
                coreObj.WriteLogFile(ricList[start_position].ricCodeStr);
                coreObj.WriteLogFile("start_position=" + start_position);
                pdfSearch1.Close();
                pdfSearch1.Stop();

                DataCaptureFromPDF(start_position);
            }
        }
        //public static string GetDynamicPageSource(string uri, int timeout, string postData, string cookie)
        //{
        //    string pageSource = string.Empty;
        //    Encoding encoding = Encoding.UTF8;

        //    byte[] buf = null;
        //    int retryiesLeft = 5;
        //    buf = encoding.GetBytes(postData);

        //    while (string.IsNullOrEmpty(pageSource) && retryiesLeft-- > 0)
        //    {
        //        HttpWebRequest request = WebRequest.Create(uri) as HttpWebRequest;
        //        request.Timeout = timeout;
        //        request.Headers["Cookie"] = cookie;
        //        request.UserAgent = "Mozilla/5.0 (Windows NT 5.1; rv:6.0.2) Gecko/20100101 Firefox/6.0.2";
        //        request.Method = "POST";
        //        request.ContentType = "application/x-www-form-urlencoded";
        //        request.ContentLength = buf.Length;
        //        request.GetRequestStream().Write(buf, 0, buf.Length);
        //        using (WebResponse response = request.GetResponse())
        //        {
        //            StreamReader sr = new StreamReader(response.GetResponseStream());
        //            pageSource = sr.ReadToEnd();
        //        }
        //    }
        //    if (pageSource == string.Empty)
        //    {
        //        throw new Exception(string.Format("Cannot download page {0}b with post data {1}", uri, postData));
        //    }
        //    return pageSource;
        //}

        //public static HttpWebResponse GetResponse(string uri, int timeout, string postData)
        //{
        //    string pageSource = string.Empty;
        //    Encoding encoding = Encoding.UTF8;

        //    byte[] buf = null;
        //    buf = encoding.GetBytes(postData);


        //    HttpWebRequest request = WebRequest.Create(uri) as HttpWebRequest;
        //    request.Timeout = timeout;
        //    //request.Headers["Cookie"] = "80922B3FB48D76DD2F6A268906563EC5.simpn9; Path=/ism";
        //    request.UserAgent = "Mozilla/5.0 (Windows NT 5.1; rv:6.0.2) Gecko/20100101 Firefox/6.0.2";
        //    request.Method = "POST";
        //    request.ContentType = "application/x-www-form-urlencoded";
        //    request.ContentLength = buf.Length;
        //    request.GetRequestStream().Write(buf, 0, buf.Length);
        //    return request.GetResponse() as HttpWebResponse;
        //}

        //private void DataCaptureFromSetSmart(string symbol)
        //{
        //    string loginUrl = "http://www.setsmart.com/ism/login.jsp";
        //    string loginPostData = "txtLogin=25932633&txtPassword=reuters1&hidBrowser=null&hidLang=English";
        //    string searchUrl = "http://www.setsmart.com/ism/companyprofile.html";
        //    string searchData = "symbol=" + symbol;
        //    var req = GetResponse(loginUrl, 10000, loginPostData);
        //    var cookie = req.Headers["Set-Cookie"];
        //    cookie = cookie.Substring(0, cookie.IndexOf(";")).Trim();
        //    var content = GetDynamicPageSource(searchUrl, 10000, searchData, cookie);

        //}

        /**
         * Grab Data from http://isin.krx.co.kr/
         *
         */
        //private void DataCaptureFromSET()
        //{
        //    String symbolType = "SET";
        //    int startPosition = configObj.start_position;
        //    int endPosition = configObj.end_position;

        //    try
        //    {

        //        selenium.SetTimeout("50000");
        //        selenium.OpenWindow("/set/todaynews.do?language=en&country=US", "parentWindow");
        //        selenium.WaitForPopUp("parentWindow", "50000");
        //        selenium.SelectWindow("parentWindow");

        //        //No defination for searching end of position
        //        if (configObj.end_position == 0)
        //        {
        //            while (selenium.IsElementPresent("//tr[2]/td/table/tbody/tr[" + startPosition + "]/td[3]"))
        //            {
        //                String symbolStr = selenium.GetText("//tr[2]/td/table/tbody/tr[" + startPosition + "]/td[3]");
        //                if (symbolStr == symbolType)
        //                {
        //                    String headlineStr = selenium.GetText("//tr[2]/td/table/tbody/tr[" + startPosition + "]/td[4]");
        //                    if (headlineStr.Contains("adds new") && (headlineStr.Contains("CC") || headlineStr.Contains("CB") || headlineStr.Contains("CA") || headlineStr.Contains("CD") || headlineStr.Contains("CE") || headlineStr.Contains("CF")))
        //                    {

        //                        String htmlUrl = selenium.GetAttribute("//tr[2]/td/table/tbody/tr[" + startPosition + "]/td[5]/a[text()='HTML']@href");
        //                        selenium.OpenWindow(htmlUrl, "detailWindow" + startPosition);
        //                        selenium.WaitForPopUp("detailWindow" + startPosition, "10000");
        //                        selenium.SelectWindow("detailWindow" + startPosition);

        //                        String txtFile = selenium.GetText("//pre");

        //                        //here call txt analysis method
        //                        DataAnalysis(txtFile);

        //                        count++;
        //                        selenium.SelectWindow("parentWindow");

        //                    }
        //                }

        //                startPosition = startPosition + 2;
        //            }//end while

        //        }
        //        else if (configObj.end_position >= configObj.start_position)
        //        {
        //            for (int i = startPosition; i <= endPosition; i = i + 2)
        //            {
        //                String symbolStr = selenium.GetText("//tr[2]/td/table/tbody/tr[" + startPosition + "]/td[3]");
        //                if (symbolStr == symbolType)
        //                {
        //                    String headlineStr = selenium.GetText("//tr[2]/td/table/tbody/tr[" + startPosition + "]/td[4]");
        //                    if (headlineStr.Contains("adds new") && (headlineStr.Contains("CC") || headlineStr.Contains("CB") || headlineStr.Contains("CA") || headlineStr.Contains("CD") || headlineStr.Contains("CE") || headlineStr.Contains("CF")))
        //                    {

        //                        String htmlUrl = selenium.GetAttribute("//tr[2]/td/table/tbody/tr[" + startPosition + "]/td[5]/a[text()='HTML']@href");
        //                        selenium.OpenWindow(htmlUrl, "detailWindow" + startPosition);
        //                        selenium.WaitForPopUp("detailWindow" + startPosition, "10000");
        //                        selenium.SelectWindow("detailWindow" + startPosition);

        //                        String txtFile = selenium.GetText("//pre");

        //                        //here call txt analysis method
        //                        DataAnalysis(txtFile);

        //                        count++;
        //                        selenium.SelectWindow("parentWindow");

        //                    }
        //                }
        //            }//end for

        //        }//end else if
        //        else
        //        {
        //            logger.LogErrorAndRaiseException("end_position must bigger than start_position");
        //        }

        //    }//end try
        //    catch (SeleniumException e)
        //    {
        //        logger.LogErrorAndRaiseException(e.ToString());
        //        ClearTest();

        //    }

        //}//end DataCaptureFromSET()

        /**
         * Get ISIN number from http://isin.krx.co.kr by specific official code
         *
         */
        private String DataCaptureFromSetSmart(String officialCode)
        {
            ISelenium setsmart = new DefaultSelenium("localhost", 4444, "*iexplore", "http://www.setsmart.com");

            try
            {
                setsmart.Start();
                setsmart.UseXpathLibrary("javascript-xpath");
                setsmart.Open("/ism/login.jsp");
                setsmart.WaitForPageToLoad("60000");
                setsmart.Type("txtLogin", configObj.username);
                setsmart.Type("txtPassword", configObj.password);
                setsmart.Click("//input[@type='image']");
                //setsmart.Click("//input[@type='image' and @onclick='return validate();']");
                setsmart.WaitForPageToLoad("60000");
                setsmart.Click("link=Company Profile");
                setsmart.WaitForPageToLoad("60000");
                setsmart.Type("symbol", officialCode);
                setsmart.Click("//input[@type='image']");
                //setsmart.Click("//input[@name='submit' and @value='go' and @type='image' and @onclick=' return validateSubmit(); ']");

                System.Threading.Thread.Sleep(3000);

                String isinNumber = setsmart.GetText("//table[3]/tbody/tr[26]/td[2]");

                setsmart.Click("link=LOGOUT");
                setsmart.Stop();

                //return isinNumber.Substring(isinNumber.IndexOf("Local") + 8, isinNumber.IndexOf("Foreign") - 9);
                return(isinNumber.Substring(isinNumber.IndexOf("Local") + 7, isinNumber.Length - isinNumber.IndexOf("Local") - 7));
            }
            catch (SeleniumException e)
            {
                setsmart.Stop();
                logger.LogErrorAndRaiseException(e.ToString());
                return(e.ToString());
            }
        }