Talep
Giriş için simülasyon talebi çok karmaşık olduğundan, giriş sonrası çerez değerini almak için Selenium kullanmak ve ardından web sitesinin ilgili arayüzünden testi otomatikleştirmek için çerez içeriğini taşımak istiyoruz.
Selenyum
Selenyum, web uygulama testi için bir araçtır. Selenyum testleri doğrudan tarayıcıda çalışır, sanki gerçek bir kullanıcı yapıyormuş gibi. Desteklenen tarayıcılar arasında IE (7, 8, 9, 10, 11), Mozilla Firefox, Safari, Google Chrome, Opera vb. bulunmaktadır. Bu aracın ana özellikleri şunlardır: Tarayıcı uyumluluk testi - uygulamanızı farklı tarayıcılar ve işletim sistemlerinde iyi çalışıp çalışmadığını test edin. Sistem işlevselliğini test etmek – Yazılım işlevselliğini ve kullanıcı gereksinimlerini doğrulamak için regresyon testleri oluşturun. Eylemlerin otomatik kaydını ve .Net, Java, Perl gibi farklı dillerde otomatik test betikleri oluşturulmasını destekler.
Öncelikle, "chrome-cookie-demo" proje adıyla yeni bir C# konsol projesi oluşturalım ve .NET framework sürümü 4.7.2.
Nuget komutu şöyledir:
Selenium.WebDriver.ChromeDriver yüklendikten sonra, proje hata ayıklama dizininde chromedriver.exe bir dosya oluşturulacaktır. Selenium.WebDriver, soyut bir arayüz olarak anlaşılır ve her tarayıcı bu arayüzü kendi başına uygular, Selenium.WebDriver Selenium.WebDriver.ChromeDriver(chromedriver.exe) adını çağırır chromedriver.exe elde edilen parametrelere göre yerel olarak yüklenmiş Google Chrome'u başlatır ve ilgili işlemi gerçekleştirir.
Elbette, bir ön koşul var,Bilgisayarda Google Chrome yüklü olmalı。
Kod şöyledir:
Hata şöyledir:
System.InvalidOperationException: session not created: This version of ChromeDriver only supports Chrome version 83
Bu, mevcut sürücünün Google Chrome'un 83 sürümünü desteklemediği anlamına gelir, makineye yüklü sürümü aşağıdaki şekilde kontrol edin:
(Sürüm 71.0.3578.98)
Yerel Google Chrome'unuzu yükseltip yeniden başlatmak sorunu çözer (veya gereksinimleri karşılayan tarayıcı sürümünü yükleyerek).
Chrome-cookie-demo projesini yeniden çalıştırmaya çalışıyoruz ve sitenin normal şekilde açılabileceğini fark ediyoruz, ama,Web sayfası giriş yapılmamıştır。 Bu siteyi açmak için tarayıcıya tıkladığınızda, durum giriş yapmış olur.
Çözüm, user-data-dir parametresini aşağıdaki kodla ayarlamaktır:
Programı yeniden başlattık ve şu hatayı alıyoruz:
Yönetilmeyen istisna: OpenQA.Selenium.WebDriverException: geçersiz argüman: kullanıcı veri dizini zaten kullanılıyor, lütfen --user-data-dir argümanı için benzersiz bir değer belirtin veya -- kullanmayın user-data-dir OpenQA.Selenium.Remote.RemoteWebDriver.UnpackAndThrowOnError(Response errorResponse) adresinde. at OpenQA.Selenium.Remote.RemoteWebDriver.Execute(String driverCommandToExecute, Dictionary'2 parameters) OpenQA.Selenium.Remote.RemoteWebDriver.StartSession(ICapabilitys desiredCapabilities) içinde OpenQA.Selenium.Remote.RemoteWebDriver içinde: ctor(ICommandExecutor komutExecutor, ICapabilitys desiredCapabilities) OpenQA.Selenium.Chrome.ChromeDriver içinde: ctor(ChromeDriverService servisi, ChromeOptions options, TimeSpan commandTimeout) OpenQA.Selenium.Chrome.ChromeDriver içinde: ctor(ChromeDriverService hizmeti, ChromeOptions seçenekleri) chrome_cookie_demo. Program.Main(String[] args) Konum C:\Users\itsvse_pc\source\repos\chrome-cookie-demo\chrome-cookie-demo\Program.cs: satır numarası 36 Kabaca olarak, klasör dolup taşandı, lütfen değiştirin, çözüm:Açık Google Chrome'unuzu kapatın ve yazdığımız "chrome-cookie-demo" programı için kullanıcı veri klasörünü kullanın。
Web çerezleri alın
driver.manage().getCookies(); Tüm Kurabiyelerin Listesini Geri Gönder driver.manage().getCookieNamed(arg0); İsme göre belirli bir kurabiyeni geri gönder driver.manage().addCookie(arg0); Kurabiyeni oluştur ve ekle driver.manage().deleteCookie(arg0); Belirli çerezleri sil driver.manage().deleteCookieNamed(arg0); İsme göre belirli çerezleri sil driver.manage().deleteAllCookies(); Tüm çerezleri sil Belge:Bağlantı girişi görünür.
Tüm web çerezlerini test ediyoruz
Keşif,"HttpOnly" çerez bilgilerini okuyabilirsiniz., aşağıdaki şekilde gösterildiği gibi:
Elbette, çerez bilgisini bir diziye dönüştürmemiz gerekiyor, ardından istek gönderme arayüzünü simüle edip dönüştürme yöntemini kaynak koddaki bir dizeye bağlamamız gerekiyor.
Kaynak kodu indirme:
Bağlantı girişi görünür.
(Son)
|