Ejemplo n.º 1
0
        public void StartGeeTest(Uri uri)
        {
            const int waitTime = 500;
            var       options  = new OpenQA.Selenium.Chrome.ChromeOptions();

            //options.AddArgument("-headless");//不显示界面
            options.AddArgument("--window-size=1920,1050");
            options.AddArgument("log-level=3");
            using OpenQA.Selenium.Chrome.ChromeDriver driver = new OpenQA.Selenium.Chrome.ChromeDriver(options);
            driver.Navigate().GoToUrl(uri);
            //反爬验证webdriver
            driver.ExecuteJavaScript("Object.defineProperty(navigator, 'webdriver', {get: () => undefined})");
            driver.Navigate().GoToUrl(uri);
            Thread.Sleep(waitTime);//等待js执行
            driver.ExecuteScript("header.loginLink(event)");
            Console.WriteLine("点击《登录/注册》按钮");
            Thread.Sleep(waitTime);
            driver.ExecuteScript("loginObj.changeCurrent(1);");
            Console.WriteLine("点击 《密码登录》按钮");
            Thread.Sleep(waitTime);
            driver.ExecuteScript("$('.contactphone').val('17712345678')");
            driver.ExecuteScript("$('.contactword').val('2020')");
            Console.WriteLine("输入账号密码");
            Thread.Sleep(waitTime);
            driver.ExecuteScript("loginObj.loginByPhone(event);");
            Console.WriteLine("点击《登录》按钮");
            Thread.Sleep(waitTime);
            SeleniumVertifyCode slideVerificationCode = new SeleniumVertifyCode();
            var flag = slideVerificationCode.Pass(driver);

            Console.WriteLine($"验证结果{flag}");
        }
        private async Task ChromeAgent()
        {
            if (driver2 != null)
            {
                return;
            }
            ready2 = false;
            Program.mainForm.lblStatus.Text = "Khởi tạo kết nối nâng cao";

            IEnumerable<int> pidsBefore = Process.GetProcessesByName("chrome").Select(p => p.Id);

            var chromeDriverService = OpenQA.Selenium.Chrome.ChromeDriverService.CreateDefaultService(Path.GetDirectoryName(Application.ExecutablePath) + @"\App");
            chromeDriverService.HideCommandPromptWindow = true;
            OpenQA.Selenium.Chrome.ChromeOptions chromeDriverOptions = new OpenQA.Selenium.Chrome.ChromeOptions();
            driver2 = await Task.Factory.StartNew(() => new OpenQA.Selenium.Chrome.ChromeDriver(chromeDriverService, chromeDriverOptions));


            IEnumerable<int> pidsAfter = Process.GetProcessesByName("chrome").Select(p => p.Id);
            var newChromePids = pidsAfter.Except(pidsBefore);

            try
            {
                foreach (int pid in newChromePids)
                {
                    int hWnd = Process.GetProcessById(pid).MainWindowHandle.ToInt32();
                    ShowWindow(hWnd, SW_HIDE);
                }
            }
            catch
            {
                MessageBox.Show("Có lỗi xảy ra! Hãy khởi động lại chương trình");
                Exceptions_Handler();
            }

            Program.mainForm.lblStatus.Text = "Thiết lập kết nối nâng cao";

            driver2.Manage().Timeouts().ImplicitlyWait(TimeSpan.FromSeconds(10));

            await Task.Factory.StartNew(() => driver2.Url = "https://www.facebook.com/");


            WebDriverWait wait = new WebDriverWait(driver2, TimeSpan.FromSeconds(60));

            await Task.Factory.StartNew(() =>
            {
                try
                {
                    driver2.Url = "https://www.facebook.com/";
                }
                catch
                {
                    ((IJavaScriptExecutor)driver2).ExecuteScript("return window.stop()");
                }
            });

            await Task.Factory.StartNew(() =>
            {
                wait.Until<Boolean>((d) =>
                {
                    return ((IJavaScriptExecutor)driver2).ExecuteScript("return document.readyState").Equals("complete");
                });
            });

            try
            {
                driver2.ExecuteScript(@"document.getElementsByName('email')[0].value = '" + System.Web.HttpUtility.JavaScriptStringEncode(Program.mainForm.txtUser.Text) + "';");
            }
            catch
            {
                MessageBox.Show("Đường truyền mạng quá chậm, vui lòng thử lại sau!");
                Exceptions_Handler();
            }

            await Task.Factory.StartNew(() =>
            {
                driver2.ExecuteScript(@"document.getElementsByName('pass')[0].value = '" + System.Web.HttpUtility.JavaScriptStringEncode(Program.mainForm.txtPass.Text) + "';");
                driver2.ExecuteScript(@"document.getElementById('loginbutton').click();");
            });

            await Task.Factory.StartNew(() =>
            {
                wait.Until<Boolean>((d) =>
                {
                    return ((IJavaScriptExecutor)driver2).ExecuteScript("return document.readyState").Equals("complete");
                });
            });

            await TaskEx.Delay(1000);
            ready2 = true;
        }