يعد وضع عنصر الصفحة أهم شيء في الأتمتة ، ويوفر Selenium WebDriver العديد من الطرق لتحديد المواقع. يجب أن يكون المختبرين ماهرون في طرق تحديد المواقع المختلفة. يتم استخدام طريقة تحديد المواقع الأسهل والأكثر استقرارًا.
قراءة المحتويات
خطوات الاختبار الآلية
أثناء الاختبار الآلي ، اختبر التشغيل المعتاد لعناصر الصفحة في البرنامج
1. ابحث عن عنصر صفحة الويب وقم بتعيينه إلى كائن تخزين (Webelement)
2. العمليات على الكائنات التي تخزن عناصر الصفحات ، مثل: انقر على الرابط ، وأدخل الأحرف في مربع الإدخال ، إلخ.
3. تحقق من أن العناصر الموجودة في الصفحة تلبي التوقعات
من خلال هذه الخطوات الثلاث ، يمكننا إكمال تشغيل عنصر الصفحة ، وإيجاد عنصر الصفحة خطوة مهمة للغاية. لا يمكن العثور على عنصر الصفحة ، ولا يمكن القيام به لاحقًا
يجعل التعقيد العملي لتكنولوجيا صفحات الويب من الصعب تحديد موقع عدد كبير من عناصر الصفحة. غالبًا ما لا يعرف الناس كيفية تحديد موقعه.
طريقة الموقع الكاملة
حدد عنصر صفحة الويب باستخدام وظيفة findelement لكائن WebDriver
استخدم وظيفة FindElements لتحديد عناصر متعددة للصفحة
يجب تخزين عناصر الصفحة المستهدفة باستخدام كائن WebElement للاستخدام اللاحق
الطرق الشائعة الاستخدام لتحديد عناصر الصفحة هي كما يلي ، مرتبة حسب التوصية
طريقة تحديد المواقع | مثال تنفيذ لغة جافا |
تحديد المواقع | driver.findElement (by.id ("قيمة المعرف")) ؛ |
تحديد المواقع | Driver.FindElement (بواسطة. name ("قيمة الاسم")) ؛ |
جميع وضع النصوص للروابط | driver.findElement (by.linkText ("All Text of the Link")) ؛ |
بعض المواقع النصية للروابط | driver.findElement (by.partialLinkText ("نص جزئي للرابط")) ؛ |
تحديد المواقع CSS | driver.findElement (by.cssselector ("CSS Expression")) ؛ |
مواقع xpath | driver.findElement (by.xpath ("xPath Expression")) ؛ |
تحديد موقع اسم الفصل | driver.findElement (by.className ("class stated")) ؛ |
اسم علامة TAGNAME استهداف | driver.findElement (by.tagname ("tagname")) ؛ |
طريقة jQuery | JS.Executescript ("return jquery.find (" jQuery Expression ")") |
كيفية تحديد موقع
عند استخدام selenium webdriver لتحديد موقع العناصر ، عادة ما يتم استخدام طريقة findelement أو findelement
تقوم طريقة findelement () بإرجاع عنصر. إذا لم يتم العثور عليها ، سيتم طرح استثناء.
تقوم طريقة FindElements () بإرجاع عناصر متعددة. إذا لم يتم العثور عليها ، فسيتم إرجاع صفيف فارغ ولن يتم إلقاء أي استثناء.
كيفية اختيار طريقة تحديد المواقع
تتمثل الإستراتيجية في اختيار طريقة تحديد موقع بسيطة ومستقرة.
1. عندما يكون لعنصر الصفحة سمة معرف ، حاول استخدام المعرف لتحديد موقعه. إذا لم يكن كذلك ، اختر طريقة تحديد موقع أخرى
2. ينفذ CSSSelector بسرعة ، موصى به
3. عند وضع الارتباطات التشعبية ، يمكنك النظر في LinkText أو PartialLinkText: ولكن تجدر الإشارة إلى أن النص غالبًا ما يتغير ، لذلك لا ينصح باستخدامه.
4. xpath لديه أقوى وظيفة. كانت سرعة التنفيذ بطيئة في ذلك الوقت ، لأنك بحاجة إلى العثور على DOM بأكمله ، لذا حاول استخدامه بأقل قدر ممكن. عندما لا يكون هناك أي وسيلة ، استخدم xpath
ابحث عن عناصر معرف: by.id ()
الطريقة الأكثر موصى بها لإيجاد عناصر من خلال معرف عناصر الصفحة. يوصي W3C Standard بأن يوفر المطورون سمات معرف فريدة لكل عنصر صفحة.
بمجرد إعطاء عنصر ما سمة معرف فريدة من نوعها ، يكون من السهل تحديد موقع العنصر عندما نقوم باختبار تلقائي. يتم استخدام معرف العنصر كسممة التعريف المفضلة لأنها أسرع استراتيجية تحديد الهوية.
أخذ صفحة Baidu الرئيسية كمثال ، فإن رمز عينة HTML لمربع البحث كما يلي ، معرفه هو KW
<type type = "text" autocomplete = "Off" maxLength = "100" id = "kw" name = "wd"
رمز عينة HTML لعنصر زر البحث "BAIDU" هو كما يلي ، معرفه هو su
<type type = "إرسال" id = "su" value = "baidu">
رمز عينة Java لإيجاد عناصر حسب المعرف في السيلينيوم/WebDriver هو كما يلي
WebDriver Driver = new Firefoxdriver () ؛ driver.get ("http://www.baidu.com") ؛ webelement searchbox = driver.findElement (by.id ("kw")) ؛ Searchbox.sendkeys ("Little Tank Blog Park") ؛ webelement searchbutton = driver.findElement (by.id ("su")) ؛ SearchButton.Submit () ؛ driver.close () ؛البحث عن عناصر بالاسم: by.name ()
أخذ مربع البحث في الصفحة الرئيسية لـ Douban.com كمثال ، فإن رمز HTML الخاص بمربع البحث الخاص به هو كما يلي ، اسمه هو: Q
<type type = "text" autocomplete = "Off" name = "q" placeholder = "الكتب والأفلام والموسيقى والمجموعات والمحطات والأعضاء" size = "12" maxLength = "60"
رمز Java في WebDriver للبحث عن مربعات البحث على الصفحة الرئيسية Douban من خلال الاسم كما يلي:
WebDriver Driver = new Firefoxdriver () ؛ driver.get ("http://www.douban.com") ؛ webelement searchbox = driver.findElement (by.name ("q")) ؛ Searchbox.sendkeys ("الخزان الصغير") ؛ searchbox.submit () ؛البحث عن عناصر من tagname: by.tagname ()
عند البحث عن عناصر من خلال tagname ، سيتم إرجاع عناصر متعددة. لذلك ، يلزم FindElements ().
WebDriver Driver = new Firefoxdriver () ؛ driver.get ("http://www.cnblogs.com") ؛ قائمة <Belement> buttons = driver.findElements (by.tagname ("div")) ؛ system.out.println ("button:" + buttons.size ()) ؛ملاحظة: إذا كنت تستخدم TagName ، فيجب أن تلاحظ أن اسم TagName للعديد من عناصر HTML هو نفسه.
على سبيل المثال ، مربع الراديو ، مربع الاختيار ، مربع النص ، مربع كلمة المرور. علامات العناصر هذه كلها مدخلات. في هذا الوقت ، لا يمكن لـ tagname وحده الحصول على العناصر التي نريدها بدقة. تحتاج أيضًا إلى الجمع بين سمة النوع لتصفية العناصر التي نريدها.
WebDriver Driver = new Firefoxdriver () ؛ driver.get ("http://www.cnblogs.com") ؛ قائمة <Belement> buttons = driver.findElements (by.tagname ("input")) ؛ لـ (webelement webelement: buttons) {if (webelement.getAttribute ("type"). equals ("text")) {system.out.println ("text text is:" + webelement.getText ()) ؛ }}ابحث عن عناصر من قبل className
أخذ البحث عن الصفحة الرئيسية من Taobao كمثال ، فإن رمز HTML الخاص بمربع البحث الخاص به هو كما يلي:
<input autoComplete = "Off" autofocus = "true" accessKey = "s" aria-label = "الرجاء إدخال نص البحث" name = "q" id = "q" aria-haspopup = "true"
رمز عينة Java كما يلي
WebDriver Driver = new Firefoxdriver () ؛ driver.get ("http://www.taobao.com") ؛ thread.sleep (15000) ؛ Webelement SearchBox = driver.findElement (بواسطة. Searchbox.sendkeys ("Down Jacket") ؛ searchbox.submit () ؛ ملاحظة: عند استخدام ClassName لتحديد العناصر ، ستواجه أحيانًا أ
البحث عن عناصر بواسطة LinkText by.linktext () ؛
عناصر الموضع مباشرة من خلال معلومات النص على الارتباط التشعبي: على سبيل المثال
<a href = "https://passport.baidu.com/v2/؟login&tpl=mn&u=http٪3a٪2f٪2fwww.baidu.com٪2f" name = "tj_login" onclick = "false ؛"> login </a>
رمز HTML كما يلي
WebDriver Driver = new Firefoxdriver () ؛ driver.get ("http://www.baidu.com") ؛ webelement loginLink = driver.findElement (by.linktext ("login")) ؛ loginlink.click () ؛البحث عن عناصر بواسطة partiallinktext ()
هذه الطريقة هي نسخة محسّنة من الطريقة السابقة. عندما تريد فقط مطابقة مع بعض الكلمات الرئيسية ، يمكنك استخدام هذه الطريقة لتحديد العناصر من خلال بعض نص الارتباط التشعبي.
رمز HTML كما يلي
WebDriver Driver = new Firefoxdriver () ؛ driver.get ("http://www.baidu.com") ؛ webelement loginLink = driver.findElement (by.partialLinkText ("log")) ؛ loginlink.click () ؛ملاحظة: عند استخدام هذه الطريقة لتحديد موقعها ، قد تكون المشكلة هي أنه عندما لا تعرف أن الارتباط التشعبي يحتوي على "إلخ". لن تُرجع طريقة FindElement إلا العنصر الأول الموجود ، ولن يعيد جميع العناصر التي تفي بالمعايير.
إذا كنت ترغب في الحصول على جميع العناصر التي تفي بالمعايير ، فيمكنك فقط استخدام طريقة FindElements.
ما سبق هو المعلومات حول تحديد موقع عنصر جافا السيلينيوم. سنستمر في إضافة المعلومات ذات الصلة في المستقبل. شكرا لك على دعمك!