how upload file using selenium webdriver 3 methods
コード例を使用して、Seleniumでファイルのアップロードを処理するさまざまな方法を学びます。
ファイルのアップロードは、フォーム、登録ページ、ドキュメントアップローダーなど、特定のWebサイトにファイルまたはドキュメントをアップロードする必要がある場合に実行されます。
ファイルのアップロードプロセスには、目的の場所またはコンピューターからファイルを参照し、それをWebサイトにアップロードすることが含まれます。
=> ここですべてのSeleniumチュートリアルを確認してください
学習内容:
Seleniumアップロードファイル
Seleniumでファイルのアップロードを処理すると、人間の作業が簡単になり、を使用するだけで実行できます。 sendKeys() 方法。ファイルのアップロード後に、ファイルが正常にアップロードされているかどうかを確認するメッセージが表示されます。ファイルのアップロードには、このような自動化方法が他にもたくさんあります。
このチュートリアルで取り上げるトピックには、HTMLでのファイルのアップロード、Seleniumでのファイルのアップロードを処理するためのメソッド(つまり、sendKeysを使用してから、AutoITとRobotクラスを使用するメソッドが含まれます)が含まれます。
このチュートリアルでは、Seleniumでこれらのメソッドを使用してファイルのアップロードを処理するためのコードの実装についても説明します。その後、Seleniumを使用してファイルのアップロードを実行するいくつかの例を示します。
HTMLでのファイルのアップロード
以下のコード実装は、HTMLページでのファイルアップロード操作を説明しています。 HTMLコードは、最初にクリックしてアップロード操作を実行する方法を示しています。 ファイルを選ぶ ボタンをクリックしてアップロードするファイルを参照し、をクリックします ファイルをアップロードする オプションを選択すると、ファイルが正常にアップロードされたことがわかります。
上の画像はHTMLで作成されたページで構成されており、下の画像はそのHTMLコードです。 HTMLコードを簡単に見てみましょう。
File Upload File Uploading (Upload the image file)
Select file to upload:
したがって、クリックして目的のファイルをアップロードすると ファイルをアップロードする オプションを選択すると、以下のページ(画像)が表示され(つまり、アップロードされた画像ファイルが表示されます)、アップロードするように選択されたファイルが正常にアップロードされたことを確認します。
(画像 ソース )
Seleniumでファイルをアップロードする方法
ファイルのアップロードを処理するためのいくつかの方法と、そのためのコードの実装を見てみましょう。
Seleniumでのファイルのアップロードは、以下の方法で実行できます。
- sendKeysメソッドの使用
- AutoITツールの使用
- ロボットクラスの助けを借りて
#1)sendKeysメソッドを使用する
Seleniumでファイルをアップロードする最も基本的な方法は、sendKeysメソッドを使用することです。これは、Seleniumでファイルをアップロードするための組み込み機能です。
構文は次のとおりです。
WebElement upload_file = driver.findElement(By.xpath('//input(@id='file_up')')); upload_file.sendKeys('C:/Users/Sonali/Desktop/upload.png');
上記の手法のコード実装を理解しましょう。
この方法を使用してファイルをアップロードするには、最初にファイルアップロード用に提供された要素またはボタンを検査し、次にsendKeysを使用して、アップロードされる実際のファイルが保持されているパスを参照する必要があります。プログラムがファイルをフェッチするために言及されたパスにナビゲートされるように、sendKeysにファイル名と一緒にパスを配置します。
この後、保存または送信ボタンをクリックすると、ファイルがアップロードされたことが表示されます。また、ファイルが正常にアップロードされているというメッセージが表示されることもあります。
sendKeysメソッドを使用したコードの実装:
内部結合外部結合左結合右結合
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'); } }
したがって、sendKeysオプションを使用してファイルをアップロードするには、組み込みのsendKeysメソッドを使用して、必要なファイルを正常にアップロードする必要があります。
これは上記のコードの出力です( Monster.com )次のように表示されるメッセージを確認できます。 'ファイルが正常にアップロードされました' sendKeysメソッドを使用してSeleniumWebドライバーにファイルをアップロードする場合。
#2)AutoITの使用
AutoIT は、Windowsオペレーティングシステム用のフリーウェアおよびオープンソースの自動化ツールです。これは、MicrosoftWindowsユーザーインターフェイスを自動化するためのBASICスクリプトコンピューター言語で記述されています。キーストローク、マウスの動き、およびウィンドウコントロールの操作の任意の組み合わせをシミュレートします。
AutoITツールをダウンロードしてインストールする手順:
- 開いた リンク
- AUTOIT->ダウンロードに移動します。最新のAutoITをダウンロードしてください。
- AutoITのインストールとセットアップに進みます(次へ->同意-> 32/64ビットの選択->ファイルのインストール場所の選択->終了。
- 2つのセットアップファイルがあります:a) AutoItバージョン3 およびb) SciTE auto3。
- インストールが完了したら、AutoITエディターを開きます。
- セットアップファイルが保存されている場所に移動し、 「SciTE.exe」ファイルをクリックすると、AutoITエディターが開きます。 AutoITエディターについては以下のスクリーンショットをご覧ください。
AutoIT_Editor:
さて、簡単に理解しましょう このツールの使用方法:
- AutoITエディターを開きます。
- AutoITエディターでファイルのアップロード操作に必要な簡単なコードを書く必要があります(アップロードするファイルの名前はコードに記載されています)。
- エディターを閉じて右クリックすると、コンパイルスクリプトオプションが表示されます。 64ビットマシンの場合はコンパイルスクリプト(x64)オプションを選択し、32ビットマシンの場合はコンパイルスクリプト(x86)を選択します。
- 上記の手順が完了するとすぐに、.exeファイルが作成され、このファイルがSeleniumEclipseコードに記載されます。コンパイル後、下の画像を参照してください 「fileupload.exe」 ファイルが作成されます。これで、SeleniumWebドライバースクリプトでこのファイルを利用できます。
Saved_files:
以下の画像は、fileupload.exeファイルを実行するselenium eclipseスクリプトを実行することにより、アップロードされるファイルであるform.csvがどのようにアップロードされているかを理解するのに役立ちます。
>>これにアクセス ページ AutoITの詳細については。
携帯電話に最適なスパイウェアは何ですか
このチュートリアルの後半で、このメソッドの実装を確認します。
AutoITの利点:
- AutoITは私たちが支払う必要のないオープンソースツールです。
- 小さなスタンドアロンの実行可能ファイルは、AutoITを使用して作成できます。
- 簡単に記録または再生できるスクリプトをサポートします。
- コードを簡単にデバッグできます コンソール書き込みコマンド 。
- さまざまなGUIを作成するオプションがあり、ほとんどすべての基本的なWindowsコントロールを認識します。
- シンプルでユーザーフレンドリーです。
AutoITのデメリット:
- Windowsオペレーティングシステムでのみ動作します
- 基本的なコーディング原則の知識は必須であるため、専門家にとっては優れたツールであることがわかりますが、初心者にとっては少し複雑かもしれません。
- AutoITは今のところJavaサポートを利用できません。
- ユーザーは、事前定義されたさまざまなユーティリティ関数を使用しながら、個別のライブラリをインポートする必要があります。
それでは、AutoITを使用したファイルアップロードの実装コードに移りましょう。
ここでは、SeleniumでAutoITを使用してファイルのアップロードを処理する方法を説明します。このために、OrangeHRMWebサイトの例を考えてみましょう。
AutoITを使用してSeleniumでファイルアップロードを処理するためのコード実装:
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 } }
上記のコードに見られるように、次の行はAutoITの使用法を示しているため非常に重要です。
Runtime.getRuntime()。exec(“ C:\ Users \ Chait \ Desktop \ autoit \ fileupload.exe”);
ここに、
- ランタイム :スクリプトが実行されている環境とスクリプトがインターフェイスできるようにします。
- getRuntime(): これは、プロセスに関連付けられている現在のランタイムを取得するために使用されます。
- exec(): AutoITスクリプト(ここではfileupload.exe)を実行します。
プログラムがこの行を実行すると、以下に示すようにAutoITコードが実行されるfileupload.exeファイルを通過します。
ControlFocus('File Upload','','Edit1') ControlSetText('File Upload','','Edit1','C:UsersChaitDesktopautoitdata_file.csv') ControlClick('File Upload','','Button1')
ここに、
- ControlFocus: このメソッドは、入力フォーカスを「ファイル名」テキストボックスに設定します。
- ControlSetText: このメソッドは、ファイルのパスを定義します。 (ファイル名)テキストボックスにアップロードするファイル–そのパスがトレースされます。
- ControlClick: この方法は、ファイルアップローダーウィンドウの(開く)ボタンをクリックするために使用されます。
上記のコードの出力を以下に示します。
(画像 ソース )
#3)ロボットクラスの助けを借りて
私たちが知っているロボットは、いくつかのタスクの実行、キーボード機能、マウス機能の処理など、さまざまなアクティビティの管理に役立ちます。ここでは、アプリケーションのテスト中にキーボードとマウスを制御するのに役立つ特定の機能を理解します。 セレン 。
ロボットクラスを実装するためのKeyEventsまたはメソッド
Robotクラスの実装では、テストスクリプトを実行するためのメソッドがいくつかあります。
これらは以下に記載されています:
- KeyPress(): このメソッドは、任意のキーを押したいときに呼び出されます。
-
- 例: robot.keyPress(KeyEvent。 UK_ENTER );
- KeyRelease(): この方法は、押されたキーを離すために使用されます。
- 例: robot.keyRelease(KeyEvent。 UK_ENTER );
- MouseMove(): マウスポインタを「X」および「Y」座標上に移動する必要がある場合に使用されます。
- 例: robot.mouseMove( Coordinates.get.X() 、 Coordinates.get.Y() );
- MousePress(): このメソッドは、マウスの左ボタンを押したいときに呼び出されます。
- 例: robot.mousePress(InputEvent。 BUTTON_MASK );
- MouseRelease(): この方法は、押されたマウスボタンを離すために使用されます。
- 例: robot.mouseRelease(InputEvent。 BUTTON_DOWN_MASK );
ロボットクラスの利点
- ロボットクラスを使用したファイルのアップロードは簡単です。
- キーボードとマウスの機能を処理します。
- ポップアップの処理も可能です。
ロボットクラスのデメリット
- キーボードまたはマウスのイベントは、ウィンドウの現在のインスタンスでのみ機能します。
- ロボットイベントの実行中に、コードの実行が別のウィンドウに移動された場合、マウスまたはキーボードのイベントは前のウィンドウに残ります。
- 異なるウィンドウを切り替えるのは簡単ではありません。
ロボットクラスを使用したファイルアップロードのコードの実装:
このために、次の例を検討します。 Grammarly.com ウェブサイト。以下は、Robotクラスを使用してSeleniumでファイルのアップロードを処理するための実装コードです。
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); } }
上記のセレンコードの出力を以下に示します。
したがって、Robotクラスを使用してファイルをアップロードできます。ここでは、コピー、貼り付け、入力などのためのキー押下やキー解放などの入力イベントの使用を確認できます。
ファイルアップロードの例
Seleniumを使用して実行されるファイルアップロードの例をいくつか見てみましょう。
#1)Gmailアカウント
Gmailアカウントでは、誰かにメールを送信するときに、添付ファイル、つまりドキュメント、テキスト、csv、画像、PDFなどの任意の種類のファイルドキュメントを含めることができます。ここで、ファイルのアップロードがコンテキストに含まれます。
詳細については、ファイルアップロードのスクリーンショットの下を参照してください。
オープンソースコードレビューツールgit
#2)検証のためのドキュメントのアップロード
通常、登録ページまたはフォームの場合、確認のためにドキュメントをアップロードする必要があります。
詳細については、以下の画像を参照してください。
ID_Proof
Reg_form
証明検証、住所検証、教育証明などのさまざまな検証では、特定のドキュメントをアップロードする必要があります。
結論
したがって、このチュートリアルでは、HTMLページにファイルがアップロードされるのを見てきました。また、Seleniumでファイルのアップロードを処理するためのさまざまなメソッド(sendKeysの使用、AutoITの使用、Robotクラスの使用などのメソッドを含む)も確認しました。また、これらの各メソッドについてSeleniumでファイルのアップロードを処理するためのコードの実装を理解し、最後にいくつかの例を確認しました。
著者略歴 –この記事は、MITCOE、Pune、Professional Software Tester、およびContent Writerの資格のあるB.E.(コンピューター)であるSonaliSatputeによって書かれました。
推奨読書
- AutoITを使用してSeleniumでウィンドウポップアップを処理する方法
- Selenium WebDriverでラジオボタンを選択する方法は?
- 例を使用してSeleniumのチェックボックスを選択する方法
- Cucumber Seleniumチュートリアル:Cucumber Java SeleniumWebDriverの統合
- Selenium WebDriverの概要– Seleniumチュートリアル#8
- ChromeDriver Seleniumチュートリアル:ChromeでのSeleniumWebdriverテスト
- Javaを使用したSeleniumWebDriverのロボットクラス
- AutoItチュートリアル-AutoItのダウンロード、インストール、基本的なAutoItスクリプト