عندما نستخدم السيلينيوم لمحاكاة تسجيل الدخول ، بعد الحصول على عنصر زر تسجيل الدخول ، يمكننا استدعاء طريقة Click () بشكل مباشر لتحقيق قفزة تسجيل الدخول ، ويشير WebDriver في هذا الوقت أيضًا إلى
هذا أمر جيد بالنسبة للصفحة الحالية ، ولكن تجدر الإشارة إلى أنه نظرًا لأن سرعة تحميل الصفحة أقل عمومًا من سرعة تشغيل البرنامج ، قبل الحصول على عناصر الصفحة بعد تسجيل الدخول ، يمكنك استخدام طريقة استخدام WebDriverwait ، أو يمكنك استخدام Thread.sleep () للسماح للبرنامج لفترة من الوقت (غير موصى به).
ولكن النقطة الرئيسية للمدونة هي أنه إذا أدخلنا الصفحة الجديدة من خلال النقر على الارتباط التشعبي العادي ، فلا يمكننا الحصول على عنصر الصفحة الجديد من خلال الطريقة أعلاه ، لأن WebDriver في هذا الوقت لا يزال يشير إلى الصفحة السابقة.
الحل: أولاً ، احصل على جميع مقابض النافذة ، ثم التكرار من خلال مجموعة المقبض هذه حتى يكون المقبض يختلف عن مقبض النافذة الحالية (CurrentHandle) ، وقم بنقل WebDriver السابق إلى الصفحة التي يشير إليها المقبض الجديد.
الرمز كما يلي:
String CurrentWindow = driver.getWindowHandle () ؛ // احصل على مقبض مجموعة النافذة الحالية <string> leadles = driver.getWindowHandles () ؛ // احصل على مقابض جميع Windows Iterator <string> it = almalles.iterator () ؛ WebDriver NewDriver = null ؛ بينما (it.hasnext ()) {String Handled = it.next () ؛ if (! handle.equals (currentWindow)) {driver = driver.switchto (). window (مقبض) ؛ // قم بالتبديل إلى استراحة النافذة التي أشار إليها المقبض الجديد ؛ }}إن الحل لفشل في الحصول على عناصر صفحة جديدة بناءً على السيلينيوم هو المحتوى الكامل المشترك من قبل المحرر. آمل أن يعطيك مرجعًا وآمل أن تتمكن من دعم wulin.com أكثر.