شنبه , ۸ اردیبهشت ۱۴۰۳

آموزش Selenium-قسمت هجدهم: نحوه آپلود و دانلود فایل با استفاده از Selenium Webdriver

Selenium
Selenium

در این آموزش، ما نحوه برخورد با آپلود و دانلود فایل را خواهیم آموخت.

آپلود کردن فایل‌ها

برای این بخش از اینجا به عنوان برنامه آزمون ما استفاده خواهیم کرد. این سایت به راحتی به هر بازدید کننده‌ای اجازه می‌دهد بدون نیاز به ثبت نام(Sign up)، فایل‌های خود را آپلود نمایند.

آپلود فایل‌ها در WebDriver به سادگی با استفاده از متد ()sendKeys بر روی فیلد ورودی File-Select انجام می‌شود تا بدین ترتیب مسیر برای آپلود فایل وارد نماید.

Selenium Figure 18-1
Selenium Figure 18-1

پوپاپ آپلود فایل را در 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();
        }
}

پس از اجرای این اسکریپت، شما بایستی قادر به بارگذاری موفقیت آمیز فایل بوده، و پیامی شبیه این را دریافت کنید.

Selenium Figure 18-2
Selenium Figure 18-2

هنگام آپلود فایل‌ها در WebDriver دو چیز را به خاطر داشته باشید:

۱٫ نیازی به شبیه‌سازی کلیک بر روی دکمه “Browse” وجود ندارد. WebDriver به طور خودکار مسیر فایل را بر روی Text Box فایل انتخابی از عنصر <“element type = “file> وارد می‌کند.
۲٫ هنگام تنظیم مسیر فایل در Java IDE خود، از Escape Character مناسب برای back-slash استفاده کنید.

Selenium Figure 18-3
Selenium Figure 18-3

دانلود فایل‌ها

WebDriver قادر به دسترسی به Dialog Boxهای دانلود که بوسیله مرورگر در زمان کلیک شما روی لینک یا دکمه دانلود نمایش داده می‌شوند، نیست. با این حال، ما می‌توانیم این Dialog Boxها را با استفاده از یک برنامه جداگانه به نام “wget” دور بزنیم.

Wget چیست؟

Wget یک برنامه خط فرمانی(Command Line) کوچک و سهل الاستفاده است که برای خودکارسازی دانلودها استفاده می‌شود. اساسا، ما از طریق Webdriver Script به Wget  دسترسی داریم تا بدین ترتیب فرآیند دانلود را انجام دهیم.

ستاپ کردن Wget

مرحله ۱: در C Drive خود، یک پوشه جدید ایجاد کنید و آن را به عنوان “Wget” نامگذاری کنید.

wget.exe را از اینجا دانلود کرده و آنرا در پوشه Wget که در مرحله بالا ایجاد کردید قرار دهید.

Selenium Figure 18-4
Selenium Figure 18-4

مرحله ۲: 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 باشد.

Selenium Figure 18-5
Selenium Figure 18-5

مرحله ۱: پکیج “java.io.IOException” را Import کنید. چرا که بعدا باید در مرحله ۴ یک IOException بدست آوریم.

Selenium Figure 18-6
Selenium Figure 18-6

گام ۲: از ()getAttribute برای بدست آوردن مقدار “href” لینک دانلود استفاده کنید و آن را به عنوان متغیر رشته‌ای ذخیره کنید. در این مورد، متغیر را به عنوان “sourceLocation” نامگذاری کردیم.

Selenium Figure 18-7
Selenium Figure 18-7

مرحله ۳: این سینتکس را با استفاده از خط فرمان زیر برای wget ستاپ کنید.

Selenium Figure 18-8
Selenium Figure 18-8

مرحله ۴: فرآیند دانلود را با فراخوانی wget از کد WebDriver خود شروع کنید.

Selenium Figure 18-9
Selenium Figure 18-9

به طور خلاصه، کد 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 با موفقیت در آنجا دانلود شده است.

Selenium Figure 18-10
Selenium Figure 18-10

خلاصه

  • آپلود فایل‌ها در WebDriver به سادگی با استفاده از متد ()sendKeys بر روی فیلد ورودی File-Select انجام می‌شود تا بدین ترتیب مسیر برای آپلود فایل وارد نماید.
  • WebDriver نمی‌تواند دانلود کردن فایل‌های را روی خود به صورت خودکار انجام دهد.
  • ساده‌ترین راه برای دانلود فایل‌ها با استفاده از WebDriver این است که از Wget استفاده کنید.

این یک آموزش طولانی مدت است. بنابراین قسمت‌های بعدی به محض آماده شدن علاوه بر اینکه در صفحه Home وبسایت اطلاعرسانی خواهد شد، به صورت دسته‌بندی شده از اینجا نیز در دسترس است.

ابوالفضل خواجه دیزجی

همچنین ببینید

Testcomplate

آموزش TestComplete-قسمت دهم: ساخت اولین تست وب اپلیکیشن(بخش اول)/مقدمه، Plan کردن تست و رکورد کردن تست‌ها

ساخت اولین تست وب اپلیکیشن نسبتا طولانیست، لذا طی چند قسمت تقدیم خوانندگان خواهد شد …

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *