Beispiel #1
0
        public void BuyOneProductSelenium()
        {
            var driver = new ChromeDriver();
            driver.Navigate().GoToUrl("http://localhost:5001");
            var lightingCategoryLink = driver.FindElementByCssSelector(".category-menu > div:nth-child(1) > div:nth-child(1) > ul:nth-child(1) > li:nth-child(2) > a:nth-child(1)");

            lightingCategoryLink.Click();

            var lightingProduct = driver.FindElementByCssSelector("div.col-lg-3:nth-child(1) > div:nth-child(1) > a:nth-child(1)");
            lightingProduct.Click();

            var ProductLink = driver.FindElementByCssSelector(".btn");

            Assert.IsNotNull(ProductLink);
        }
        static void Main(string[] args)
        {
            var url = "https://qa-antigo.elefanteletrado.com.br/Account/Login";

            var driver = new ChromeDriver();
            driver.Manage().Window.Maximize();
            driver.Navigate().GoToUrl(url);

            Thread.Sleep(2000);

            var campoLogin = driver.FindElementById("name");
            campoLogin.SendKeys("asdf");

            Thread.Sleep(2000);

            var botaoEntrar = driver.FindElementByCssSelector("input[type=submit][title='" + "Entrar" + "']");
            botaoEntrar.Click();

            Thread.Sleep(2000);

            var mensagemInvalida = "Usuário não encontrado.";
            var tagErro = driver.FindElementByClassName("error");
            if (tagErro.Text != mensagemInvalida)
            {
                Console.WriteLine("Mensagem errada, veio: " + tagErro.Text + ", esperado: " + mensagemInvalida);
            }
            else
            {
                Console.WriteLine("Validação correta!");
            }
        }
        private IEnumerable<Domain.Product> Scrape(string postcode)
        {
            var output = new List<Domain.Product>();

            using (var driver = new ChromeDriver())
            {
                driver.Manage().Timeouts().ImplicitlyWait(TimeSpan.FromSeconds(30));

                driver.Navigate().GoToUrl("http://www.dominos.co.uk");

                driver.FindElementById("txtPostcode").SendKeys(postcode);

                driver.FindElementById("btnStoreSearch").Click();

                Thread.Sleep(1000);

                driver.FindElementByCssSelector(".btn-secondary").Click();

                Thread.Sleep(1000);

                driver.Navigate().GoToUrl("https://www.dominos.co.uk/ProductCatalog/GetStoreContext");

                string storeContextJson = driver.FindElementByTagName("pre").Text;

                var storeContext = JsonConvert.DeserializeObject<StoreContext>(storeContextJson);

                driver.Navigate().GoToUrl(
                    $"https://www.dominos.co.uk/ProductCatalog/GetStoreCatalog?collectionOnly={storeContext.SessionContext.CollectionOnly}&menuVersion={storeContext.SessionContext.MenuVersion}&storeId={storeContext.SessionContext.StoreId}");

                string storeCatalogJson = driver.FindElementByTagName("pre").Text;

                var products = JsonConvert.DeserializeObject<List<DTOs.Category>>(storeCatalogJson);

                output = products
                    .SelectMany(p => p.Subcategories)
                    .SelectMany(p => p.Products)
                    .Where(p => !p.IsAlcohol)
                    .Where(p => p.Type != "PizzaLegend")
                    .Where(p => p.Name != "Half & Half")
                    .Where(p => p.Name != "Create Your Own")
                    .Select(p => new Domain.Product()
                        {
                            Id = p.Id.ToString(),
                            Name = p.Name,
                            Description = p.Description,
                            ImageUrl = p.ImageUrl.Replace("256x256", "1024x1024"),
                            GlutenFree = p.IsGlutenFree,
                            Hot = p.IsHot,
                            Vegetarian = p.IsVegetarian,
                            Price = p.DisplayPrice,
                            Category = (ProductCategory)Enum.Parse(typeof(ProductCategory), p.Type)
                        })
                    .ToList();
            }

            return output;
        }
        public NaverCrawler()
        {
            string id = ConfigurationManager.AppSettings["id"];
            string password = ConfigurationManager.AppSettings["password"];
            var processList = Process.GetProcessesByName("chromedriver");
            foreach( var process in processList )
            {
                process.Kill();
            }

            var chromeDriverService = ChromeDriverService.CreateDefaultService();
            chromeDriverService.HideCommandPromptWindow = true;

            var option = new ChromeOptions();
            option.AddExtension("3.7_0.crx");
            driver = new ChromeDriver(chromeDriverService, option );

            while (driver.WindowHandles.Count < 2)
            {
                Thread.Sleep(100);
            }

            driver.SwitchTo().Window(driver.WindowHandles[1]);

            WebDriverWait _wait = new WebDriverWait(driver, new TimeSpan(0, 1, 0));

            driver.Manage().Timeouts().ImplicitlyWait(new TimeSpan(0, 0, 10));

            _wait.Until(d => d.FindElement(By.Id("user_email")));
            driver.FindElementById("user_email").SendKeys(String.Format("{0}@naver.com\n", id));
            _wait.Until(d => d.FindElement(By.Id("user_password")));
            driver.FindElementById("user_password").SendKeys(password);
            driver.FindElementById("loginbtn").Click();

            driver.SwitchTo().Window(driver.WindowHandles[0]);
            driver.Url = loginFormUrl;
            driver.FindElementByCssSelector("#id").SendKeys(id);
            driver.FindElementByCssSelector("#pw").SendKeys(password);

            driver.FindElementByCssSelector("input.int_jogin").Click();

            cookieContainer = new CookieContainer();
            ReadOnlyCollection<OpenQA.Selenium.Cookie> cookieCollections = null;

            bool sessionFound = false;
            while (!sessionFound)
            {
                cookieCollections = driver.Manage().Cookies.AllCookies;
                foreach( var cookie in cookieCollections )
                {
                    if ( cookie.Name == "JSESSIONID" )
                    {
                        sessionFound = true;
                        break;
                    }
                }
            }
            foreach( var cookie in cookieCollections )
            {
                cookieContainer.Add(new System.Net.Cookie(cookie.Name, cookie.Value, cookie.Path, cookie.Domain));
            }

            driver.Quit();
        }