permintaan
Karena permintaan simulasi untuk login terlalu rumit, kami ingin menggunakan Selenium untuk membuka Google Chrome untuk mendapatkan nilai cookie setelah login, dan kemudian membawa konten cookie untuk meminta antarmuka situs web yang relevan untuk mengotomatiskan pengujian.
Selenium
Selenium adalah alat untuk pengujian aplikasi web. Tes selenium berjalan langsung di browser, seolah-olah pengguna sungguhan yang melakukannya. Browser yang didukung termasuk IE (7, 8, 9, 10, 11), Mozilla Firefox, Safari, Google Chrome, Opera, dll. Fitur utama dari alat ini meliputi: Pengujian kompatibilitas browser - uji aplikasi Anda untuk melihat apakah aplikasi tersebut berfungsi dengan baik di browser dan sistem operasi yang berbeda. Fungsionalitas sistem pengujian – Buat pengujian regresi untuk memverifikasi fungsionalitas perangkat lunak dan persyaratan pengguna. Ini mendukung perekaman tindakan otomatis dan pembuatan otomatis skrip pengujian dalam berbagai bahasa seperti .Net, Java, Perl, dll.
Pertama, mari kita buat proyek konsol C# baru dengan nama proyek "chrome-cookie-demo" dan versi kerangka kerja .NET adalah 4.7.2.
Perintah nuget adalah sebagai berikut:
Setelah penginstalan Selenium.WebDriver.ChromeDriver, file chromedriver.exe akan dihasilkan di direktori debug proyek. Selenium.WebDriver dipahami sebagai antarmuka abstrak, dan kemudian setiap browser mengimplementasikan antarmuka ini dengan sendirinya, Selenium.WebDriver akan memanggil Selenium.WebDriver.ChromeDriver(chromedriver.exe), chromedriver.exe akan memulai Google Chrome yang diinstal secara native sesuai dengan parameter yang diperoleh, dan kemudian melakukan operasi yang sesuai.
Tentu saja, ada prasyarat,Komputer harus menginstal Google Chrome。
Kodenya adalah sebagai berikut:
Kesalahannya adalah sebagai berikut:
System.InvalidOperationException: session not created: This version of ChromeDriver only supports Chrome version 83
Artinya, driver saat ini tidak mendukung Google Chrome versi 83, periksa versi yang diinstal pada mesin sebagai berikut:
(Versi 71.0.3578.98)
Memutakhirkan Google Chrome asli Anda dan memulai ulang akan memperbaikinya (atau menginstal versi browser yang memenuhi persyaratan).
Kami mencoba menjalankan kembali proyek chrome-cookie-demo dan menemukan bahwa situs dapat dibuka secara normal, tetapi,Halaman web tidak masuk。 Saat Anda mengklik browser untuk membuka situs ini, statusnya masuk.
Solusinya adalah dengan mengatur parameter user-data-dir dengan kode berikut:
Kami memulai ulang program dan mendapatkan kesalahan berikut:
Pengecualian yang tidak ditangani: OpenQA.Selenium.WebDriverException: argumen tidak valid: direktori data pengguna sudah digunakan, harap tentukan nilai unik untuk argumen --user-data-dir, atau jangan gunakan -- pengarah data-pengguna di OpenQA.Selenium.Remote.RemoteWebDriver.UnpackAndThrowOnError(Response errorResponse) di OpenQA.Selenium.Remote.RemoteWebDriver.Execute(String driverCommandToExecute, Dictionary'2 parameter) Di OpenQA.Selenium.Remote.RemoteWebDriver.StartSession(ICapabilities desiredCapabilities) Di OpenQA.Selenium.Remote.RemoteWebDriver: ctor(ICommandExecutor commandExecutor, ICapabilities desiredCapabilities) Di OpenQA.Selenium.Chrome.ChromeDriver: ctor(Layanan ChromeDriverService, opsi ChromeOptions, perintah TimeSpanTimeout) Di OpenQA.Selenium.Chrome.ChromeDriver: ctor(Layanan ChromeDriverService, opsi ChromeOptions) Dalam chrome_cookie_demo. Program.Main(String[] args) Lokasi C:\Users\itsvse_pc\source\repos\chrome-cookie-demo\chrome-cookie-demo\Program.cs: nomor baris 36 Secara kasar, folder telah ditempati, silakan ganti, solusinya:Tutup Google Chrome Anda yang terbuka dan gunakan folder data pengguna untuk program "chrome-cookie-demo" yang kami tulis。
Dapatkan cookie web
driver.manage().getCookies(); Kembalikan Daftar Semua Cookie driver.manage().getCookieNamed(arg0); Mengembalikan cookie tertentu sesuai dengan nama driver.manage().addCookie(arg0); Buat dan tambahkan cookie driver.manage().deleteCookie(arg0); Menghapus cookie tertentu driver.manage().deleteCookieNamed(arg0); Hapus cookie tertentu sesuai dengan Nama driver.manage().deleteAllCookies(); Hapus semua cookie Dokumentasi:Login hyperlink terlihat.
Kami menguji untuk mendapatkan semua cookie web
Penemuan,Anda dapat membaca informasi cookie "HttpOnly", seperti yang ditunjukkan pada gambar di bawah ini:
Tentu saja, kita perlu mengubah informasi cookie menjadi string, dan kemudian mensimulasikan antarmuka pengiriman permintaan, dan melampirkan metode mengonversinya menjadi string dalam kode sumber.
Unduhan kode sumber:
Login hyperlink terlihat.
(Akhir)
|