ซีลีเนียม - ตัวระบุตำแหน่ง
การค้นหาองค์ประกอบใน Selenium WebDriver ดำเนินการด้วยความช่วยเหลือของเมธอด findElement () และ findElements () ที่จัดเตรียมโดยคลาส WebDriver และ WebElement
findElement () ส่งคืนอ็อบเจ็กต์ WebElement ตามเกณฑ์การค้นหาที่ระบุหรือลงเอยด้วยการทิ้งข้อยกเว้นหากไม่พบองค์ประกอบใด ๆ ที่ตรงกับเกณฑ์การค้นหา
findElements () ส่งคืนรายการ WebElements ที่ตรงกับเกณฑ์การค้นหา หากไม่พบองค์ประกอบจะส่งคืนรายการว่าง
ตารางต่อไปนี้แสดงรายการไวยากรณ์ Java ทั้งหมดสำหรับการค้นหาองค์ประกอบใน Selenium WebDriver
วิธี | ไวยากรณ์ | คำอธิบาย |
---|---|---|
โดย ID | driver.findElement (By.id (<element ID>)) | ค้นหาองค์ประกอบโดยใช้แอตทริบิวต์ ID |
โดยชื่อ | driver.findElement (By.name (<ชื่อองค์ประกอบ>)) | ค้นหาองค์ประกอบโดยใช้แอตทริบิวต์ Name |
ตามชื่อชั้น | driver.findElement (By.className (<element class>)) | ค้นหาองค์ประกอบโดยใช้แอตทริบิวต์ Class |
ตามชื่อแท็ก | driver.findElement (By.tagName (<htmltagname>)) | ค้นหาองค์ประกอบโดยใช้แท็ก HTML |
ตามข้อความลิงก์ | driver.findElement (By.linkText (<linktext>)) | ค้นหาลิงก์โดยใช้ข้อความลิงก์ |
โดยข้อความลิงก์บางส่วน | driver.findElement (By.partialLinkText (<linktext>)) | ค้นหาลิงก์โดยใช้ข้อความบางส่วนของลิงก์ |
โดย CSS | driver.findElement (By.cssSelector (<css selector>)) | ค้นหาองค์ประกอบโดยใช้ตัวเลือก CSS |
โดย XPath | driver.findElement (By.xpath (<xpath>)) | ค้นหาองค์ประกอบโดยใช้แบบสอบถาม XPath |
การใช้ตัวระบุตำแหน่ง
ตอนนี้ให้เราเข้าใจการใช้งานจริงของแต่ละวิธีการระบุตำแหน่งด้วยความช่วยเหลือของ https://www.calculator.net
โดย ID
ที่นี่มีการเข้าถึงวัตถุด้วยความช่วยเหลือของ ID ในกรณีนี้คือ ID ของกล่องข้อความ ค่าจะถูกป้อนลงในกล่องข้อความโดยใช้เมธอด sendkeys ด้วยความช่วยเหลือของ ID (cdensity)
driver.findElement(By.id("cdensity")).sendKeys("10");
โดยชื่อ
ที่นี่มีการเข้าถึงวัตถุด้วยความช่วยเหลือของชื่อ ในกรณีนี้เป็นชื่อของกล่องข้อความ ค่าจะถูกป้อนลงในกล่องข้อความโดยใช้เมธอด sendkeys ด้วยความช่วยเหลือของ ID (cdensity)
driver.findElement(By.name("cdensity")).sendKeys("10");
ตามชื่อชั้น
ที่นี่มีการเข้าถึงวัตถุด้วยความช่วยเหลือของชื่อคลาส ในกรณีนี้เป็นชื่อคลาสของ WebElement ค่าสามารถเข้าถึงได้ด้วยความช่วยเหลือของเมธอด gettext
List<WebElement> byclass = driver.findElements(By.className("smalltext smtb"));
ตามชื่อแท็ก
ชื่อแท็ก DOM ขององค์ประกอบสามารถใช้เพื่อค้นหาองค์ประกอบนั้น ๆ ใน WebDriver มันง่ายมากที่จะจัดการกับตารางด้วยความช่วยเหลือของวิธีนี้ ดูรหัสต่อไปนี้
WebElement table = driver.findElement(By.id("calctable"));
List<WebElement> row = table.findElements(By.tagName("tr"));
int rowcount = row.size();
โดย Link Text
วิธีนี้ช่วยในการค้นหาองค์ประกอบลิงก์ที่ตรงกับข้อความที่มองเห็นได้
driver.findElements(By.linkText("Volume")).click();
โดยข้อความลิงก์บางส่วน
วิธีนี้ช่วยค้นหาองค์ประกอบลิงก์ที่มีข้อความที่มองเห็นได้ตรงบางส่วน
driver.findElement(By.partialLinkText("Volume")).click();
โดย CSS
CSS ใช้เป็นวิธีในการระบุ webobject แต่เบราว์เซอร์บางตัวไม่รองรับการระบุ CSS
WebElement loginButton = driver.findElement(By.cssSelector("input.login"));
โดย XPath
XPath ย่อมาจากภาษาพา ธ XML เป็นภาษาแบบสอบถามสำหรับการเลือกโหนดจากเอกสาร XML XPath ขึ้นอยู่กับการแสดงโครงสร้างของเอกสาร XML และให้ความสามารถในการนำทางรอบ ๆ ทรีโดยการเลือกโหนดโดยใช้เกณฑ์ต่างๆ
driver.findElement(By.xpath(".//*[@id = 'content']/table[1]/tbody/tr/td/table/tbody/tr[2]/td[1]/input")).sendkeys("100");