در این آموزش، ما نحوه برخورد با آپلود و دانلود فایل را خواهیم آموخت.
آپلود کردن فایلها
برای این بخش از اینجا به عنوان برنامه آزمون ما استفاده خواهیم کرد. این سایت به راحتی به هر بازدید کنندهای اجازه میدهد بدون نیاز به ثبت نام(Sign up)، فایلهای خود را آپلود نمایند.
آپلود فایلها در WebDriver به سادگی با استفاده از متد ()sendKeys بر روی فیلد ورودی File-Select انجام میشود تا بدین ترتیب مسیر برای آپلود فایل وارد نماید.
پوپاپ آپلود فایل را در Selenium Webdriver مدیریت نمایید
ما میخواهیم “C:\newhtml.html” را آپلود نماییم. کد Webdriver ما باید مانند آنچه باشد که در زیر ارائه شده است.
package newproject; import org.openqa.selenium.*; import org.openqa.selenium.firefox.FirefoxDriver; public class PG9 { public static void main(String[] args) { System.setProperty("webdriver.firefox.marionette","C:\\geckodriver.exe"); String baseUrl = "http://demo.guru99.com/test/upload/"; WebDriver driver = new FirefoxDriver(); driver.get(baseUrl); WebElement uploadElement = driver.findElement(By.id("uploadfile_0")); // enter the file path onto the file-selection input field uploadElement.sendKeys("C:\\newhtml.html"); // check the "I accept the terms of service" check box driver.findElement(By.id("terms")).click(); // click the "UploadFile" button driver.findElement(By.name("send")).click(); } }
پس از اجرای این اسکریپت، شما بایستی قادر به بارگذاری موفقیت آمیز فایل بوده، و پیامی شبیه این را دریافت کنید.
هنگام آپلود فایلها در WebDriver دو چیز را به خاطر داشته باشید:
۱٫ نیازی به شبیهسازی کلیک بر روی دکمه “Browse” وجود ندارد. WebDriver به طور خودکار مسیر فایل را بر روی Text Box فایل انتخابی از عنصر <“element type = “file> وارد میکند.
۲٫ هنگام تنظیم مسیر فایل در Java IDE خود، از Escape Character مناسب برای back-slash استفاده کنید.
دانلود فایلها
WebDriver قادر به دسترسی به Dialog Boxهای دانلود که بوسیله مرورگر در زمان کلیک شما روی لینک یا دکمه دانلود نمایش داده میشوند، نیست. با این حال، ما میتوانیم این Dialog Boxها را با استفاده از یک برنامه جداگانه به نام “wget” دور بزنیم.
Wget چیست؟
Wget یک برنامه خط فرمانی(Command Line) کوچک و سهل الاستفاده است که برای خودکارسازی دانلودها استفاده میشود. اساسا، ما از طریق Webdriver Script به Wget دسترسی داریم تا بدین ترتیب فرآیند دانلود را انجام دهیم.
ستاپ کردن Wget
مرحله ۱: در C Drive خود، یک پوشه جدید ایجاد کنید و آن را به عنوان “Wget” نامگذاری کنید.
wget.exe را از اینجا دانلود کرده و آنرا در پوشه Wget که در مرحله بالا ایجاد کردید قرار دهید.
مرحله ۲: Run ویندوز را با فشردن همزمان کلیدهای Windows+R باز کرده و “cmd” را تایپ کرده و “ok” را کلیک کنید(و یا به جای آن اینتر را بزنید).
دستور “/cd” را برای رفتن به دایرکتوری ریشه(Root Directory) تایپ کنید.
مرحله ۳: دستور را تایپ کنید تا بررسی کنید که آیا ستاپ مذبور کار میکند یا خیر؟
cmd /c C:\\Wget\\wget.exe -P C: –no-check-certificate http://demo.guru99.com/selenium/msgr11us.exe
به نظر میرسد یک مسئله در نوشتن روی درایو c وجود دارد.
مرحله ۴: قبل از اجرای کد با استفاده از Selenium Webdriver، باید خطاهای wget را در خط فرمان دیباگ کنید. این خطاها در Eclipse باقی خواهد ماند و البته محتوای اطلاع دهنده و یا آموزشی نیز ندارند. بهتر است برای اولین بار کار کردن wget را با استفاده از Command Line تجربه کنید. اگر در خط فرمان کار کند، قطعا در Eclipse هم کار خواهد کرد.
در مثال ما، همانطور که در مرحله ۳ نشان داده شده است، مشکلی در رابطه با نوشتن در درایو C وجود دارد. اجازه دهید به همین دلیل محل دانلود را به دیسک D تغییر داده و نتایج را بررسی میکنیم.
cmd /c C:\\Wget\\wget.exe -P D: –no-check-certificate http://demo.guru99.com/selenium/msgr11us.exe
مسنجر با موفقیت دانلود شد.
قبل از اینکه ادامه دهید فراموش نکنید فایل دانلود شده را حذف کنید
استفاده از WebDriver و Wget
در مثال زیر ما از WebDriver و wget برای دانلود یک نرم افزار چت محبوب به نام یاهو مسنجر استفاده خواهیم کرد. URL پایه ما باید http://demo.guru99.com/test/yahoo.html باشد.
مرحله ۱: پکیج “java.io.IOException” را Import کنید. چرا که بعدا باید در مرحله ۴ یک IOException بدست آوریم.
گام ۲: از ()getAttribute برای بدست آوردن مقدار “href” لینک دانلود استفاده کنید و آن را به عنوان متغیر رشتهای ذخیره کنید. در این مورد، متغیر را به عنوان “sourceLocation” نامگذاری کردیم.
مرحله ۳: این سینتکس را با استفاده از خط فرمان زیر برای wget ستاپ کنید.
مرحله ۴: فرآیند دانلود را با فراخوانی wget از کد WebDriver خود شروع کنید.
به طور خلاصه، کد WebDriver شما میتواند مانند آنچه در زیر نشان داده شده است باشد.
package newproject; import java.io.IOException; import org.openqa.selenium.*; import org.openqa.selenium.firefox.FirefoxDriver; public class PG8 { public static void main(String[] args) { System.setProperty("webdriver.firefox.marionette","C:\\geckodriver.exe"); String baseUrl = "http://demo.guru99.com/test/yahoo.html"; WebDriver driver = new FirefoxDriver(); driver.get(baseUrl); WebElement downloadButton = driver.findElement(By .id("messenger-download")); String sourceLocation = downloadButton.getAttribute("href"); String wget_command = "cmd /c C:\\Wget\\wget.exe -P D: --no-check-certificate " + sourceLocation; try { Process exec = Runtime.getRuntime().exec(wget_command); int exitVal = exec.waitFor(); System.out.println("Exit value: " + exitVal); } catch (InterruptedException | IOException ex) { System.out.println(ex.toString()); } driver.close(); } }
پس از اجرای این کد، درایو D خود را چک کنید و مطمئن شوید که Yahoo Messenger Installer با موفقیت در آنجا دانلود شده است.
خلاصه
- آپلود فایلها در WebDriver به سادگی با استفاده از متد ()sendKeys بر روی فیلد ورودی File-Select انجام میشود تا بدین ترتیب مسیر برای آپلود فایل وارد نماید.
- WebDriver نمیتواند دانلود کردن فایلهای را روی خود به صورت خودکار انجام دهد.
- سادهترین راه برای دانلود فایلها با استفاده از WebDriver این است که از Wget استفاده کنید.
این یک آموزش طولانی مدت است. بنابراین قسمتهای بعدی به محض آماده شدن علاوه بر اینکه در صفحه Home وبسایت اطلاعرسانی خواهد شد، به صورت دستهبندی شده از اینجا نیز در دسترس است.