ข้อความลิงก์และข้อความลิงก์บางส่วนใน Selenium
⚡ สรุปอย่างชาญฉลาด
ข้อความลิงก์และข้อความลิงก์บางส่วนใน Selenium ค้นหาไฮเปอร์ลิงก์บนหน้าเว็บโดยใช้ข้อความแองเคอร์ เมธอด By.linkText() จะจับคู่ข้อความที่ตรงกันทุกประการ ในขณะที่ By.partialLinkText() จะจับคู่ส่วนหนึ่งของข้อความ และทั้งสองวิธีนี้จะคำนึงถึงตัวพิมพ์ใหญ่เล็กและจะส่งคืนผลลัพธ์แรกที่ตรงกัน

ข้อความในลิงก์คืออะไร Selenium?
A ลิงก์ข้อความเข้า Selenium ใช้เพื่อระบุไฮเปอร์ลิงก์บนหน้าเว็บ ถูกกำหนดโดยใช้แท็กจุดยึด สำหรับการสร้างไฮเปอร์ลิงก์บนหน้าเว็บ เราสามารถใช้แท็กจุดยึดตามด้วยข้อความลิงก์
ลิงค์ที่ตรงกับเกณฑ์
สามารถเข้าถึงลิงก์ได้โดยใช้ข้อความลิงก์ที่ตรงกันทุกประการหรือบางส่วน ตัวอย่างด้านล่างแสดงสถานการณ์ที่อาจมีรายการที่ตรงกันหลายรายการ และจะอธิบายว่า WebDriver จะจัดการกับสิ่งเหล่านั้นอย่างไร
ในบทช่วยสอนนี้ เราจะเรียนรู้วิธีที่ใช้ได้ในการค้นหาและเข้าถึงลิงก์โดยใช้ Webdriver นอกจากนี้ เราจะหารือเกี่ยวกับปัญหาทั่วไปบางประการที่ต้องเผชิญขณะเข้าถึงลิงก์ และจะหารือเพิ่มเติมเกี่ยวกับวิธีแก้ปัญหาเหล่านั้น
กรอกข้อความลิงก์ใน Selenium – By.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 – By.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 หน้าแรกของ Tours มีลิงก์สองลิงก์ที่มีข้อความ "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)