نص الرابط ونص الرابط الجزئي في Selenium

⚡ ملخص ذكي

نص الرابط ونص الرابط الجزئي في Selenium يُستخدم هذا الأسلوب لتحديد مواقع الروابط التشعبية على صفحة الويب من خلال نص الرابط. يطابق الأسلوب By.linkText() النص الكامل، بينما يطابق الأسلوب By.partialLinkText() جزءًا منه، وكلا الأسلوبين حساسان لحالة الأحرف ويعيدان أول تطابق.

  • 🔗 تعريف نص الرابط: يحدد الروابط التشعبية على الصفحة من خلال نص الرابط المرئي.
  • 🎯 By.linkText(): يطابق نص الرابط تمامًا ويعيد أول نتيجة مطابقة.
  • 🔎 By.partialLinkText(): يطابق جزءًا من نص الرابط، ويعيد أيضًا أول نتيجة مطابقة.
  • 🔠 حساسية الموضوع: كلا الموقعين يتعاملان مع الأحرف الكبيرة على أنها مهمة، لذلك يختلف "egis" و "EGIS".
  • 🧱 روابط متعددة/روابط حظر: بالنسبة للعناصر المكررة، استخدم xpath أو cssSelector؛ تعمل كلتا الطريقتين داخل أو خارج علامات الكتلة.

نص الرابط ونص الرابط الجزئي في Selenium

ما هو نص الرابط في Selenium?

A ربط النص في Selenium يتم استخدامه لتحديد الارتباطات التشعبية الموجودة على صفحة الويب. يتم تحديده بمساعدة علامة الربط. لإنشاء الارتباطات التشعبية على صفحة ويب، يمكننا استخدام علامة ربط متبوعة بنص الارتباط.

الروابط المطابقة للمعيار

يمكن الوصول إلى الروابط باستخدام مطابقة تامة أو جزئية لنص الرابط الخاص بها. توفر الأمثلة أدناه سيناريوهات حيث قد توجد مطابقات متعددة وتشرح كيفية تعامل WebDriver معها.

في هذا البرنامج التعليمي، سوف نتعلم الطرق المتاحة للعثور على الروابط والوصول إليها باستخدام Webdriver. وسنناقش أيضًا بعض المشكلات الشائعة التي نواجهها أثناء الوصول إلى الروابط وسنناقش أيضًا كيفية حلها.

إكمال نص الرابط في Selenium – بواسطة.linkText()

يتم الوصول إلى الروابط باستخدام نص الرابط الدقيق الخاص بها من خلال طريقة By.linkText(). ومع ذلك، إذا كان هناك رابطان لهما نفس نص الرابط، فستتمكن هذه الطريقة من الوصول إلى الرابط الأول فقط. ضع في اعتبارك كود HTML أدناه

ربط النص في Selenium-By.LinkText ()

ربط النص في Selenium-By.LinkText ()

عندما تحاول تشغيل كود WebDriver أدناه، ستصل إلى الرابط الأول "انقر هنا".

ربط النص في Selenium-By.LinkText ()

Code:

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;

public class MyClass {

    public static void main(String[] args) {
        String baseUrl = "https://demo.guru99.com/test/link.html";
        System.setProperty("webdriver.chrome.driver","G:\\chromedriver.exe");
        WebDriver driver = new ChromeDriver();

        driver.get(baseUrl);
        driver.findElement(By.linkText("click here")).click();
        System.out.println("title of page is: " + driver.getTitle());
        driver.quit();
    }

}

هنا كيف يعمل-

ربط النص في Selenium-By.LinkText ()

ونتيجة لذلك، سيتم نقلك تلقائيًا إلى Google.

ربط النص في Selenium-By.LinkText ()

أكمل نص الرابط الجزئي في Selenium – بواسطة.partialLinkText ()

يتم الوصول إلى الروابط باستخدام جزء من نص الارتباط الخاص بها باستخدام بواسطة.partialLinkText() طريقة. إذا قمت بتحديد نص رابط جزئي يحتوي على عدة مطابقات، فسيتم الوصول إلى المطابق الأول فقط. ضع في اعتبارك كود HTML أدناه.

نص الارتباط الجزئي في Selenium – بواسطة.partialLinkText ()

 نص الارتباط الجزئي في Selenium – بواسطة.partialLinkText ()

عند تنفيذ كود WebDriver أدناه، سيتم نقلك إلى Google.

 نص الارتباط الجزئي في Selenium – بواسطة.partialLinkText ()

Code:

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;

public class P1 {

    public static void main(String[] args) {
        String baseUrl = "https://demo.guru99.com/test/accessing-link.html";
        System.setProperty("webdriver.chrome.driver","G:\\chromedriver.exe");
        WebDriver driver = new ChromeDriver();

        driver.get(baseUrl);
        driver.findElement(By.partialLinkText("here")).click();
        System.out.println("Title of page is: " + driver.getTitle());
        driver.quit();
    }
}

نص الارتباط الجزئي في Selenium – بواسطة.partialLinkText ()

كيفية الحصول على روابط متعددة بنفس نص الرابط

إذن، كيف يمكن التغلب على المشكلة المذكورة أعلاه؟ في الحالات التي توجد فيها روابط متعددة بنفس نص الرابط، ونريد الوصول إلى روابط أخرى غير الرابط الأول، كيف نفعل ذلك؟

في مثل هذه الحالات، بشكل عام، يتم استخدام محددات مختلفة مثل By.xpath() أو By.cssSelector() أو By.tagName().

الطريقة الأكثر استخدامًا هي By.xpath(). وهي الطريقة الأكثر موثوقية ولكنها تبدو معقدة وغير قابلة للقراءة أيضًا.

حساسية حالة الأحرف لنص الارتباط

حساسية حالة الأحرف لنص الارتباط

معلمات بواسطة.linkText() و بواسطة.partialLinkText() كلاهما حساس لحالة الأحرف، مما يعني أن الكتابة بالأحرف الكبيرة مهمة. على سبيل المثال، في Mercury الصفحة الرئيسية للجولات، هناك رابطان يحتويان على النص "egis" - أحدهما هو رابط "التسجيل" الموجود في القائمة العلوية، والآخر هو رابط "التسجيل هنا" الموجود في الجزء الأيمن السفلي من الصفحة.

حساسية حالة الأحرف لنص الارتباط

على الرغم من احتواء كلا الرابطين على سلسلة الأحرف "egis"، فإنّ الدالة "By.partialLinkText()" ستتعامل مع هذين الرابطين بشكل منفصل بناءً على حالة الأحرف (كبيرة أو صغيرة). انظر إلى نموذج الكود أدناه.

حساسية حالة الأحرف لنص الارتباط

Code

public static void main(String[] args) {
        String baseUrl = "https://demo.guru99.com/test/newtours/";
        System.setProperty("webdriver.chrome.driver","G:\\chromedriver.exe");
        WebDriver driver = new ChromeDriver();

        driver.get(baseUrl);
        String theLinkText = driver.findElement(By
                .partialLinkText("egis"))
                .getText();
        System.out.println(theLinkText);
        theLinkText = driver.findElement(By
                .partialLinkText("EGIS"))
                .getText();
        System.out.println(theLinkText);

        driver.quit();

    }

الروابط خارج وداخل الكتلة

يسمح أحدث معايير HTML5 بوضع العلامات داخل وخارج العلامات على مستوى الكتلة مثل أو أو . يمكن للطرق "By.linkText()" و"By.partialLinkText()" الوصول إلى رابط موجود خارج وداخل هذه العناصر على مستوى الكتلة. ضع في اعتبارك كود HTML أدناه.

الروابط خارج وداخل الكتلة

الروابط خارج وداخل الكتلة

يصل رمز WebDriver أدناه إلى كلا الارتباطين باستخدام طريقة By.partialLinkText().

الروابط خارج وداخل الكتلة

Code:

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;

public class MyClass {

    public static void main(String[] args) {
        String baseUrl = "https://demo.guru99.com/test/block.html";
        System.setProperty("webdriver.chrome.driver","G:\\chromedriver.exe");
        WebDriver driver = new ChromeDriver();

        driver.get(baseUrl);
        driver.findElement(By.partialLinkText("Inside")).click();
        System.out.println(driver.getTitle());
        driver.navigate().back();
        driver.findElement(By.partialLinkText("Outside")).click();
        System.out.println(driver.getTitle());
        driver.quit();
    }
}

يؤكد الإخراج أعلاه أنه تم الوصول إلى كلا الارتباطين بنجاح لأنه تم استرداد عناوين الصفحات الخاصة بهما بشكل صحيح.

الأسئلة الشائعة

تُطابق الدالة By.linkText() النص المرئي الكامل للرابط، بينما تُطابق الدالة By.partialLinkText() أي رابط يحتوي على سلسلة فرعية مُحددة. تُعيد كلتا الدالتين أول رابط مُطابق فقط في حال وجود عدة روابط مُطابقة.

نعم. كلتا الدالتين By.linkText() و By.partialLinkText() حساسيتان لحالة الأحرف، لذا فإنّ حالة الأحرف مهمة. يُعامل النص "egis" و "EGIS" كقيمتين مختلفتين، ويمكن أن يرتبطا بروابط مختلفة على نفس الصفحة.

لأن محددات نص الرابط لا تُرجع سوى أول تطابق، استخدم By.xpath() أو By.cssSelector() لاستهداف رابط معين، أو استخدم findElements() مع By.tagName(“a”) لجمع جميع الروابط واختيار الرابط الذي تحتاجه.

تحلل أدوات الذكاء الاصطناعي بنية DOM وتصنف السمات حسب استقرارها لاقتراح محددات XPath أو CSS قوية. وهي تفضل المعرفات الفريدة والأقل عرضة للمشاكل، مما يقلل من حالات الفشل الناتجة عن تغييرات طفيفة في واجهة المستخدم أثناء تنفيذ الاختبار.

نعم. تستخدم أطر اختبار الإصلاح الذاتي الذكاء الاصطناعي لاكتشاف فشل محدد الموقع، ثم تقييم العناصر القريبة حسب التشابه، والتبديل تلقائيًا إلى أقرب تطابق، مع الحفاظ علىping يتم تشغيل الاختبارات مع تقليل الصيانة اليدوية.

تلخيص هذه التدوينة بـ: