how upload file using selenium webdriver 3 methods
Poznaj różne metody obsługi przesyłania plików w Selenium z przykładami kodu:
Przesyłanie plików odbywa się, gdy istnieje potrzeba załadowania dowolnego pliku lub dokumentu na określonej stronie internetowej, takiej jak formularze, strony rejestracyjne, programy do przesyłania dokumentów itp.
Proces przesyłania pliku obejmuje przeglądanie pliku z wybranej lokalizacji lub z komputera i przesyłanie go do witryny internetowej.
=> Sprawdź WSZYSTKIE samouczki dotyczące Selenium tutaj
Czego się nauczysz:
Plik przesyłania selenu
Przekazywanie przesyłania plików w Selenium może ułatwić pracę człowieka i można to zrobić po prostu za pomocą rozszerzenia sendKeys () metoda. Po przesłaniu pliku zostanie wyświetlony komunikat potwierdzający, czy plik został pomyślnie przesłany. Istnieje wiele innych metod automatyzacji przesyłania plików.
Tematy poruszane w tym samouczku obejmują przesyłanie plików w HTML, metody obsługi przesyłania plików w Selenium (które obejmowałyby metody: użycie sendKeys, a następnie użycie klasy AutoIT i Robot).
W tym samouczku wyjaśniono również implementację kodu do obsługi przesyłania plików przy użyciu tych metod w Selenium, po czym zobaczymy kilka przykładów, w których przesyłanie plików odbywa się za pomocą Selenium.
Przesyłanie plików w formacie HTML
Poniższa implementacja kodu wyjaśnia operację przesyłania plików na stronę HTML. Kod HTML pokazuje, jak można wykonać operację przesyłania, klikając najpierw plik Wybierz plik aby przejrzeć plik do przesłania, a następnie kliknij Przesyłanie pliku opcja, po której możemy zobaczyć, że plik został pomyślnie przesłany.
Powyższy obraz składa się z utworzonej strony HTML, a poniżej jest kod HTML dla tego samego. Rzućmy okiem na kod HTML.
File Upload File Uploading (Upload the image file)
Select file to upload:
Tak więc po przesłaniu żądanego pliku, klikając Przesyłanie pliku opcja, zostanie wyświetlona poniższa strona (obraz) (czyli przesłany plik obrazu), który potwierdza, że plik wybrany do przesłania został pomyślnie przesłany.
(wizerunek źródło )
Metody przesyłania plików w selenium
Zobaczmy kilka metod obsługi przesyłania plików, a także implementację kodu dla tego samego.
Przesyłanie plików do Selenium można wykonać za pomocą poniższych metod:
- Korzystanie z metody sendKeys
- Korzystanie z narzędzia AutoIT
- Z pomocą Robot Class
# 1) Za pomocą metody sendKeys
Najbardziej podstawowym sposobem przesyłania plików w Selenium jest użycie metody sendKeys. Jest to wbudowana funkcja przesyłania plików w Selenium.
Składnia jest następująca:
WebElement upload_file = driver.findElement(By.xpath('//input(@id='file_up')')); upload_file.sendKeys('C:/Users/Sonali/Desktop/upload.png');
Zrozummy implementację kodu dla powyższej techniki:
Aby załadować pliki tą metodą, najpierw musimy sprawdzić element lub przycisk przeznaczony do załadowania pliku, a następnie za pomocą sendKeys przejrzeć ścieżkę, w której przechowywany jest właściwy plik do przesłania. Umieść ścieżkę wraz z nazwą pliku w sendKeys, aby program został przeniesiony do wspomnianej ścieżki w celu pobrania pliku.
Następnie kliknij przycisk Zapisz lub prześlij, a plik zostanie załadowany. Czasami otrzymujemy również komunikat, że plik jest przesyłany pomyślnie.
Implementacja kodu za pomocą metody sendKeys:
jaki jest cykl życia oprogramowania?
package SeleniumPrograms; import java.io.IOException; import org.openqa.selenium.By; import org.openqa.selenium.JavascriptExecutor; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; import org.openqa.selenium.firefox.FirefoxDriver; public class FileUpload { public static void main(String() args) throws IOException, InterruptedException { // TODO Auto-generated method stub WebDriver d = new FirefoxDriver(); d.manage().window().maximize(); //always write wait code after this d.manage().timeouts().pageLoadTimeout(10, TimeUnit.SECONDS); //for page load d.get('https://www.monsterindia.com/seeker/registration'); //Testing webpage d.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS); //for Implicit wait JavascriptExecutor js = (JavascriptExecutor)d; //Scrolling using JavascriptExecutor js.executeScript('window.scrollBy(0,380)');//Scroll Down to file upload button (+ve) Thread.sleep(3000); // FILE UPLOADING USING SENDKEYS .... WebElement browse = d.findElement(By.xpath('//input(@id='file-upload')')); //click on ‘Choose file’ to upload the desired file browse.sendKeys('C:\Users\Chait\Desktop\Files\Job Specification.txt'); //Uploading the file using sendKeys System.out.println('File is Uploaded Successfully'); } }
Tak więc, aby przesłać pliki za pomocą opcji sendKeys, musimy po prostu użyć wbudowanej metody sendKeys, aby pomyślnie przesłać wymagany plik.
To jest wynik powyższego kodu (dla Monster.com ) gdzie możemy zobaczyć komunikat wyświetlany jako: „Plik został przesłany pomyślnie” o wgraniu pliku w sterowniku selenium webowym metodą sendKeys.
# 2) Korzystanie z AutoIT
AutoIT jest darmowym i otwartym narzędziem do automatyzacji dla systemu operacyjnego Windows. Został napisany w podstawowym języku skryptowym do automatyzacji interfejsu użytkownika Microsoft Windows. Symuluje dowolną kombinację naciśnięć klawiszy, ruchów myszy i manipulacji kontrolkami okien.
Kroki, aby pobrać i zainstalować narzędzie AutoIT:
- otwarty połączyć
- Idź do AUTOIT -> DOWNLOADS. Pobierz najnowszą wersję AutoIT.
- Kontynuuj instalację i konfigurację AutoIT (dalej -> zgadzam się -> wybór 32/64 bit -> wybór lokalizacji instalacji pliku -> Zakończ.
- Istnieją 2 pliki instalacyjne: a) AutoIt wersja 3 oraz b) SciTE auto 3.
- Po zakończeniu instalacji otwórz edytor AutoIT.
- Przejdź do lokalizacji, w której są zapisane pliki instalacyjne, kliknij plik „SciTE.exe”, a otworzy się edytor AutoIT. Zobacz poniższy zrzut ekranu dla edytora AutoIT.
AutoIT_Editor:
Teraz zrozummy w skrócie jak korzystać z tego narzędzia:
- Otwórz edytor AutoIT.
- Musimy napisać prosty kod w edytorze AutoIT, wymagany do operacji wczytywania pliku (nazwa wgrywanego pliku będzie podana w kodzie).
- Teraz zamknij edytor i kliknij go prawym przyciskiem myszy, zobaczysz opcję skryptu kompilacji. Wybierz opcję kompilacji skryptu (x64) dla maszyny 64-bitowej i przejdź do skryptu kompilacji (x86) dla maszyny 32-bitowej.
- Po zakończeniu powyższego kroku tworzony jest plik .exe i plik ten zostanie wymieniony w naszym kodzie zaćmienia selenu. Po kompilacji, jak widać na poniższym obrazku „Fileupload.exe” plik zostanie utworzony. Teraz możemy wykorzystać ten plik w skrypcie sterownika sieciowego Selenium.
Saved_files:
Poniższy obraz pomaga nam zrozumieć, w jaki sposób przesyłany jest plik form.csv, uruchamiając skrypt selenium eclipse, który uruchamia plik fileupload.exe.
>> Odwiedź to strona aby uzyskać więcej informacji na temat AutoIT.
Implementację tej metody zobaczymy w dalszej części tego samouczka.
Zalety AutoIT:
- AutoIT to narzędzie typu open source, za które nie musimy płacić.
- Małe samodzielne pliki wykonywalne można tworzyć za pomocą funkcji AutoIT.
- Obsługuje łatwe do nagrywania lub odtwarzania skryptów.
- Możemy łatwo debugować kod za pomocą polecenie zapisu konsoli .
- Ma opcję tworzenia różnych GUI i rozpoznaje prawie wszystkie podstawowe elementy sterujące systemu Windows.
- Jest prosty i przyjazny dla użytkownika.
Wady AutoIT:
- Działa tylko w systemie operacyjnym Windows
- Ponieważ znajomość podstawowych zasad kodowania jest koniecznością, okazuje się być świetnym narzędziem dla profesjonalistów, ale może być nieco skomplikowana dla początkujących.
- Jak dotąd AutoIT nie obsługuje języka Java.
- Użytkownicy muszą importować oddzielne biblioteki, korzystając z różnych predefiniowanych funkcji narzędziowych.
Teraz przejdźmy do kodu implementacji przesyłania plików przy użyciu AutoIT:
Tutaj zobaczymy, jak możemy obsłużyć przesyłanie plików za pomocą AutoIT w Selenium. W tym celu rozważmy przykład witryny OrangeHRM.
Implementacja kodu do obsługi przesyłania plików w Selenium za pomocą AutoIT:
package SeleniumPrograms; import java.io.IOException; import org.openqa.selenium.By; import org.openqa.selenium.JavascriptExecutor; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; import org.openqa.selenium.firefox.FirefoxDriver; public class FileUpload { public static void main(String() args) throws IOException, InterruptedException { // TODO Auto-generated method stub WebDriver d = new FirefoxDriver(); d.manage().window().maximize(); d.manage().timeouts().pageLoadTimeout(10, TimeUnit.SECONDS); // for page load d.get(“https://opensource-demo.orangehrmlive.com/“); // Testing webpage d.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS); // for Implicit wait WebElement uname = d.findElement(By.id('txtUsername')); // Username.........ID uname.sendKeys('Admin'); WebElement pwd = d.findElement(By.name('txtPassword')); // Password.........NAME pwd.sendKeys('admin123'); WebElement loginb = d.findElement(By.xpath('//input(@id='btnLogin')')); loginb.click(); // Loginbutton......XPATH WebElement pim = d.findElement(By.id('menu_pim_viewPimModule')); pim.click(); // Admin tab-PIM WebElement config = d.findElement(By.id('menu_pim_Configuration')); config.click(); //Configuration tab WebElement data_imp = d.findElement(By.partialLinkText('Data ')); data_imp.click(); //Data Import tab.....PARTIALLINKT // UPLOADING FILE USING AutoIT.... WebElement browser = d.findElement(By.xpath('//input(@id='pimCsvImport_csvFile')')); //Browse button browser.click(); System.out.println(“1”); Runtime.getRuntime().exec('C:\Users\Chait\Desktop\autoit\fileupload.exe'); System.out.println('2'); Thread.sleep(3000); WebElement upload = d.findElement(By.id('btnSave')); //Upload button upload.click(); System.out.println('3'); System.out.println('File Uploaded Successfully'); // Confirmation message } }
Jak widać na powyższym kodzie, poniższa linia jest bardzo ważna, ponieważ pokazuje użycie AutoIT:
Runtime.getRuntime (). Exec („C: \ Users \ Chait \ Desktop \ autoit \ fileupload.exe”);
Tutaj,
- Runtime : Umożliwia skryptowi współpracę ze środowiskiem, w którym skrypt jest uruchomiony.
- getRuntime (): Służy do pobierania aktualnego środowiska uruchomieniowego związanego z procesem.
- exec (): Wykonuje skrypt AutoIT (tutaj jest to fileupload.exe).
Gdy program wykonuje tę linię, przechodzi przez plik fileupload.exe, w którym wykonywany jest kod AutoIT, jak pokazano poniżej:
ControlFocus('File Upload','','Edit1') ControlSetText('File Upload','','Edit1','C:UsersChaitDesktopautoitdata_file.csv') ControlClick('File Upload','','Button1')
Tutaj,
- ControlFocus: Ta metoda ustawia fokus wejściowy na pole tekstowe „nazwa pliku”.
- ControlSetText: Ta metoda definiuje ścieżkę do pliku. Plik, który będziemy przesyłać w polu tekstowym „nazwa pliku” - śledzona jest jego ścieżka.
- ControlClick: Ta metoda jest używana do kliknięcia przycisku „Otwórz” w oknie programu do przesyłania plików.
Dane wyjściowe dla powyższego kodu pokazano poniżej:
brama domyślna nie jest stale dostępna
(wizerunek źródło )
# 3) Z pomocą klasy robota
Roboty, jakie znamy, pomagają w zarządzaniu różnymi czynnościami, takimi jak wykonywanie niektórych zadań, obsługa funkcji klawiatury, funkcje myszy i wiele innych. Tutaj zrozumiemy pewne funkcje, które są pomocne w sterowaniu klawiaturą i myszą podczas testowania aplikacji Selen .
KeyEvents lub Methods do implementacji klasy Robot
czym jest weryfikacja i walidacja w testowaniu oprogramowania
W implementacji klasy Robot istnieje kilka metod wykonywania skryptów testowych.
Są one wymienione poniżej:
- KeyPress (): Ta metoda jest wywoływana, gdy chcemy nacisnąć dowolny klawisz.
-
- Przykład: robot.keyPress (KeyEvent. UK_ENTER );
- KeyRelease (): Ta metoda służy do zwolnienia naciśniętego klawisza.
- Przykład: robot.keyRelease (KeyEvent. UK_ENTER );
- MouseMove (): Używane, gdy zachodzi potrzeba przesunięcia wskaźnika myszy nad współrzędnymi „X” i „Y”.
- Przykład: robot.mouseMove ( koordynates.get.X () , koordynates.get.Y () );
- MousePress (): Ta metoda jest wywoływana, gdy chcemy nacisnąć lewy przycisk myszy.
- Przykład: robot.mousePress (InputEvent. BUTTON_MASK );
- MouseRelease (): Ta metoda służy do zwolnienia naciśniętego przycisku myszy.
- Przykład: robot.mouseRelease (InputEvent. BUTTON_DOWN_MASK );
Zalety klasy robotów
- Przesyłanie plików za pomocą klasy robota jest łatwe.
- Obsługuje funkcje klawiatury i myszy.
- Obsługa wyskakujących okienek jest również możliwa.
Wady klasy robotów
- Zdarzenie klawiatury lub myszy działałoby tylko w bieżącej instancji okna.
- Podczas wykonywania zdarzenia robota, jeśli wykonanie kodu zostanie przeniesione do innego okna, zdarzenie myszy lub klawiatury nadal pozostaje w poprzednim oknie.
- Przełączanie się między różnymi oknami nie jest łatwe.
Implementacja kodu do przesyłania plików za pomocą Robot Class:
W tym celu rozważymy przykład Grammarly.com stronie internetowej. Poniżej znajduje się kod implementacji do obsługi przesyłania plików w Selenium przy użyciu klasy Robot.
package SeleniumPrograms; import java.awt.AWTException; import java.awt.Toolkit; import java.awt.datatransfer.StringSelection; import java.util.concurrent.TimeUnit; import java.awt.Robot; import org.openqa.selenium.By; import org.openqa.selenium.JavascriptExecutor; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; import org.openqa.selenium.firefox.FirefoxDriver; import com.sun.glass.events.KeyEvent; public class FileUpload_Robo { public static void main(String() args) throws InterruptedException, AWTException { // TODO Auto-generated method stub WebDriver drv = new FirefoxDriver(); // starting Firefox browser drv.manage().window().maximize(); // maximizing window drv.manage().timeouts().pageLoadTimeout(10, TimeUnit. SECONDS);//for page load drv.get('https://www.grammarly.com/plagiarism-checker');//open testing website drv.manage().timeouts().implicitlyWait(10, TimeUnit. SECONDS);// for Implicit wait JavascriptExecutor js = (JavascriptExecutor)drv; // Scroll operation using Js Executor js.executeScript('window.scrollBy(0,200)'); // Scroll Down(+ve) upto browse option Thread.sleep(2000); // suspending execution for specified time period WebElement browse = drv.findElement(By.linkText('Upload a file')); // using linkText, to click on browse element browse.click(); // Click on browse option on the webpage Thread.sleep(2000); // suspending execution for specified time period // creating object of Robot class Robot rb = new Robot(); // copying File path to Clipboard StringSelection str = new StringSelection('C:\Users\Chait\Desktop\File upload.docx'); Toolkit.getDefaultToolkit().getSystemClipboard().setContents(str, null); // press Contol+V for pasting rb.keyPress(KeyEvent.VK_CONTROL); rb.keyPress(KeyEvent.VK_V); // release Contol+V for pasting rb.keyRelease(KeyEvent.VK_CONTROL); rb.keyRelease(KeyEvent.VK_V); // for pressing and releasing Enter rb.keyPress(KeyEvent.VK_ENTER); rb.keyRelease(KeyEvent.VK_ENTER); } }
Wynik dla powyższego kodu selenu pokazano poniżej:
W ten sposób pliki można przesyłać za pomocą klasy Robot, w której możemy zobaczyć użycie zdarzeń wejściowych, takich jak naciśnięcie klawisza i zwolnienie klawisza do kopiowania, wklejania, wprowadzania itp.
Przykłady przesyłania plików
Zobaczmy kilka przykładów przesyłania plików, które są wykonywane za pomocą Selenium:
# 1) Konto Gmail
Na koncie Gmail, wysyłając do kogoś wiadomość e-mail, możesz dołączyć załącznik, tj. Dokument w postaci pliku, który może być dowolnego typu: dokument, tekst, csv, obraz, pdf itp. W tym kontekście przesyłanie plików ma znaczenie.
Aby uzyskać więcej informacji, zobacz poniżej zrzut ekranu przesyłania pliku.
# 2) Przesyłanie dokumentów do weryfikacji
Zwykle w przypadku stron lub formularzy rejestracyjnych musimy przesłać dokumenty do weryfikacji.
Zobacz poniższy obraz, aby uzyskać więcej wyjaśnień:
ID_Proof
Reg_form
W przypadku różnych takich weryfikacji, takich jak weryfikacja dowodu, weryfikacja adresu, dowód wykształcenia itp. Należy przesłać określone dokumenty.
Wniosek
Dlatego w tym samouczku widzieliśmy przesyłanie plików na stronie HTML. Widzieliśmy również różne metody obsługi przesyłania plików w Selenium (w tym metody takie jak użycie sendKeys, użycie AutoIT i użycie klasy Robot). Zrozumieliśmy również implementację kodu obsługującego przesyłanie plików w Selenium dla każdej z tych metod i ostatecznie przyjrzeliśmy się kilku przykładom.
Autor Bio - Ten artykuł został napisany przez Sonali Satpute, dyplomowanego licencjata (komputer) z MITCOE, Pune, profesjonalnego testera oprogramowania i autora treści.
=> Przeczytaj cały przewodnik po selenium
rekomendowane lektury
- Jak obsługiwać okna wyskakujące w programie Selenium za pomocą AutoIT
- Jak wybrać przyciski radiowe w Selenium WebDriver?
- Jak wybrać pole wyboru w selenie z przykładami
- Cucumber Selenium Tutorial: Cucumber Java Selenium Integracja WebDriver
- Wprowadzenie do Selenium WebDriver - samouczek Selenium # 8
- Samouczek Selenium ChromeDriver: Testy Selenium Webdriver w przeglądarce Chrome
- Klasa Robot w Selenium WebDriver z Javą
- Samouczek AutoIt - pobieranie, instalacja i podstawowy skrypt AutoIt