🙂 İNSANLARIN EN HAYIRLISI INSANLARA FAYDALI OLANDIR 🙂

Ramazan HABER / C# RMOS / Selenium firefox ile

 

1-) C# RMOS - Selenium firefox ile

 

private static string GetDefaultFirefoxProfileLocation()

        {

            string profilesDir = $@"{Environment.ExpandEnvironmentVariables("%appdata%")}\Mozilla\Firefox\Profiles";

            return Directory.GetDirectories(profilesDir).First(dir => dir.EndsWith(".default"));

        }

 

1-) C# RMOS - Selenium.WebDriver ve Selenium.Firefox.WebDriver-> NuGet'den indir kur.

 

2-) Linke girmek ve bir buttona tıklamak için

using System.Windows.Forms;

using OpenQA.Selenium;

using OpenQA.Selenium.Firefox;

using System.Threading;

using System.Collections.ObjectModel;

 

namespace Selenium1

{

    public partial class Form1 : Form

    {

        // ders videosu https://www.youtube.com/watch?v=877WZUanTxs

        // ders videosu 2 https://www.youtube.com/watch?v=WbnemkSfYbI

        // html'deki istenilen alana sağtık kopyala xPATH diyerek kolayca xPath' ini alabilirsin

        string link = @"https://www.n11.com/";

        public Form1()

        {

            InitializeComponent();

 

        }

 

        private void btnSepeteEkle_Click(object sender, System.EventArgs e)

        {

            IWebDriver driver = new FirefoxDriver();

            driver.Navigate().GoToUrl(link); // n11 sitesine git

            driver.FindElement(By.ClassName("btnSignIn")).Click(); // className'i btnSignIn olanı bul ve ona click yap

            driver.FindElement(By.Id("email")).SendKeys("rambo.haber.deneme@gmail.com"); // SenKeys ile textbox alanlarına doldurma yapılır

            driver.FindElement(By.Id("password")).SendKeys("deneme123");

            driver.FindElement(By.Id("loginButton")).Click(); // id'si loginButton olanı bul ve ona click yap

            driver.FindElement(By.Id("searchData")).SendKeys("samsung");

            driver.FindElement(By.ClassName("searchBtn")).Click();

 

            // driver.FindElement(By.XPath(".//*[@id='contentListing']/div/div/div[2]/div[3]/a[2]")).Click(); // id'si contentListing olanın içine gir sonra /div dediği bir alt dive gir /div[2] dediği altındaki 2. dive gir demek. a[2] dediği 2 inci a etiketine gir demek yani tıkla demek.

            driver.FindElement(By.XPath(".//*[@class='pagination']/a[2]")).Click(); // class'ı pagination olan etiketin içindeki a[2] etiketine gir yani tıkla demek. sayfa 2 ye geçmek için bunu yazdım.

            Thread.Sleep(2000); //

 

            driver.FindElement(By.XPath(".//*[@id='p-264647096']/div[1]/a")).Click(); // id'si p-264647096 olan etiketin içindeki 1 inci dive gir ve onun içindeki 1 inci a etiketine tıkla demek.

 

            Thread.Sleep(2000); // sayfanın yüklenmesi biraz geç sürebilir o yüzden 2 sn bekledikten sonra sepete ekle yaptım

            driver.FindElement(By.ClassName("btnAddBasket")).Click();

        }

 

        private void btnUrunListele_Click(object sender, System.EventArgs e)

        {

            IWebDriver driver = new FirefoxDriver();

            driver.Navigate().GoToUrl(link); // n11 sitesine git

            driver.FindElement(By.ClassName("btnSignIn")).Click(); // className'i btnSignIn olanı bul ve ona click yap

            driver.FindElement(By.Id("email")).SendKeys("rambo.haber.deneme@gmail.com"); // SenKeys ile textbox alanlarına doldurma yapılır

            driver.FindElement(By.Id("password")).SendKeys("deneme123");

            driver.FindElement(By.Id("loginButton")).Click(); // id'si loginButton olanı bul ve ona click yap

            driver.FindElement(By.Id("searchData")).SendKeys("samsung");

            driver.FindElement(By.ClassName("searchBtn")).Click();

 

            ReadOnlyCollection<IWebElement> element = driver.FindElements(By.XPath("/html/body/div[1]/div/div/div/div[2]/section/div[2]/ul/li/div/div[1]/a")); // html'nin sağtık kopyala xpath'ini aldıkdan sonra düzenledim. ul'nin içindeki li'lerin hepsini al ve içindeki div in içindeki div[1]'in a' larını al demek. NOT : div dersen o yerdeki tüm div'leri alır ama div[2] dersen sadece 2 inci div'i alır

 

            for (int i = 0; i < element.Count; i++)

            {

                listBox1.Items.Add(i + "-) " + element[i].Text);

            }

 

        }

    }

}

 

 

/********************************DÜZENLENMİŞ HALİ*********************************************/

 

1-) C# RMOS - SAYFA YÜKLENDİKTEN SONRA YANİ İSTENİLEN İD'Yİ BULUNCAYA KADAR 10 SN BEKLEMEK İÇİN

WebDriverExtensions.cs

using OpenQA.Selenium;

using OpenQA.Selenium.Support.UI;

using System;

using System.Windows.Forms;

 

namespace Selenium1

{

    public static class WebDriverExtensions

    {

        public static void FindElementClick(this IWebDriver driver, By by, int timeoutInSeconds) // istediğim id'yi 10 sn boyunca sayfa yükleninceye kadar bekle demek

        {

            try

            {

                if (timeoutInSeconds > 0)

                {

                    new WebDriverWait(driver, TimeSpan.FromSeconds(timeoutInSeconds)).Until(drv => drv.FindElement(by));

                }

                driver.FindElement(by).Click();

            }

            catch (Exception ex)

            {

                MessageBox.Show("ID Bulunamadı. ***" + by.ToString() + "*** " + ex.Message);

            }

 

        }

        public static void FindElementSendKeys(this IWebDriver driver, By by, int timeoutInSeconds, string deger) // istediğim id'yi 10 sn boyunca sayfa yükleninceye kadar bekle demek

        {

            try

            {

                if (timeoutInSeconds > 0)

                {

                    new WebDriverWait(driver, TimeSpan.FromSeconds(timeoutInSeconds)).Until(drv => drv.FindElement(by));

                }

                driver.FindElement(by).SendKeys(deger);

            }

            catch (Exception ex)

            {

                MessageBox.Show("ID Bulunamadı. ***" + by.ToString() + "*** " + ex.Message);

            }

 

        }

    }

}

 

2-) N11 SİTESİNE LOGİN OLMA VE İSTENİLEN ÜRÜNÜN İD Sİ İLE SEPETE EKLEME VEYA TÜM ÜRÜNLERİN LİSTESİNİ ALMA

using System.Windows.Forms;

using OpenQA.Selenium;

using OpenQA.Selenium.Firefox;

using System.Collections.ObjectModel;

 

namespace Selenium1

{

    public partial class Form1 : Form

    {

        string link = @"https://www.n11.com/";

        public Form1()

        {

            InitializeComponent();

        }

        private void btnSepeteEkle_Click(object sender, System.EventArgs e)

        {

             IWebDriver driver = new FirefoxDriver();

 

            driver.Navigate().GoToUrl(link);

            WebDriverExtensions.FindElementClick(driver, By.ClassName("btnSignIn"),10);

            driver.FindElement(By.Id("email")).SendKeys("rambo.haber.deneme@gmail.com");

            driver.FindElement(By.Id("password")).SendKeys("deneme123");

            driver.FindElement(By.Id("loginButton")).Click();

 

            WebDriverExtensions.FindElementSendKeys(driver, By.Id("searchData"),10, "samsung");

            WebDriverExtensions.FindElementClick(driver, By.ClassName("searchBtn"), 10);

            WebDriverExtensions.FindElementClick(driver, By.XPath("//*[@class='pagination']/a[2]"), 10); // 10 sn boyunca buluncaya kadar bekle

            WebDriverExtensions.FindElementClick(driver, By.XPath("//*[@id='p-253275059']/div[1]/a"), 10);

            WebDriverExtensions.FindElementClick(driver, By.XPath("//*[@id='701219377']/option[3]"), 10);

            WebDriverExtensions.FindElementClick(driver, By.ClassName("btnAddBasket"), 10);

 

            driver.Quit();

        }

     

        private void btnUrunListele_Click(object sender, System.EventArgs e)

        {

            IWebDriver driver = new FirefoxDriver();

            driver.Navigate().GoToUrl(link); // n11 sitesine git

            driver.FindElement(By.ClassName("btnSignIn")).Click(); // className'i btnSignIn olanı bul ve ona click yap

            driver.FindElement(By.Id("email")).SendKeys("rambo.haber.deneme@gmail.com"); // SenKeys ile textbox alanlarına doldurma yapılır

            driver.FindElement(By.Id("password")).SendKeys("deneme123");

            driver.FindElement(By.Id("loginButton")).Click(); // id'si loginButton olanı bul ve ona click yap

            driver.FindElement(By.Id("searchData")).SendKeys("samsung");

            driver.FindElement(By.ClassName("searchBtn")).Click();

 

            ReadOnlyCollection<IWebElement> element = driver.FindElements(By.XPath("/html/body/div[1]/div/div/div/div[2]/section/div[2]/ul/li/div/div[1]/a")); // html'nin sağtık kopyala xpath'ini aldıkdan sonra düzenledim. ul'nin içindeki li'lerin hepsini al ve içindeki div in içindeki div[1]'in a' larını al demek. NOT : div dersen o yerdeki tüm div'leri alır ama div[2] dersen sadece 2 inci div'i alır

            for (int i = 0; i < element.Count; i++)

            {

                listBox1.Items.Add(i + "-) " + element[i].Text);

            }

            driver.Quit();

        }

 

    }

}

 

 2021 Ocak 18 Pazartesi
 430