Formlar, web sitesi ziyaretçilerinden bilgi almak için temel web öğeleridir. Web formlarının Metin kutuları, Parola alanları, Onay kutuları, Radyo düğmeleri, açılır menüler, dosya girişleri gibi farklı GUI öğeleri vardır.
Java ile Selenium Web Sürücüsünü kullanarak bu farklı form öğelerine nasıl erişileceğini göreceğiz. Selenium, her form öğesini WebElement nesnesi olarak kapsüller. Öğeleri bulmak ve metin kutularına metin girmek, düğmelere tıklamak vb. Gibi eylemler gerçekleştirmek için API sağlar. Her bir form öğesine erişmek için mevcut olan yöntemleri göreceğiz.
Bu eğiticide, aşağıdaki form öğelerinin nasıl tanımlanacağını göreceğiz
- WebElement'e Giriş, findElement (), findElements ()
- Giriş Kutusu
- Giriş Kutularına Değer Girme
- Giriş Kutularındaki Değerleri Silme
- Düğmeler
- Düğmeleri Gönder
- Kodu tamamla
- Sorun giderme
WebElement'e Giriş, findElement (), findElements ()
Selenium Web Sürücüsü, basit bir form öğesini WebElement nesnesi olarak kapsüller.
WebDriver'ın kimlik, Ad, Sınıf, XPath, Tagname, CSS Seçicileri, bağlantı Metni vb. Gibi Web öğelerinin farklı özelliklerine dayalı olarak form öğelerini tanımladığı çeşitli teknikler vardır.
Web Sürücüsü, öğeleri bulmak için aşağıdaki iki WebElement yöntemini sağlar.
- findElement () - tek bir web öğesi bulur ve WebElement Selenium nesnesi olarak geri döner.
- findElements () - konum belirleyici kriterleriyle eşleşen WebElement nesnelerinin bir listesini döndürür.
FindElement () yöntemini kullanarak bir web sayfasında WebElement nesnesi olarak tek bir öğe - Metin Alanı elde etmek için kod parçacıklarını görelim. Sonraki öğreticilerde birden çok öğe bulmak için findElements () yöntemini ele alacağız.
Adım 1: Web Elements nesnelerini oluşturmak için bu paketi içe aktarmamız gerekiyor
Adım 2: WebDriver sınıfında bulunan findElement () yöntemini çağırmalı ve WebElement nesnesini almalıyız.
Nasıl yapıldığını görmek için aşağıya bakın.
Giriş Kutusu
Giriş kutuları, bu iki türden birine atıfta bulunur:
- Metin Alanları - Yazılan değerleri kabul eden ve oldukları gibi gösteren selenyum giriş metin kutuları.
- Parola Alanları - Yazılan değerleri kabul eden ancak hassas değerlerin görüntülenmesini önlemek için bunları bir dizi özel karakter (genellikle noktalar ve yıldız işaretleri) olarak maskeleyen metin kutuları.
Konumlandırıcılar
FindElement () yöntemi, öğeye yer belirleyici olan bir parametre alır. By.id (), By.name (), By.xpath (), By.CSSSelector () vb. Gibi farklı konumlandırıcılar, sayfadaki öğeleri `` '' '' id, ad veya yol gibi özelliklerini kullanarak bulur. vb.
Elemanların id, xpath, vb. Alınmasında yardım almak için Fire path gibi eklentileri kullanabilirsiniz.
Aşağıda verilen örnek http://demo.guru99.com/test/login.html sitesini kullanmak, kimlik bulucuyu ve ad bulucuyu kullanan "Şifre" alanını kullanarak "E-posta adresi" metin alanını bulmak için kullanılan koddur.
- E-posta metin alanı Kimliğe göre bulunur
- Parola alanı ada göre bulunur
Selenium'da anahtarlar
Selenium'daki sendkeys (), test yürütme sırasında metin ve şifre alanlarına düzenlenebilir içerik girmek için kullanılan bir yöntemdir. Bu alanlar ad, sınıf, kimlik vb. Gibi konumlayıcılar kullanılarak tanımlanır. Web öğesinde bulunan bir yöntemdir. Yazım yönteminden farklı olarak, sendkeys () yöntemi herhangi bir metin kutusundaki mevcut metnin yerini almaz.
Giriş Kutularına Değer Girme
Metin Alanları ve Parola Alanlarına metin girmek için sendKeys (), Selenium'daki WebElement'te bulunan yöntemdir.
Aynı http://demo.guru99.com/test/login.html site örneğini kullanarak, Metin alanını ve Şifre alanlarını nasıl bulduğumuzu ve Selenium'a metni nasıl girdiğimizi burada bulabilirsiniz.
- Kimlik bulucuyu kullanarak "E-posta Adresi" Metin alanını bulun.
- İsim bulucuyu kullanarak "Şifre" alanını bulun
- Selenium gönderme anahtarları yöntemini kullanarak "E-posta Adresi" ne metin girin.
- SendKeys () yöntemini kullanarak "Şifre" alanına bir şifre girin.
Giriş Kutularındaki Değerleri Silme
Açık () yöntemi, bir giriş kutusu metni silmek için kullanılır. Bu yöntemin bir parametreye ihtiyacı yoktur . Aşağıdaki kod parçası, E-posta veya Şifre alanlarındaki metni temizleyecektir.
Düğmeler
Selenium tıklama düğmesine, click () yöntemi kullanılarak erişilebilir.
Yukarıdaki örnekte
- Oturum açmak için düğmeyi bulun
- Siteye giriş yapmak için sitenin giriş sayfasındaki "Oturum Aç" Düğmesine tıklayın.
Düğmeleri Gönder
Gönder düğmeleri, tüm formu sunucuya göndermek için kullanılır. Yukarıda yaptığımız gibi web öğesinde click () yöntemini normal bir düğme gibi kullanabilir veya formdaki herhangi bir web öğesinde veya gönder düğmesinin kendisinde submit () yöntemini kullanabiliriz.
Submit () kullanıldığında, WebDriver, elemanın hangi forma ait olduğunu öğrenmek için DOM'u arayacak ve ardından gönderme işlevini tetikleyecektir.
Kodu tamamla
İşte tam çalışma kodu
import org.openqa.selenium.By;import org.openqa.selenium.WebDriver;import org.openqa.selenium.chrome.ChromeDriver;import org.openqa.selenium. *;public class Form {public static void main (String [] args) {// nesnelerin / değişkenlerin bildirimi ve somutlaştırılmasıSystem.setProperty ("webdriver.chrome.driver", "G: \\ chromedriver.exe");WebDriver sürücüsü = yeni ChromeDriver ();String baseUrl = "http://demo.guru99.com/test/login.html";driver.get (baseUrl);// E-posta Adresine (TextField) karşılık gelen WebElement'i alınWebElement e-posta = driver.findElement (Yazan.id ("e-posta"));// Parola Alanına karşılık gelen WebElement'i alınWebElement password = driver.findElement (By.name ("passwd"));email.sendKeys (" Bu e-posta adresi istenmeyen postalardan korunmaktadır. Görüntülemek için JavaScript'in etkin olması gerekir.");password.sendKeys ("abcdefghlkjl");System.out.println ("Metin Alanı Kümesi");// Metin kutusundaki değerleri silmeemail.clear ();password.clear ();System.out.println ("Metin Alanı Temizlendi");// Gönder düğmesini bulunWebElement login = driver.findElement (By.id ("SubmitLogin"));// Formu göndermek için tıklama yöntemini kullanmaemail.sendKeys (" Bu e-posta adresi istenmeyen postalardan korunmaktadır. Görüntüleyebilmeniz için JavaScript'in etkin olması gerekir."); password.sendKeys ("abcdefghlkjl"); login.click (); System.out.println ("Giriş Tıklayarak Tamamlandı"); // formu göndermek için gönderme yöntemini kullanarak. Parola alanında kullanılan gönderme driver.get (baseUrl); driver.findElement (By.id ("email")). sendKeys (" Bu e-posta adresi istenmeyen postalardan korunmaktadır. Görüntülemek için JavaScript'in etkinleştirilmesi gerekir."); driver.findElement (By.name ("passwd")). sendKeys ("abcdefghlkjl"); driver.findElement (By.id ("SubmitLogin")). submit (); System.out.println ("Oturum Açma Göndermeyle Bitti"); //driver.close (); }}
Sorun giderme
Öğeleri bulurken NoSuchElementException () ile karşılaşırsanız, bu, öğenin Web sürücüsünün sayfaya eriştiği noktada sayfada bulunmadığı anlamına gelir.
- Chrome'da Firepath veya Inspect Element kullanarak bulucunuzu tekrar kontrol edin.
- Kodda kullandığınız değerin şu anda Firepath'teki öğeden farklı olup olmadığını kontrol edin.
- Bazı özellikler, birkaç öğe için dinamiktir. Değerin farklı olduğunu ve dinamik olarak değiştiğini fark ederseniz, daha güvenilir ancak karmaşık yollar olan By.xpath () veya By.cssSelector () kullanmayı düşünün.
- Bazen bu bir bekleme sorunu da olabilir, yani Web sürücüsü kodunuzu sayfa tamamen yüklenmeden önce bile çalıştırabilir, vb.
- Örtük veya açık beklemeleri kullanarak findElement () 'den önce bir bekleme ekleyin.
Özet
- Aşağıdaki tablo, yukarıda tartışılan her bir öğe türüne erişmek için komutları özetlemektedir.
Eleman | Komut | Açıklama |
---|---|---|
Giriş Kutusu | sendKeys () | metin kutularına değerler girmek için kullanılır |
açık() | mevcut değerinin metin kutularını temizlemek için kullanılır | |
Bağlantılar | Tıklayın() | bağlantıya tıklamak ve sonraki komuta geçmeden önce sayfanın yüklenmesinin tamamlanmasını beklemek için kullanılır. |
Gönder Düğmesi | Sunmak() |
- WebDriver, birden çok SELECT öğesinde birden fazla seçeneğin seçilmesine izin verir.
- Form içindeki herhangi bir öğe üzerinde submit () yöntemini kullanabilirsiniz. WebDriver, o öğenin ait olduğu formun gönderme işlevini otomatik olarak tetikleyecektir.