Selenium da Elemana Erişme

Selenium ile web nesnelerine erişmek için yapılması gerekenler.

Selenyumda Element Bulma Nedir?

Selenium otomasyon betiğinizi yazmaya başladığınızda , web öğeleriyle etkileşim ilk ve çok önemli bir adım olur çünkü bunlar, test betiğinizde oynadığınız WebElements'dir. Şimdi, bu web öğeleriyle etkileşim, yalnızca onları doğru yaklaşımı kullanarak tanımlarsanız gerçekleşebilir.

Selenium'daki Eleman Bul yöntemi, bir web öğesini tanımlamanıza yardımcı olan bir komuttur. Find Element'in, Selenium'daki Kimlik , Ad, Sınıf Adı vb.

Find Element'in sözdizimi şöyledir:

WebElement elementName= driver.findElement(By.<LocatorStrategy>("LocatorValue"));

 

Yukarıdaki sözdiziminde gösterildiği gibi, bu komut " By " nesnesini bağımsız değişken olarak kabul eder ve bir WebElement nesnesi döndürür. " By ", bir konumlandırıcı veya sorgu nesnesidir ve konumlandırıcı stratejisini kabul eder. Konum Belirleme Stratejisi aşağıdaki değerleri alabilir:

  • İD
  • İsim
  • Sınıf adı
  • Etiket adı
  • Bağlantı metni
  • Kısmi Bağlantı Metni
  • XPath
  • CSS Seçici
  • Metne Göre

Elemanı kimliğe(Id) göre bul

Hepimizin bildiği gibi, Selenium'daki kimlik bulucu, istenen WebElement'ı bir belgede (veya sayfada) bulmak için yaygın olarak kullanılan konumlayıcılardan biridir. Bir web sitesi dinamik olarak oluşturulmuş kimlikler kullanıyorsa, bu strateji benzersiz bir öğe bulamaz. Ancak yine de konumlandırıcı değeriyle eşleşen ilk web öğesini döndürür.

Örneğin, dinamik kimliği olan ve 'ID-3465-text1' olan ID'nin 'ID-4434-textE2' olarak değiştirildiği Button etiketine sahip bir web öğeniz varsa, bu gibi durumlarda, kimliği özniteliğini kullanın. Ancak, sabit kalırsa, Web Öğesini bulmak için kimliği kolayca kullanabilirsiniz.

Selenium da Elemana Erişme

Yukarıdaki durumda kimliği kullanan doğru yer belirleyici değeri,

WebElement checkBox = driver.findElement(By.id(“isAgeSelected”));

 

Elemanı İsme (Name) Göre Bul

Selenium'daki isim bulucu, ID ile bulmaya benzer, ancak sürücü bir elemanı "id" yerine "name" özniteliğine göre bulur.

Selenium Playground'un giriş formu sayfasını görelim ve Ad, E-posta vb. giriş metin kutuları için yer belirleyiciyi yazalım.

Selenium da Elemana Erişme

Yukarıdaki durumda adı kullanan doğru yer belirleyici değeri şöyle olacaktır:

WebElement emailTextBox= driver.findElement(By.name(“email”));

 

SınıfAdına (Class) Göre Eleman Bul

Selenium'daki ClassName bulucu, web sayfasındaki öğeleri CLASS öznitelik değerine göre bulur. Burada yer belirleyici olarak “class” özniteliğinin değeri iletilir.

Selenium Playground'un tablo sayfalandırma demo sayfasını görelim ve görüntülenen satır sayısını 10 olarak değiştirmek için açılır menü için yer belirleyiciyi yazalım.

Selenium da Elemana Erişme

Yukarıdaki durumda ClassName'i kullanan doğru yer belirleyici değeri şöyle olacaktır:

 

WebElement selectDropdown=driver.findElement(By.className(“form-control”));
//if(selectDropdown.GetAttribute("class").Contains("z-tab-seld")))
//driver.findElements(By.xpath("//body[contains(@class, 'is-mobile')]"));

 

EtiketAdına (Tag) Göre Eleman Bul

Bir tagName, bir sayfadaki her öğenin giriş etiketi, düğme etiketi veya bağlantı etiketi vb . Selenium, elemente göre web sayfasındaki elementleri bulur.

Selenium Playground'un aynı tablo sayfalandırma demo sayfasını görelim ve etiket adını kullanarak görüntülenen satır sayısını değiştirmek için açılır menü için yer belirleyiciyi yazalım.

Selenium da Elemana Erişme

Yukarıdaki durumda etiket adından yararlanan doğru konumlandırıcı değeri şöyle olacaktır:

WebElement elementName = driver.findElement(By.tagName(“select”));

 

Bağlantı Metnine Göre Eleman Bul

Selenium'daki Bağlantı Metni bulucu, bir web sayfasındaki köprüleri tanımlamak için kullanılır. Bir bağlantı etiketi yardımıyla belirlenir. Bir web sayfasında köprüler oluşturmak için, bağlantı Metni tarafından takip edilen bir bağlantı etiketi kullanabiliriz.

Tam bağlantı metinlerini kullanarak bağlantılara erişim, findElement by Link Text yöntemiyle yapılır. Ancak, iki bağlantı tam olarak bağlantı metnine sahipse, bu yöntem yalnızca birincisine erişir.

Selenium Playground'un radyo düğmesi demo sayfasını görelim ve aşağıda vurgulandığı gibi ana sayfaya gitmek için kullanılan Selenium Playground hiper bağlantısı için yer belirleyiciyi yazalım.

Selenium da Elemana Erişme

Yukarıdaki durumda bağlantı metnini kullanan doğru yer belirleyici değeri şu olacaktır:

WebElement seleniumPlaygroundLink= driver.findElement(By.linkText(“Selenium Playground”));

 

Kısmi Bağlantı Metnine Göre Eleman Bul

Bağlantı metinlerinin bir kısmını kullanarak bağlantılara erişim, By.partialLinkText() yöntemi kullanılarak yapılır. Birden çok eşleşmeye sahip kısmi bir bağlantı metni belirtirseniz yalnızca ilk eşleşmeye erişilir.

Selenium Playground'un aynı radyo düğmesi demo sayfasını görelim ve aşağıda vurgulandığı gibi ana sayfaya gitmek için kullanılan Selenium Playground hiper bağlantısı için yer bulucuyu yazalım. Ancak bu kez kısmi bağlantı metninden yararlanacağız.

Selenium da Elemana Erişme

Yukarıdaki durumda bağlantı metnini kullanan doğru konumlandırıcı değeri şöyle olacaktır:

WebElement seleniumPlaygroundLink= driver.findElement(By.partialLinkText(“Playground”));

 

Öğeyi CSS Seçici ile Bul

CSS Seçicileri, Selenium'da web öğelerini tanımlamak için kullanılan konum belirleme stratejilerinden biridir. Selenium'daki CSS Seçicileri bulucu , temel olarak web öğelerini HTML yapılarına göre tanımlayan karakter dizisi modelini kullanır. Selenium'da bir CSS seçici kullanarak bir öğeyi bulmak, id, ad, bağlantı vb. öznitelikleri kullanmaktan biraz daha zor görünebilir. Yine de, tutarlı HTML özniteliklerine sahip olmayan dinamik öğeleri bulmak için en etkili stratejilerden biridir. CSS Seçici sözdizimi, XPath sözdizimine oldukça benzer. Aşağıdaki gibi temsil edilebilir.

Selenium Playground'un tek onay kutusu demo sayfasını görelim ve onay kutusu için CSS seçiciyi yazalım ve daha sonra aynısını findElement kullanarak web öğesinin yerini belirlemede kullanalım.

Selenium da Elemana Erişme

Yukarıdaki durumda CSS seçiciyi kullanan doğru yer belirleyici değeri şöyle olacaktır:

WebElement checkbox= driver.findElement(By.cssSelector(“input[id='isAgeSelected']));

 

XPath ile Eleman Bul

XML Yolu olarak da bilinen Selenium'daki XPath bulucu , bir sayfanın HTML yapısında gezinmenize yardımcı olabilecek Selenium WebDriver'da en sık kullanılan konumlayıcılardan biridir .

Selenium'daki temel XPath formatı aşağıda açıklanmıştır.

Element by XPath'ı bulmak için Case'i kullanın:

Selenium Playground'un CSS seçici, tek onay kutusu demo sayfasında gördüğümüzle aynı örneği görelim ve onay kutusu için XPath'i yazalım.

Selenium da Elemana Erişme

Yukarıdaki durumda XPath'i kullanan doğru yer belirleyici değeri şu olacaktır:

WebElement checkbox= driver.findElement(By.xpath(//input[@id='isAgeSelected']”));

 

Bir de findElements kullanan bir uygulama görelim.

Selenium Playground'da oturum açın ve sayfadaki tüm bölüm başlıklarını listeleyin.

Selenium da Elemana Erişme

bulucu:

Bölüm başlıklarını XPath kullanarak incelediğimizde, aynı XPath kullanılarak birden çok öğenin döndürüldüğünü görüyoruz. Dolayısıyla bu gibi durumlarda findElements kullanmak uygun olacaktır.

List<WebElement> sectionHeaders= driver.findElements(By.xpath(//h2[@class='st_heading']”));

 

Selenium'da Metne Göre Eleman Bul nedir?

Selenium'da find element ve sözdizimini bir önceki bölümde görmüştük. Şimdi, Selenium WebDriver'da öğeyi metne göre nasıl bulacağınızı merak ediyor olmalısınız.

Cevap, Selenium'da XPath kullanmaktır !!

Nasıl olduğunu merak ediyor musun? Aşağıdaki bölümlere bakalım.

Metni kullanmak için, Konumlayıcı Stratejiniz olarak XPath'ı ve Konumlayıcı Değerindeki öğenin metin özniteliğini kullanmanız gerekecektir.

Selenium'daki temel XPath formatı aşağıdaki gibidir.

XPath = //tagname[@Attribute=’Value’]

 

Ancak, başlamadan önce, en sonunda findElement'te kullanılacak olan iki yerleşik Selenyum yöntemini anlamak önemlidir.

  1. text() – Bu, bir öğeyi tam metin değerine göre bulmak için XPath ile kullanılan, Selenium'da yerleşik bir yöntemdir. text() öğesini findElement ile kullanmanın sözdizimi şöyledir:
     
    WebElement ele = driver.findElement(By.xpath(//<tagName>[text()=’text value’]”))
     
  2. içerir() – text() yöntemine benzer şekilde, içerir(), XPath ile kullanılan başka bir yerleşik yöntemdir. Ancak bu, konumlandırıcıyı kısmi bir metin eşleşmesine dayalı olarak yazmak istediğimizde kullanılır. text() & include() öğesini findElement ile kullanmanın sözdizimi şöyledir:
     
    WebElement ele=driver.findElement(By.xpath(//<tagName>[contains(text(),’textvalue’)]”))
     

Şimdi Checkbox Demo sayfası için yer bulucuyu inceleyelim. İncelemek için Web Öğesine sağ tıklayıp İncele'ye tıklamanız yeterlidir. Öğeler sekmesinde yer belirleyicinizi yazmaya başlayabilirsiniz.

Selenium da Elemana Erişme
Yukarıdaki resimde gösterildiği gibi, tam bir eşleşme için Onay Kutusu Demo metnini a etiketiyle birlikte kullanıyoruz ve bu nedenle, buradaki doğru uygulama şu şekilde olacaktır:

WebElement checkbox= driver.findElement(By.xpath(//a[text()=’Checkbox Demo’]”))

 

Kısmi Metin eşleşmesi için Selenium'da Metne Göre Eleman Bul

Bu makalenin Selenium WebDriver'da metne göre öğe bulmayla ilgili önceki örneğinde, tam bir metin eşleşmesi için findElement by Text'i nasıl kullanabileceğinizi gördünüz. Bu bölümde, web öğelerini bulmak için kısmi Metin eşleşmesini nasıl kullanabileceğimizi anlayacağız.

 

Selenium da Elemana Erişme

Yukarıdaki resimde gösterildiği gibi, kısmi bir eşleşme için Tablo metnini a etiketiyle kullanıyoruz ve sonuç olarak yukarıdaki konumlandırıcıyı kullanarak toplam 5 Web Öğesi elde ediyoruz. 1'den fazla Web Elementi olduğu için bu durumda FindElements kullanacağız.

Selenium'daki FindElements, yalnızca tek bir web öğesi döndüren FindElement'in aksine size konumlandırıcı değeriyle eşleşen web öğelerinin listesini döndürür. Web sayfasında eşleşen öğe olmaması durumunda, FindElements boş bir liste döndürür.

Burada kısmi metin eşleşmesi olan FindElements kullanan doğru uygulama şu şekilde olacaktır:

List<WebElement> tableOptions=driver.findElements(By.xpath(//a[contains(text(),’Table’)”)

 

Birden Fazla Aynı Özellikte Eleman Varsa

Tarayicim.findElements(By.xpath("//mat-form-field[@apparance='outline']")).get(0).click();

 

 

Kaynak

 

Yorumunuzu Ekleyin


Yükleniyor...
Yükleniyor...