كيفية رفع وتنزيل ملف باستخدام Selenium
⚡ ملخص ذكي
قم بتحميل وتنزيل الملف باستخدام Selenium تعتمد عمليات سير عمل WebDriver على وظيفة sendKeys() الأصلية لحقول الإدخال، وAutoIt أو Robot للحوارات، وأوامر CDP في Selenium 4- تحديد مسارات التنزيل الآمنة أثناء عمليات التشغيل الآلي.

يتم تحميل الملفات في WebDriver ببساطة عن طريق استخدام دالة sendKeys() في حقل إدخال اختيار الملف لإدخال مسار الملف المراد تحميله. في هذا الدرس، ستتعلم كيفية التعامل مع عمليات تحميل وتنزيل الملفات باستخدام Selenium برنامج تشغيل الويب.
كيفية رفع الملف في Selenium
في هذا القسم سوف نستخدم https://demo.guru99.com/test/upload/ كما تطبيق الاختبار لدينا. يسمح هذا الموقع بسهولة لأي زائر بتحميل الملفات دون الحاجة إلى التسجيل.

لنفترض أننا نرغب في تحميل الملف "C:\newhtml.html". يجب أن يكون رمز WebDriver الخاص بنا مثل الرمز الموضح أدناه.
استيراد org.openqa.selenium.*;
استيراد org.openqa.selenium.firefox.Firefoxالسائقين؛
الطبقة العامة PG9 {
الفراغ الساكن العام رئيسي(خيط[] args) {
System.setProperty("webdriver.gecko.driver","C:\\geckodriver.exe");
خيط baseUrl = "https://demo.guru99.com/test/upload/";
ويب درايفر السائق = جديد Firefoxالسائق();
driver.get(baseUrl);
عنصر الويب uploadElement = driver.findElement(By.id("uploadfile_0"))؛
// أدخل مسار الملف في حقل إدخال اختيار الملف
uploadElement.sendKeys("C:\\newhtml.html");
// ضع علامة في مربع "أوافق على شروط الخدمة"
driver.findElement(By.id("مصلحات")).click();
// انقر على زر "تحميل الملف"
driver.findElement(By.name("يرسل")).click();
}
}
بعد تشغيل هذا البرنامج النصي، يجب أن تكون قادرًا على تحميل الملف بنجاح ويجب أن تحصل على رسالة مشابهة لهذه.
تذكر الأمرين التاليين عند تحميل الملفات في WebDriver:
- لا حاجة لمحاكاة النقر على زر "استعراض". يقوم WebDriver تلقائيًا بإدخال مسار الملف في مربع نص اختيار الملف الخاص بـ عنصر.
- عند تحديد مسار الملف في ملف Java IDE، استخدم حرف الهروب المناسب للشرطة المائلة الخلفية.
التعامل مع مربعات حوار التحميل غير المدخلة باستخدام AutoIt
عندما تستخدم الصفحة زر تصفح مخصص بدلاً من زر أصلي لا تعمل الدالة sendKeys() في العنصر. في هذه الحالة، يمكنك استدعاء برنامج AutoIt النصي من Selenium اكتب مسار الملف في مربع حوار نظام التشغيل واضغط على مفتاح الإدخال (Enter).
احفظ البرنامج النصي أدناه باسم upload.au3قم بتجميعها إلى تحميل.exeثم استدعه من Java بعد النقر على زر التصفح.
WinWaitActive("افتح")
يرسل("C:\newhtml.html")
يرسل("{يدخل}")
من Javaقم بتشغيل المساعد بعد النقر على زر التصفح:
وقت التشغيل.getRuntime().exec("C:\\AutoIt\\upload.exe");
فئة java.awt.Robot هي فئة نقية-Java بديل عند عدم توفر AutoIt، على الرغم من أن AutoIt أكثر موثوقية على Windows لأنه ينتظر ظهور الحوار من خلال العنوان.
كيفية تنزيل ملف في Selenium برنامج تشغيل الويب
لا يتوفر لدى WebDriver القدرة على الوصول إلى مربعات حوار التنزيل يتم عرضها بواسطة المتصفحات عند النقر فوق رابط أو زر تنزيل. ومع ذلك، يمكننا تجاوز مربعات الحوار هذه باستخدام برنامج منفصل يسمى "wget".
ما هو وجت؟
Wget هو برنامج سطر أوامر صغير وسهل الاستخدام يستخدم لأتمتة التنزيلات. في الأساس، سوف نقوم بالوصول إلى Wget من برنامج WebDriver النصي الخاص بنا لإجراء عملية التنزيل.
إعداد Wget
الخطوة 1) في محرك الأقراص C، قم بإنشاء مجلد جديد وقم بتسميته باسم "Wget".
تحميل wget.exe من هنا ثم ضعه في مجلد Wget الذي أنشأته في الخطوة السابقة.
الخطوة 2) افتح برنامج التشغيل بالضغط على Windows مفتاح + "R"؛ اكتب "cmd" وانقر فوق موافق.
اكتب الأمر "cd /" للانتقال إلى الدليل الجذر.
الخطوة 3) اكتب الأمر للتحقق مما إذا كان الإعداد المحدد يعمل.
يبدو أن هناك مشكلة في الكتابة على محرك الأقراص C.
الخطوة 4) يجب عليك تصحيح أخطاء wget في سطر الأوامر قبل تنفيذ الكود باستخدام Selenium WebDriver. ستستمر هذه الأخطاء في Eclipse ولن تكون رسائل الخطأ مفيدة بالقدر الكافي. من الأفضل تشغيل wget أولاً باستخدام سطر الأوامر. إذا نجح الأمر في سطر الأوامر، فسيعمل بالتأكيد في Eclipse.
في مثالنا، كما هو موضح في الخطوة 3، توجد مشكلة في الكتابة إلى محرك الأقراص C. لنغير موقع التنزيل إلى محرك الأقراص D ونتحقق من النتائج.
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 الخاص بك كما هو موضح أدناه.
استيراد java.io.IOException ؛
استيراد org.openqa.selenium.*;
استيراد org.openqa.selenium.firefox.Firefoxالسائقين؛
الطبقة العامة PG8 {
الفراغ الساكن العام رئيسي(خيط[] args) {
System.setProperty("webdriver.gecko.driver","C:\\geckodriver.exe");
خيط baseUrl = "https://demo.guru99.com/test/yahoo.html";
ويب درايفر السائق = جديد Firefoxالسائق();
driver.get(baseUrl);
عنصر الويب downloadButton = driver.findElement(By.id("تنزيل الرسائل"))؛
خيط sourceLocation = downloadButton.getAttribute("href");
خيط أمر wget = "cmd /c C:\\Wget\\wget.exe -PD: –no-check-certificate " + موقع المصدر؛
محاولة {
طريقة عملنا exec = Runtime.getRuntime().exec(wget_command);
مادبا exitVal = exec.waitFor();
System.out.println ("قيمة الخروج: " + exitVal)؛
} قبض (InterruptException | IOEException السابق) {
System.out.println(ex.toString());
}
driver.close();
}
}
بعد تنفيذ هذا الرمز، تحقق من محرك الأقراص D الخاص بك وتأكد من أن ملف Yahoo Messenger تم تنزيل برنامج التثبيت هناك بنجاح.
تحديد مسار تنزيل مخصص باستخدام Selenium 4 CDP
Selenium يُتيح الإصدار 4 بروتوكول أدوات مطوري Chrome، مما يسمح لك بالتحكم في سلوك تنزيل المتصفح دون الحاجة إلى أدوات خارجية. يُشير المقتطف البرمجي أدناه إلى جميع التنزيلات في مجلد مُخصص ويتجاوز مطالبة "حفظ باسم"، بحيث يتم حفظ الملفات في المكان الذي يتوقعه الاختبار.
خريطة<خيط,هدف> المعلمات = جديد HashMap<>();
params.put("سلوك", "السماح");
params.put("downloadPath", "D:\\selenium-downloads");
driver.executeCdpCommand("Page.setDownloadBehavior"، المعاملات)؛
driver.get("https://demo.guru99.com/test/yahoo.html");
driver.findElement(By.id("تنزيل الرسائل")).click();
يمكنك التحقق من التنزيل عن طريق استطلاع الدليل المستهدف بحثًا عن اسم الملف المتوقع والتحقق من حجمه، مما يجعل الاختبار حتميًا دون الحاجة إلى برامج نصية خارجية.












