كيفية رفع وتنزيل ملف باستخدام Selenium برنامج تشغيل الويب
رفع الملف في السيلينيوم
يتم تحميل الملفات في WebDriver ببساطة عن طريق استخدام طريقة sendKeys() في حقل إدخال تحديد الملف لإدخال المسار إلى الملف المراد تحميله.
في هذا البرنامج التعليمي، سوف نتعلم كيفية التعامل مع تحميل الملفات وتنزيلها.
كيفية رفع الملف في Selenium
في هذا القسم سوف نستخدم https://demo.guru99.com/test/upload/ كما تطبيق الاختبار لدينا. يسمح هذا الموقع بسهولة لأي زائر بتحميل الملفات دون الحاجة إلى التسجيل.
لنفترض أننا نرغب في تحميل الملف "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.gecko.driver","C:\\geckodriver.exe"); String baseUrl = "https://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
- لا توجد حاجة لمحاكاة النقر على زر "استعراض". يقوم WebDriver تلقائيًا بإدخال مسار الملف في مربع نص اختيار الملف في عنصر
- عند تحديد مسار الملف في ملف Java IDE، استخدم حرف الهروب المناسب للشرطة المائلة الخلفية.
كيفية تنزيل ملف في Selenium برنامج تشغيل الويب
لا يتوفر لدى WebDriver القدرة على الوصول إلى مربعات حوار التنزيل يتم عرضها بواسطة المتصفحات عند النقر فوق رابط أو زر تنزيل. ومع ذلك، يمكننا تجاوز مربعات الحوار هذه باستخدام برنامج منفصل يسمى "wget".
ما هو وجت؟
Wget هو برنامج سطر أوامر صغير وسهل الاستخدام يستخدم لأتمتة التنزيلات. في الأساس، سوف نقوم بالوصول إلى Wget من برنامج WebDriver النصي الخاص بنا لإجراء عملية التنزيل.
إعداد Wget
الخطوة 1) في محرك الأقراص C، قم بإنشاء مجلد جديد وقم بتسميته باسم "Wget".
تحميل wget.exe من هنا وضعه في مجلد Wget الذي قمت بإنشائه من الخطوة أعلاه.
الخطوة 2) افتح Run بالضغط على مفتاح Windows + "R" ؛ اكتب "cmd" وانقر فوق "موافق"
اكتب الأمر "cd /" للانتقال إلى الدليل الجذر
الخطوة 3) اكتب الأمر للتحقق مما إذا كان الإعداد المحدد يعمل أم لا
cmd /c C:\\Wget\\wget.exe -P C: --no-check-certificate https://demo.guru99.com/selenium/msgr11us.exe
يبدو أن هناك مشكلة في الكتابة على محرك الأقراص C.
الخطوة 4) تحتاج إلى تصحيح أخطاء wget في سطر الأوامر قبل تنفيذ التعليمات البرمجية باستخدام Selenium برنامج تشغيل الويب. ستستمر هذه الأخطاء Eclipse ولن تكون رسائل الخطأ مفيدة. من الأفضل أن تجعل wget يعمل أولاً باستخدام سطر الأوامر. إذا نجح الأمر في سطر الأوامر، فسوف يعمل بالتأكيد في Eclipse.
في مثالنا، كما هو موضح في الخطوة 3، توجد مشكلة في الكتابة على محرك الأقراص C. دعنا نغير موقع التنزيل إلى محرك الأقراص D ونتحقق من النتائج.
cmd /c C:\\Wget\\wget.exe -P D: --no-check-certificate https://demo.guru99.com/selenium/msgr11us.exe
Messenger تم تحميله بنجاح.
قبل المتابعة، لا تنس حذف الملف الذي تم تنزيله
باستخدام WebDriver وWget
في المثال التالي، سنستخدم WebDriver وwget لتنزيل برنامج دردشة شهير يسمى Yahoo Messenger. يجب أن يكون عنوان URL الأساسي الخاص بنا هو https://demo.guru99.com/test/yahoo.html.
الخطوة 1) قم باستيراد الحزمة "java.io.IOException" لأنه سيتعين علينا التقاط IOException لاحقًا في الخطوة 4.
الخطوة 2) استخدم getAttribute() للحصول على قيمة "href" لارتباط التنزيل وحفظها كمتغير سلسلة. في هذه الحالة، قمنا بتسمية المتغير باسم "sourceLocation".
الخطوة 3) قم بإعداد بناء الجملة لـ wget باستخدام الأمر التالي.
الخطوة 4) ابدأ عملية التنزيل عن طريق الاتصال بـ 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.gecko.driver","C:\\geckodriver.exe"); String baseUrl = "https://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 تم تنزيل برنامج التثبيت هناك بنجاح.
الملخص
- يتم تحميل الملفات في WebDriver ببساطة عن طريق استخدام طريقة sendKeys() في حقل إدخال تحديد الملف لإدخال المسار إلى الملف المراد تحميله.
- لا يستطيع WebDriver أتمتة تنزيل الملفات من تلقاء نفسه.
- أسهل طريقة لتنزيل الملفات باستخدام WebDriver هي استخدام Wget.