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}");
        }
Ejemplo n.º 2
0
        private void SeleniumVertifyCode(Uri uri)
        {
            var options = new OpenQA.Selenium.Chrome.ChromeOptions();

            options.AddArgument("-headless");
            options.AddArgument("log-level=3");
            using IWebDriver driver = new OpenQA.Selenium.Chrome.ChromeDriver(options);
            driver.Manage().Window.Maximize();
            driver.Navigate().GoToUrl(uri);
            driver.Manage().Cookies.AddCookie(new Cookie("QCCSESSID", Cookie, ".qcc.com", "/", null));
            driver.Navigate().GoToUrl(uri);
            driver.ExecuteJavaScript("Object.defineProperty(navigator, 'webdriver', {get: () => undefined})");
            var slide           = driver.FindElement(By.CssSelector("#nc_1_n1z"));
            var verifyContainer = driver.FindElement(By.CssSelector(".nc-lang-cnt"));
            var width           = verifyContainer.Size.Width;
            var action          = new Actions(driver);

            action.ClickAndHold(slide).Perform();
            Random    random    = new Random();
            int       offset    = 0;
            const int minOffset = 10;
            const int maxOffset = 30;

            while (width > offset)
            {
                offset += random.Next(minOffset, maxOffset);
                action.MoveByOffset(offset, 0).Perform();
                var code = driver.FindElement(By.CssSelector(".nc-lang-cnt")).Text;
                if (code.Contains("验证通过"))
                {
                    break;
                }
                System.Threading.Thread.Sleep(offset * minOffset);
            }
            //截图测试
            //Screenshot screenShotFile = ((ITakesScreenshot)driver).GetScreenshot();
            //string img_url = Environment.CurrentDirectory + "\\test.png";
            //screenShotFile.SaveAsFile(img_url, ScreenshotImageFormat.Png);
            action.Click(driver.FindElement(By.CssSelector("#verify"))).Perform();
            driver.Quit();
        }