Kullanarak Dosya Yükleme ve İndirme Selenium

⚡ Akıllı Özet

Dosya yükleme ve indirme işlemlerini kullanarak Selenium WebDriver iş akışları, giriş alanları için yerel sendKeys() işlevine, diyaloglar için AutoIt veya Robot'a ve CDP komutlarına dayanır. Selenium 4. Otomasyon çalıştırmaları sırasında güvenli indirme yollarını ayarlamak için.

  • 📤 Yükleme Yöntemi: Dosya giriş öğesinde `sendKeys()` işlevini kullanarak, Gözat'a tıklamadan dosyanın mutlak yolunu gönderebilirsiniz.
  • 📥 İndirme Yolu: ChromeOptions veya CDP Page.setDownloadBehavior aracılığıyla özel bir indirme dizini yapılandırın. Selenium 4.
  • 🪟 Yerel Diyaloglar: İşletim sistemi dosya seçici WebDriver'ın etkileşimini engellediğinde AutoIt komut dosyalarını veya java.awt.Robot'u tetikleyin.
  • 🤖 Yapay Zeka Yardımı: Üretken yapay zeka, seçiciler önerir, test veri dosyaları oluşturur ve indirilen dosya bütünlüğünü otomatik olarak doğrular.
  • 🛡️ Doğrulama Kontrolü: Yükleme işleminin başarılı olduğunu yanıt mesajları aracılığıyla onaylayın ve dosya boyutu veya sağlama toplamı karşılaştırması kullanarak indirmeleri doğrulayın.

Kullanarak Dosya Yükleme ve İndirme Selenium

WebDriver'da dosya yükleme işlemi, dosya seçme giriş alanında `sendKeys()` yöntemini kullanarak yüklenecek dosyanın yolunu girmek suretiyle kolayca yapılır. Bu eğitimde, WebDriver kullanarak dosya yükleme ve indirme işlemlerini nasıl gerçekleştireceğinizi öğreneceksiniz. Selenium WebDriver.

Dosya Nasıl Yüklenir? Selenium

Bu bölüm için kullanacağımız https://demo.guru99.com/test/upload/ test uygulamamız olarak. Bu site, herhangi bir ziyaretçinin kaydolmasına gerek kalmadan kolayca dosya yüklemesine olanak tanır.

Dosyayı Yükle Selenium
Dosya yükleme açılır penceresini yönet Selenium Web sürücüsü

Diyelim ki “C:\newhtml.html” dosyasını yüklemek istiyoruz. WebDriver kodumuz aşağıda gösterilen gibi olmalıdır.

paket yeni proje;
ithalat org.openqa.selenium.*;
ithalat org.openqa.selenium.firefox.FirefoxSürücü;
Kamusal sınıf PG9 {
genel statik boşluk ana(dizi[] argümanlar) {
Sistem.setProperty(“webdriver.gecko.driver”,“C:\\geckodriver.exe”);
dizi temel URL = “https://demo.guru99.com/test/upload/”;
Web Sürücüsü sürücü = yeni FirefoxSürücü();

sürücü.get(baseUrl);
WebElement uploadElement = driver.findElement(By.id(“yükle_0”));

// Dosya yolunu dosya seçme giriş alanına girin
uploadElement.sendKeys(“C:\\newhtml.html”);

// "Hizmet şartlarını kabul ediyorum" onay kutusunu işaretleyin
sürücü.findElement(By.id("şartlar")).tıklamak();

// "Dosya Yükle" düğmesine tıklayın
sürücü.findElement(By.name("Göndermek")).tıklamak();
}
}

Bu scripti çalıştırdıktan sonra dosyayı başarıyla yükleyebilmelisiniz ve buna benzer bir mesaj almalısınız.

Dosyayı Yükle Selenium

WebDriver'da dosya yüklerken şu iki şeyi unutmayın:

  1. “Gözat” düğmesine tıklama işlemini simüle etmeye gerek yoktur. WebDriver, dosya yolunu otomatik olarak dosya seçme metin kutusuna girer. element.
  2. Dosya yolunu ayarlarken Java IDE'de ters eğik çizgi için uygun kaçış karakterini kullanın.

Dosyayı Yükle Selenium

AutoIt ile Giriş Gerektirmeyen Yükleme Diyaloglarını Yönetme

Sayfa, yerleşik bir Gözat düğmesi yerine özel bir Gözat düğmesi kullandığında Eğer `sendKeys()` çalışmıyorsa, bu durumda `AutoIt` komut dosyasını çağırabilirsiniz. Selenium Dosya yolunu işletim sistemi iletişim kutusuna yazın ve Enter tuşuna basın.

Aşağıdaki betiği şu şekilde kaydedin: upload.au3onu derle yükleme.exedaha sonra onu şuradan çağırın: Java Gözat düğmesine tıkladıktan sonra.

; upload.au3 – Aç iletişim kutusunu bekler ve dosya yolunu yazar.
WinWaitActive("Açık")
Göndermek(“C:\newhtml.html”)
Göndermek("{GİRMEK}")

Başlangıç JavaGözat düğmesine tıkladıktan sonra yardımcı işlevi tetikleyin:

sürücü.findElement(By.id(“browseBtn”)).tıklamak();
Süre.getRuntime().exec(“C:\\AutoIt\\upload.exe”);

java.awt.Robot sınıfı tamamen saf bir sınıftır.Java AutoIt kullanılamadığında alternatif bir çözüm, ancak AutoIt daha güvenilir. Windows Çünkü başlığa göre diyalog açılmasını bekliyor.

Dosya Nasıl İndirilir Selenium Web sürücüsü

WebDriver'ın İndirme iletişim kutularına erişim yeteneği yok tarayıcılar tarafından bir indirme bağlantısına veya düğmesine tıkladığınızda sunulur. Ancak, "wget" adlı ayrı bir program kullanarak bu iletişim kutularını atlayabiliriz.

Wget nedir?

Wget, indirmeleri otomatikleştirmek için kullanılan küçük ve kullanımı kolay bir komut satırı programıdır. Temel olarak indirme işlemini gerçekleştirmek için Wget’e WebDriver betiğimizden erişeceğiz.

Wget'i ayarlama

) 1 Adım C Sürücünüzde yeni bir klasör oluşturun ve onu “Wget” olarak adlandırın.

Wget.exe'yi indirin buradan ve bunu yukarıdaki adımda oluşturduğunuz Wget klasörüne yerleştirin.

Wget'i ayarlama

) 2 Adım tuşuna basarak Çalıştır'ı açın Windows Klavye + “R” tuşlarına basın; “cmd” yazın ve Tamam'a tıklayın.

Wget'i ayarlama

Kök dizine geçmek için "cd /" komutunu yazın.

Wget'i ayarlama

) 3 Adım Verilen kurulumun çalışıp çalışmadığını kontrol etmek için komutu yazın.

cmd /c C:\\Wget\\wget.exe -PC: –no-check-certificate https://demo.guru99.com/selenium/msgr11us.exe

Wget'i ayarlama

C sürücüsüne yazmada bir sorun var gibi görünüyor.

) 4 Adım Kodu çalıştırmadan önce komut satırında wget hatalarını ayıklamanız gerekiyor. Selenium WebDriver. Bu hatalar devam edecektir. Eclipse ve hata mesajları o kadar bilgilendirici olmayacaktır. Öncelikle wget'i komut satırında çalışır hale getirmek en iyisidir. Komut satırında çalışıyorsa, kesinlikle çalışacaktır. Eclipse.

Örneğimizde, 3. adımda gösterildiği gibi, C sürücüsüne yazma işleminde bir sorun var. İndirme konumunu D sürücüsüne değiştirelim ve sonuçları kontrol edelim.

cmd /c C:\\Wget\\wget.exe -PD: –no-check-certificate https://demo.guru99.com/selenium/msgr11us.exe

Wget'i ayarlama

Messenger başarıyla indirildi.

Devam etmeden önce, indirdiğiniz dosyayı silmeyi unutmayın.

WebDriver ve Wget'i kullanma

Aşağıdaki örnekte, Yahoo adlı popüler bir sohbet yazılımını indirmek için WebDriver ve wget'i kullanacağız MessengerÜssümüz URL olmalı https://demo.guru99.com/test/yahoo.html.

WebDriver ve Wget'i kullanma

) 1 Adım Adım 4'te bir IOException yakalamamız gerekeceğinden “java.io.IOException” paketini içe aktarın.

WebDriver ve Wget'i kullanma

) 2 Adım İndirme bağlantısının "href" değerini almak ve bunu bir String değişkeni olarak kaydetmek için getAttribute() işlevini kullanın. Bu örnekte, değişkeni "sourceLocation" olarak adlandırdık.

WebDriver ve Wget'i kullanma

) 3 Adım Aşağıdaki komutu kullanarak wget için sözdizimini ayarlayın.

WebDriver ve Wget'i kullanma

) 4 Adım WebDriver kodumuzdan wget'i çağırarak indirme işlemini başlatın.

WebDriver ve Wget'i kullanma

Hepsini özetlemek gerekirse, WebDriver kodunuz aşağıda gösterilene benzeyebilir.

paket yeni proje;
ithalat java.io.IOİstisna;

ithalat org.openqa.selenium.*;
ithalat org.openqa.selenium.firefox.FirefoxSürücü;
Kamusal sınıf PG8 {
genel statik boşluk ana(dizi[] argümanlar) {

Sistem.setProperty(“webdriver.gecko.driver”,“C:\\geckodriver.exe”);
dizi temel URL = “https://demo.guru99.com/test/yahoo.html”;
Web Sürücüsü sürücü = yeni FirefoxSürücü();

sürücü.get(baseUrl);
WebElement indirmeButonu = sürücü.findElement(By.id(“messenger-download”));
dizi kaynakKonum = indirmeDüğmesi.özniteliğiAl(“href”);
dizi wget_komutu = “cmd /c C:\\Wget\\wget.exe -PD: –no-check-certificate “ + kaynakKonumu;

denemek {
Süreç exec = Runtime.getRuntime().exec(wget_command);
int çıkış değeri = exec.waitFor();
System.out.println(“Çıkış değeri: “ + çıkış değeri);
} yakalamak (Kesilen İstisna | IO İstisnası eski) {
System.out.println(ex.toString());
}
sürücü.kapat();
}
}

Bu kodu çalıştırdıktan sonra D sürücünüzü kontrol edin ve Yahoo'nun Messenger yükleyici oraya başarıyla indirildi.

WebDriver ve Wget'i kullanma

Özel İndirme Yolu Ayarlama Selenium 4 CDP

Selenium 4. adım, üçüncü taraf araçlara ihtiyaç duymadan tarayıcı indirme davranışını kontrol etmenizi sağlayan Chrome Geliştirici Araçları Protokolünü ortaya çıkarır. Aşağıdaki kod parçası, tüm indirmeleri özel bir klasöre yönlendirir ve "Farklı Kaydet" istemini atlar, böylece dosyalar testin beklediği yere kaydedilir.

ChromeSürücüsü sürücü = yeni ChromeSürücü();
Harita<dizi,nesne> parametreler = yeni HashMah<>();
parametreler.koy("davranış", "izin vermek");
parametreler.koy(“indirme yolu”, “D:\\selenium-indirmeleri”);
sürücü.executeCdpCommand(“Page.setDownloadBehavior”, parametreler);
sürücü.al(“https://demo.guru99.com/test/yahoo.html”);
sürücü.findElement(By.id(“messenger-download”)).tıklamak();

Hedef dizinde beklenen dosya adını sorgulayarak ve boyutunu kontrol ederek indirme işlemini doğrulayabilirsiniz; bu da testi harici komut dosyalarına gerek kalmadan kesin hale getirir.

SSS

Selenium sendKeys() işlevini çağırır Mutlak dosya yolunu içeren bir öğe. Tarayıcı alanı doğrudan doldurur, bu nedenle işletim sistemi dosya seçici açılmaz ve Gözat'a tıklamaya gerek kalmaz.

Sayfa dosya girişi seçeneği sunmuyorsa, AutoIt'i kullanın. Windows veya java.awt.Robot sınıfı. Bu araçlar, aktif işletim sistemi iletişim kutusuna yolu yazar ve Gözat düğmesine tıkladıktan sonra Enter tuşuna basar.

`executeCdpCommand(“Page.setDownloadBehavior”, params)` işlevini, `allow` davranışı ve `downloadPath` değeri klasörünüz olacak şekilde ayarlayarak çağırın. Selenium 4 numaralı seçenek, komutu Chrome Geliştirici Araçlarına iletir ve "Farklı Kaydet" istemi atlanır.

Evet. Yapay zeka asistanları yükleme formunuzu okur, seçiciler önerir, boş, aşırı büyük veya yanlış uzantılı örnekler gibi sınır dosyaları oluşturur ve sendKeys() bloğunu yazar. Bu, kurulum süresini kısaltır ve insan test uzmanlarının sıklıkla gözden kaçırdığı uç durumları ortaya çıkarır.

AI araçları Hedef klasörü sorgulayın, dosya boyutunu ve sağlama toplamını beklenen değerlerle karşılaştırın ve uyuşmazlıkları işaretleyin. Görsel modeller, PDF veya resimleri bile açabilir ve içeriğin bağlantı etiketiyle eşleştiğini doğrulayarak regresyon çalışmalarından manuel incelemeyi ortadan kaldırabilir.

Wget, tarayıcıyı tamamen atlayarak dosyayı doğrudan komut satırı işlemiyle diske kaydeder. Özellikle eski sistemlerde kullanışlıdır. Selenium CDP ve ChromeOptions indirme tercihlerinin kullanılamadığı 2 veya 3 kurulum.

Bu yazıyı şu şekilde özetleyin: