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

ما هو نص الرابط في Selenium?
A ربط النص في Selenium يتم استخدامه لتحديد الارتباطات التشعبية الموجودة على صفحة الويب. يتم تحديده بمساعدة علامة الربط. لإنشاء الارتباطات التشعبية على صفحة ويب، يمكننا استخدام علامة ربط متبوعة بنص الارتباط.
الروابط المطابقة للمعيار
يمكن الوصول إلى الروابط باستخدام مطابقة تامة أو جزئية لنص الرابط الخاص بها. توفر الأمثلة أدناه سيناريوهات حيث قد توجد مطابقات متعددة وتشرح كيفية تعامل WebDriver معها.
في هذا البرنامج التعليمي، سوف نتعلم الطرق المتاحة للعثور على الروابط والوصول إليها باستخدام Webdriver. وسنناقش أيضًا بعض المشكلات الشائعة التي نواجهها أثناء الوصول إلى الروابط وسنناقش أيضًا كيفية حلها.
إكمال نص الرابط في Selenium – بواسطة.linkText()
يتم الوصول إلى الروابط باستخدام نص الرابط الدقيق الخاص بها من خلال طريقة By.linkText(). ومع ذلك، إذا كان هناك رابطان لهما نفس نص الرابط، فستتمكن هذه الطريقة من الوصول إلى الرابط الأول فقط. ضع في اعتبارك كود HTML أدناه
عندما تحاول تشغيل كود WebDriver أدناه، ستصل إلى الرابط الأول "انقر هنا".
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(); } }
هنا كيف يعمل-
ونتيجة لذلك، سيتم نقلك تلقائيًا إلى Google.
أكمل نص الرابط الجزئي في Selenium – بواسطة.partialLinkText ()
يتم الوصول إلى الروابط باستخدام جزء من نص الارتباط الخاص بها باستخدام بواسطة.partialLinkText() طريقة. إذا قمت بتحديد نص رابط جزئي يحتوي على عدة مطابقات، فسيتم الوصول إلى المطابق الأول فقط. ضع في اعتبارك كود HTML أدناه.
عند تنفيذ كود WebDriver أدناه، سيتم نقلك إلى Google.
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(); } }
كيفية الحصول على روابط متعددة بنفس نص الرابط
إذن، كيف يمكن التغلب على المشكلة المذكورة أعلاه؟ في الحالات التي توجد فيها روابط متعددة بنفس نص الرابط، ونريد الوصول إلى روابط أخرى غير الرابط الأول، كيف نفعل ذلك؟
في مثل هذه الحالات، بشكل عام، يتم استخدام محددات مختلفة مثل 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(); } }
يؤكد الإخراج أعلاه أنه تم الوصول إلى كلا الارتباطين بنجاح لأنه تم استرداد عناوين الصفحات الخاصة بهما بشكل صحيح.


.png)
.png)

.png)
.png)
.png)
.png)
.png)

.png)
.png)
.png)
.png)
.png)