C# Selenium WebDriver ipuçları: Cheat Sheet
Selamlar,
Bu yazımda selenium element işlemleri ve tanımlamalarından cheat sheet olarak kısa kısa bahsetmek istiyorum. Bu yazıdan yararlanarak temel element işlemlerini yapabilirsiniz. Java ve Python ile neredeyse aynı şekilde sadece bazı syntax farklılıkları bulunmakta.
Driver Tanımları
En çok kullanılan üç browser için gerekli olan driver tanımlarını şu şekilde yapabilirsiniz;
//Chrome Driver
using OpenQA.Selenium.Chrome;
IWebDriver driver = new ChromeDriver();
//Firefox Driver
using OpenQA.Selenium.Firefox;
IWebDriver driver = new FirefoxDriver();
//Internet Explorer Driver
using OpenQA.Selenium.IE;
IWebDriver driver = new InternetExplorerDriver();
Locators
driver.FindElement(By.Id("id"));
driver.FindElement(By.Xpath(".//[@id='input']"));
driver.FindElement(By.CssSelector("#id > div > input"));
driver.FindElement(By.TagName("button"));
driver.FindElement(By.Name("name"));
driver.FindElement(By.LinkText("text"));
Çok tercih edilen bazı locator tanımları bu şekilde yapabilirsiniz. Locators oluşturma konusunda buradan ve buradan bilgi edinebilirsiniz.
Basit Element İşlemleri
WebElement element = driver.FindElement(By.Id("id"));
element.Click();
element.SendKeys("text");
element.Clear();
element.Submit();
string getText = element.Text();//Çift tıklama
Actions builder = new Actions(driver);
builder.DoubleClick(driver.FindElement(By.Id("id"))).Perform();IWebElement element = driver.FindElement(By.Id("id"));
SelectElement select = new SelectElement(element);
//Listeden seçim eklemek için kullanılır
select.SelectByIndex(1);
select.SelectByText("text");
select.SelectByValue("value");
//Seçimi geri bırakmak için kullanılır
select.DeselectAll();
select.DeselectByIndex(1);
select.DeselectByText("text");
select.DeselectByValue("value");
Ilist<IWebElement> elementList =
driver.FindElements(By.Xpath(".//div//table//tbody//tr"));
int listSize = elementList.Count(); // listenin boyutunu oluştururuz
İleri Seviye Element İşlemleri
//Bekleme
WebDriverWait wait = new WebDriverWait(driver, new TimeSpan(0,0,5));
// Elementin görünür olması beklenir
wait.Until(ExpectedConditions.ElementIsVisible(By.ID("id")));
//elementin görünür olduğu kontrol edilir
Assert.IsTrue(driver.FindElement(By.XPath("//*[@id='tve_editor']/div")).Displayed);
//Elementin tıklanabilir olması beklenir
wait.Until(ExpectedConditions.ElementToBeClickable(By.ID("id")));
//Sürükle Bırak
IWebElement element = driver.FindElement(By.XPath("//*[@id='project']/p[1]/div/div[2]"));
Actions move = new Actions(driver);
move.DragAndDropToOffset(element, 30, 0).Perform();
// elementi üzerinde gelinir
WebDriverWait wait = new WebDriverWait(driver, new TimeSpan(0,0,5));
var element = wait.Until(ExpectedConditions.ElementIsVisible(By.Id(elementId)));
Actions hoverAction = new Actions(driver);
hoverAction.MoveToElement(element).Perform();
//Dosya yükleme
IWebElement element = driver.FindElement(By.Id("fileupload"));
String filePath = @"D:WebDriver.Series.TestsWebDriver.xml";
element.SendKeys(filePath);
//Assertions
Assert.AreEquel("Application title", driver.Title, "message");
Assert.IsFalse(True, "message");
Assert.IsTrue(True, "message");
Assert.Fail("message");// elementin ekran görüntüsü alma
IWebElement element = driver.FindElement(By.XPath(".//[@id='tve_editor']//div"));
var cropArea = new Rectangle(element.Location, element.Size);
var bitmap = bmpScreen.Clone(cropArea, bmpScreen.PixelFormat);
bitmap.Save(fileName);
Browser İşlemleri
//Web sayfasında gitmek
driver.Navigate().GoToUrl("https://google.com");
//sayfa başlığını alma
string title = driver.Title();
//güncel sayfa url'i alma
string currentUrl = driver.Url();
//sayfa kaynak kodu alma
string source = driver.PageSource();
//sayfayı yenileme
driver.Navigate().Refresh();
//Bir önceki sayfaya geri gitme
driver.Navigate().Back();
//Sayfayı büyütmek
driver.Manage().Window.Maximize();
//Sayfanın ekran görüntüsü almak için
Screenshot screenshot = ((ITakesScreenshot)driver).GetScreenshot();
screenshot.SaveAsFile(@"pathToImage", ImageFormat.Png);
//Frame değiştirmek
driver.SwitchTo().Frame(1);
driver.SwitchTo().Frame("frameName");
IWebElement element = this.driver.FindElement(By.Id("id"));
this.driver.SwitchTo().Frame(element);
//Pencere değiştirmek
driver.SwitcTo().Window(driver.WindowHandles.Last());
driver.SwitcTo().Window(driver.WindowHandles.First());
driver.SwitchTo().Window(driver.WindowHandles.LAstOrDefault());
//Pop-up işlemleri
IAlert alert = driver.SwitchTo().Alert();
alert.Accept();
alert.Dismiss();
Temel olarak bu tanımlamaları ve element işlemlerini kullanabilirsiniz. Eksi olduğunu düşündüğünüz işlemler tanımlamalar var ise söyleyebilirsiniz ve hemen ekleme yapabiliriz.
Yararlandığım ve Esinlendiğim kaynak:
https://www.automatetheplanet.com/selenium-webdriver-csharp-cheat-sheet/