Çerezlerin Nasıl Kullanılacağı Selenium Web Sürücüsü
⚡ Akıllı Özet
Çerezler, kullanıcı tercihlerini ve oturum tanımlayıcılarını anahtar-değer çiftleri olarak saklar ve Selenium WebDriver bunları okuyabilir, kaydedebilir ve tekrar oynatabilir, böylece otomatik bir test her sonraki çalıştırmada giriş ekranını atlar.
HTTP çerezleri, kullanıcı ve tercihleri hakkında bilgilerden oluşur. Anahtar-değer çifti kullanarak bilgi depolar. Kullanıcı web sitesinde gezinirken, web uygulamasından gönderilen ve web tarayıcısında saklanan küçük bir veri parçasıdır.
Konuya yeni başlıyorsanız, bu kılavuzla başlayın. çerez testi.
Selenium Çerezler için Sorgu Komutları
In Selenium WebDriver ile, aşağıdaki yerleşik yöntemleri kullanarak çerezleri sorgulayabilir ve bunlarla etkileşim kurabiliriz. Bunların her birine, Options arayüzünü döndüren driver.manage() aracılığıyla ulaşılır.
| Selenium Sorgu Komutları | Çıktı |
|---|---|
| sürücü.yönetim().çerezlerial(); | Tüm çerezlerin listesini döndürür. |
| sürücü.yönetim().getCookieNamed(arg0); | İsme göre belirli bir çerez döndürür. |
| sürücü.yönetim().addCookie(arg0); | Çerezi oluşturur ve ekler. |
| sürücü.yönetim().çerezleri sil(arg0); | Belirli bir çerezi siler. |
| sürücü.yönetim().arg0'dakiÇerezAdınıSil(arg0); | Belirtilen ada göre belirli bir çerezi siler. |
| sürücü.yönetim().tümÇerezleriSil(); | Tüm çerezleri siler. |
Çerezleri Neden İşleme (Kabul Etme) Selenium?
Her çerez bir ad, değer, etki alanı, yol, son kullanma tarihi ve güvenli olup olmadığına ilişkin durumla ilişkilendirilir. Bir istemciyi doğrulamak için sunucu tüm bu değerleri bir çerezde ayrıştırır.
Ne zaman test yapmak kullanan bir web uygulaması Selenium WebDriver kullanırken çerez oluşturmanız, güncellemeniz veya silmeniz gerekebilir.
Örneğin, çevrimiçi bir mağazayı otomatikleştirirkenping Uygulamanızda, sipariş verme, sepeti görüntüleme, ödeme bilgilerini alma, sipariş onaylama vb. gibi test senaryolarını otomatikleştirmeniz gerekebilir.
Çerezler saklanmazsa, yukarıda listelenen test senaryolarını çalıştırmadan önce her seferinde oturum açma işlemini gerçekleştirmeniz gerekecektir. Bu, kodlama çabanızı ve yürütme sürenizi artıracaktır.
Çözüm, çerezleri bir dosyada saklamaktır. LaterBu dosyadan çerez değerlerini alıp mevcut tarayıcı oturumunuza ekleyin. Sonuç olarak, her seferinde giriş adımlarını atlayabilirsiniz. test durumu çünkü sürücü oturumunuz bu bilgiyi içeriyor.
Uygulama sunucusu artık tarayıcı oturumunuzu doğrulanmış olarak kabul ediyor ve sizi doğrudan istediğiniz sayfaya yönlendiriyor. URL.
Çerezlerin Nasıl Kullanılacağı Selenium
Kullanacağız https://demo.guru99.com/test/cookie/selenium_aut.php demo amacımız için.
Bu 2 adımlı bir süreç olacak.
Adım 1) Uygulamaya giriş yapın ve oluşturulan kimlik doğrulama çerezini saklayın.
Demo uygulaması, aşağıda gösterilen sade giriş formunu sunmaktadır.
Adım 2) Kaydedilen çerezi kullanarak, kullanıcı kimliği ve şifre kullanmadan uygulamaya tekrar giriş yapın.
Adım 1) Çerez bilgilerinin saklanması
package CookieExample; import java.io.BufferedWriter; import java.io.File; import java.io.FileWriter; import java.util.Set; import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.chrome.ChromeDriver; import org.openqa.selenium.Cookie; public class cookieRead{ public static void main(String[] args) { WebDriver driver; System.setProperty("webdriver.chrome.driver","G:///chromedriver.exe"); driver=new ChromeDriver(); driver.get("https://demo.guru99.com/test/cookie/selenium_aut.php"); // Input Email id and Password If you are already Register driver.findElement(By.name("username")).sendKeys("abc123"); driver.findElement(By.name("password")).sendKeys("123xyz"); driver.findElement(By.name("submit")).click(); // create file named Cookies to store Login Information File file = new File("Cookies.data"); try { // Delete old file if exists file.delete(); file.createNewFile(); FileWriter fileWrite = new FileWriter(file); BufferedWriter Bwrite = new BufferedWriter(fileWrite); // loop for getting the cookie information // loop for getting the cookie information for(Cookie ck : driver.manage().getCookies()) { Bwrite.write((ck.getName()+";"+ck.getValue()+";"+ck.getDomain()+";"+ck.getPath()+";"+ck.getExpiry()+";"+ck.isSecure())); Bwrite.newLine(); } Bwrite.close(); fileWrite.close(); } catch(Exception ex) { ex.printStackTrace(); } } }
⚠️ Sürüm notu: System.setProperty satırı, orijinal eğitimde yazıldığı gibi aynen korunmuştur. Selenium 4.6 sonrası, Selenium Yönetici, uygun chromedriver'ı otomatik olarak indirir ve yapılandırır, bu nedenle mevcut bir kurulumda bu satıra artık gerek yoktur. Orijinal kod aşağıda olduğu gibi bırakılmıştır ve hala derlenmektedir.
Code açıklama
- Bir WebDriver örneği oluşturun.
- driver.get(“https://demo.guru99.com/test/cookie/selenium_aut.php”) komutunu kullanarak web sitesini ziyaret edin.
- Uygulamaya giriş yapın.
- Çerez bilgilerini kullanarak okuyun
driver.manage().getCookies();
- Çerez bilgilerini Dosya kullanarak saklayın.Writer Karakter dizileri yazmak için ders ve BufferedWriter Metni Cookies.data adlı bir dosyaya yazmak.
- Cookies.data dosyası, ad, değer, etki alanı ve yol bilgileriyle birlikte tüm çerez bilgilerini saklar. Bu bilgilere erişerek, giriş bilgilerini girmeden uygulamaya giriş yapabiliriz.
Yukarıdaki kodu çalıştırdığınızda, proje klasör yapısında Cookies.data dosyası oluşturulur. Dosyayı açtığınızda, aşağıdaki vurgulanmış ekran görüntüsünde gösterildiği gibi, test edilen uygulamanın giriş bilgilerinin çerez biçiminde kaydedildiğini görebilirsiniz.
Adım 2) Uygulamaya giriş yapmak için saklanan çerezin kullanılması
Şimdi, 1. adımda oluşturulan çereze erişeceğiz ve onu uygulamadaki oturumumuzu doğrulamak için kullanacağız.
package CookieExample; import java.io.BufferedReader; import java.io.File; import java.io.FileReader; import java.util.Date; import java.util.StringTokenizer; import org.openqa.selenium.Cookie; import org.openqa.selenium.WebDriver; import org.openqa.selenium.chrome.ChromeDriver; public class CookieWrite { public static void main(String[] args){ WebDriver driver; System.setProperty("webdriver.chrome.driver","G://chromedriver.exe"); driver=new ChromeDriver(); try{ File file = new File("Cookies.data"); FileReader fileReader = new FileReader(file); BufferedReader Buffreader = new BufferedReader(fileReader); String strline; while((strline=Buffreader.readLine())!=null){ StringTokenizer token = new StringTokenizer(strline,";"); while(token.hasMoreTokens()){ String name = token.nextToken(); String value = token.nextToken(); String domain = token.nextToken(); String path = token.nextToken(); Date expiry = null; String val; if(!(val=token.nextToken()).equals("null")) { expiry = new Date(val); } Boolean isSecure = new Boolean(token.nextToken()). booleanValue(); Cookie ck = new Cookie(name,value,domain,path,expiry,isSecure); System.out.println(ck); driver.manage().addCookie(ck); // This will add the stored cookie to your current session } } }catch(Exception ex){ ex.printStackTrace(); } driver.get("https://demo.guru99.com/test/cookie/selenium_aut.php"); } }
Çıktı: Kullanıcı adı ve şifre girmeden doğrudan giriş başarı ekranına yönlendirilirsiniz.
NOT: Yukarıdaki komutu çalıştırdıktan sonra giriş sayfasını görürseniz, sayfayı yeniden yükleyin.
⚠️ Java not: Okuyucu betiği, JDK'nın uzun zaman önce kullanımdan kaldırdığı `new Boolean(String)` ve `new Date(String)` yöntemlerini kullanıyor. Modern bir JDK'da bunların karşılıkları `Boolean.parseBoolean(token.nextToken())` ve `java.time` ayrıştırıcısıdır. Orijinal satırlar yukarıda korunmuştur; notu bir düzenleme olarak değil, modern bir alternatif olarak değerlendirin.
Çerez Özellikleri ve Selenium Çerez Sınıfı
Yukarıdaki iki komut dosyası, bir dosyadan altı alanı içeri ve dışarı taşır. Bu alanlar, org.openqa.selenium.Cookie sınıfının sunduğu alanlarla tamamen aynıdır ve bunları bilmek, 2. Adımdaki belirteçleme döngüsünü çok daha kolay okunabilir hale getirir.
| özellik | Erişimci | Ne demek |
|---|---|---|
| İsim | getName () | Sunucunun aradığı anahtar, örneğin JSESSIONID. |
| Özellik | Değer elde etmek() | Saklanan veri, genellikle oturum tanımlayıcısıdır. |
| domain | getDomain () | Tarayıcının çerezi geri göndereceği sunucu. |
| Yol | getPath () | MKS URL Çerezin uygulandığı ön ek. |
| vade | getExpiry() | Çerezin geçerlilik süresinin sona erdiği tarih. Boş değer, oturum çerezini ifade eder. |
| Güvenli | isSecure() | Çerez yalnızca HTTPS üzerinden gönderildiğinde doğrudur. |
| HttpOnly | isHttpOnly() | Doğru olduğunda JavaSayfadaki komut dosyası çerezi okuyamıyor. |
| AynıSite | getSameSite() | Sıkı, Gevşek veya Hiçbiri. Eklendi Selenium 4. |
2. adımda kullanılan altı argümanlı kurucu yerine, mevcut kod genellikle yalnızca ilgilendiğiniz alanları ayarlamanıza olanak tanıyan iç Builder sınıfı aracılığıyla bir çerez oluşturur.
Cookie sessionCookie = new Cookie.Builder("JSESSIONID", "A1B2C3D4") .domain("demo.guru99.com") .path("/") .isSecure(true) .isHttpOnly(true) .build(); driver.manage().addCookie(sessionCookie);
Çoğu insanı yanıltan bir kural var: Çerez nesnesi oluşturulduktan sonra düzenlenemez. Bir değeri değiştirmek için eski çerezi silmeniz ve yeniden oluşturulmuş bir kopyasını eklemeniz gerekir; bu nedenle Builder çok kullanışlıdır.
Cookie original = driver.manage().getCookieNamed("JSESSIONID"); driver.manage().deleteCookie(original); Cookie updated = new Cookie.Builder(original.getName(), "NEW-VALUE") .domain(original.getDomain()) .path(original.getPath()) .isSecure(original.isSecure()) .build(); driver.manage().addCookie(updated);
Çerezlerle İlgili Sık Karşılaşılan Hatalar Selenium WebDriver ve Sorunları Nasıl Çözersiniz
Çerez kodları genellikle az sayıda ve tahmin edilebilir şekilde başarısız olur. Aşağıdaki tabloda en sık bildirilen hatalar, nedenleri ve çözümleri listelenmiştir.
| Semptom | Sebeb olmak | sabit |
|---|---|---|
| Geçersiz ÇerezAlanİstisnası | addCookie, siteye gitmeden önce çağrıldı, bu nedenle tarayıcı hala about:blank sayfasında. | Öncelikle hedef etki alanında driver.get'i çağırın, ardından çerezi ekleyin. |
| UnableToSetCookieException | Çerez alan adı, şu anda yüklenmiş olan sayfayla eşleşmiyor. | Alan adı alanını silin veya açılan sayfanın tam sunucu adresini girin. |
| Çerez eklendikten sonra bile giriş sayfası hala görünüyor. | Sayfa, çerez oluşturulmadan önce oluşturulmuştu. | Yukarıdaki NOT'ta "zorunlu yenileme" olarak belirtilen işlem, driver.navigate().refresh() çağrısıdır. |
| getCookieNamed null değer döndürüyor | İsim yanlış yazılmış veya çerez farklı bir yola veya alt alana ait. | getCookies fonksiyonu ile tüm çerezleri listeleyip isimlerini karşılaştırın. |
| Kaydedilen çerez daha sonraki çalıştırmada reddedilir. | Süre doldu veya sunucu oturumu sonlandırdı. | Cookies.data dosyasını yeniden oluşturmak için 1. adımı tekrar çalıştırın. |
Tarayıcı açılıp doğru şekilde kimlik doğrulaması yaptıktan sonra komut dosyası başarısız olursa, muhtemelen sorun çerezde değildir. Sorunu çözmek için şu adımları izleyin: istisna işleme Selenium Bu noktadan itibaren daha hızlı bir rota ve özel bir hat bulunmaktadır. Firefox profil Oturum verilerinin dosya olmadan da saklanmasını istediğinizde genellikle tercih edilen yöntem budur.


