ค้นหาองค์ประกอบใน Selenium – FindElement โดย XPath

ทำไมคุณถึงต้องการคำสั่ง Find Element?

การโต้ตอบกับเว็บเพจต้องการให้ผู้ใช้ค้นหาองค์ประกอบเว็บ คำสั่ง Find Element ใช้เพื่อระบุองค์ประกอบเว็บ (หนึ่ง) โดยไม่ซ้ำกันภายในหน้าเว็บ ในขณะที่คำสั่ง Find Elements ใช้เพื่อระบุรายการองค์ประกอบเว็บภายในหน้าเว็บโดยไม่ซ้ำกัน มีหลายวิธีในการระบุองค์ประกอบเว็บภายในหน้าเว็บโดยไม่ซ้ำกัน เช่น ID, ชื่อ, ชื่อคลาส, ข้อความลิงก์, ข้อความลิงก์บางส่วน, ชื่อแท็ก และ XPATH

ไวยากรณ์คำสั่ง FindElement

WebElement elementName = driver.findElement(By.LocatorStrategy("LocatorValue"));

Selenium คำสั่ง Find Element รับวัตถุ By เป็นพารามิเตอร์และส่งกลับวัตถุประเภทรายการ WebElement Selenium- โดยวัตถุสามารถนำไปใช้กับกลยุทธ์ตัวระบุตำแหน่งต่างๆ เช่น ค้นหาองค์ประกอบตาม ID Selenium, Name, Class Name, XPATH เป็นต้น ด้านล่างนี้คือไวยากรณ์ของคำสั่ง FindElement ค่ะ Selenium ไดรเวอร์เว็บ

Locator Strategy สามารถเป็นค่าใด ๆ ต่อไปนี้

  • ID
  • Selenium ค้นหาองค์ประกอบตามชื่อ
  • ชื่อคลาส
  • ชื่อวัน
  • ลิงก์ข้อความ
  • ข้อความลิงก์บางส่วน
  • XPAT

ค่าตัวระบุตำแหน่งเป็นค่าเฉพาะที่ใช้ระบุองค์ประกอบเว็บได้ เป็นความรับผิดชอบของนักพัฒนาและผู้ทดสอบเพื่อให้แน่ใจว่าองค์ประกอบเว็บสามารถระบุได้โดยไม่ซ้ำกันโดยใช้คุณสมบัติบางอย่าง เช่น รหัสหรือชื่อ

ตัวอย่าง:

WebElement loginLink = driver.findElement(By.linkText("Login"));

ตัวอย่าง: ค้นหาองค์ประกอบใน Selenium

แอปพลิเคชันต่อไปนี้ใช้สำหรับการสาธิต

http://demo.guru99.com/test/ajax.html

สถานการณ์สมมติ:

ขั้นตอนที่ 1: เปิด AUT

ขั้นตอนที่ 2: ค้นหาและคลิกปุ่มตัวเลือก

package com.sample.stepdefinitions;

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

public class NameDemo {

public static void main(String[] args) {
// TODO Auto-generated method stub

System.setProperty("webdriver.chrome.driver", "D:\\3rdparty\\chrome\\chromedriver.exe");
WebDriver driver = new ChromeDriver();
driver.manage().window().maximize();

driver.get("http://demo.guru99.com/test/ajax.html");

// Find the radio button for “No” using its ID and click on it
driver.findElement(By.id("no")).click();
	
//Click on Check Button
driver.findElement(By.id("buttoncheck")).click();

}

}

ไวยากรณ์คำสั่ง FindElements

List<WebElement> elementName = driver.findElements(By.LocatorStrategy("LocatorValue"));

ค้นหาองค์ประกอบใน Selenium คำสั่งรับ By object เป็นพารามิเตอร์และส่งคืนรายการองค์ประกอบเว็บ จะส่งคืนรายการว่างหากไม่พบองค์ประกอบโดยใช้กลยุทธ์ตัวระบุตำแหน่งและค่าตัวระบุที่กำหนด ด้านล่างนี้เป็นไวยากรณ์ของคำสั่ง find element

ตัวอย่าง:

List<WebElement> listOfElements = driver.findElements(By.xpath("//div"));

ตัวอย่าง: ค้นหาองค์ประกอบใน Selenium

สถานการณ์สมมติ:

ขั้นตอนที่ 1: เปิด URL สำหรับแอปพลิเคชันที่อยู่ระหว่างการทดสอบ

ขั้นตอนที่ 1: ค้นหาข้อความของปุ่มตัวเลือกและพิมพ์ลงบนคอนโซลเอาต์พุต

package com.sample.stepdefinitions;

import java.util.List;

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

public class NameDemo {

public static void main(String[] args) {

    System.setProperty("webdriver.chrome.driver", "X://chromedriver.exe");
    WebDriver driver = new ChromeDriver();
    driver.get("http://demo.guru99.com/test/ajax.html");
    List<WebElement> elements = driver.findElements(By.name("name"));
    System.out.println("Number of elements:" +elements.size());

    for (int i=0; i<elements.size();i++){
      System.out.println("Radio button text:" + elements.get(i).getAttribute("value"));
    }
  }
}

ค้นหาองค์ประกอบ Vs ค้นหาองค์ประกอบ

ด้านล่างนี้เป็นข้อแตกต่างที่สำคัญระหว่างคำสั่ง find element และ find element

ค้นหาองค์ประกอบ Vs ค้นหาองค์ประกอบ
ค้นหาองค์ประกอบ Vs ค้นหาองค์ประกอบใน Selenium
ค้นหาองค์ประกอบ ค้นหาองค์ประกอบ
ส่งคืนองค์ประกอบเว็บส่วนใหญ่ตัวแรกหากมีองค์ประกอบเว็บหลายรายการที่พบในตัวระบุตำแหน่งเดียวกัน ส่งคืนรายการองค์ประกอบเว็บ
ส่งข้อยกเว้น NoSuchElementException หากไม่มีองค์ประกอบที่ตรงกับกลยุทธ์ตัวระบุตำแหน่ง ส่งคืนรายการว่างหากไม่มีองค์ประกอบเว็บที่ตรงกับกลยุทธ์ตัวระบุตำแหน่ง
ค้นหาองค์ประกอบโดย XPath จะค้นหาองค์ประกอบเว็บเพียงองค์ประกอบเดียวเท่านั้น จะค้นหาชุดขององค์ประกอบที่ตรงกับกลยุทธ์ตัวระบุตำแหน่ง
ไม่สามารถใช้งาน องค์ประกอบเว็บแต่ละรายการจะได้รับการจัดทำดัชนีด้วยตัวเลขที่เริ่มต้นจาก 0 เช่นเดียวกับอาร์เรย์

สรุป

  • คำสั่ง Find Element ส่งคืนองค์ประกอบเว็บที่ตรงกับองค์ประกอบแรกสุดภายในหน้าเว็บ
  • คำสั่ง Find Elements ส่งคืนรายการองค์ประกอบเว็บที่ตรงกับเกณฑ์
  • ค้นหาองค์ประกอบโดย XPath ใน Selenium คำสั่งจะส่ง NoSuchElementException หากไม่พบองค์ประกอบที่ตรงกับเกณฑ์
  • คำสั่ง Find Elements จะส่งคืนรายการว่างมา Selenium หากไม่มีองค์ประกอบที่ตรงกับเกณฑ์