เราสามารถค้นหาองค์ประกอบด้วยตัวระบุตำแหน่ง CSS Selector ใน Selenium webdriver นิพจน์ทั่วไปในการสร้างนิพจน์ CSS คือ tagname[attribute='value'] เราสามารถใช้แอตทริบิวต์ id และ class เพื่อสร้าง CSS ได้
ด้วย id ไวยากรณ์ของนิพจน์ CSS คือ tagname#id ตัวอย่างเช่น สำหรับนิพจน์ CSS - input#txt-loc อินพุตคือชื่อแท็ก และ txt-loc คือค่าของแอตทริบิวต์ id
ด้วยชื่อคลาส ไวยากรณ์ของนิพจน์ CSS คือ tagname.class ตัวอย่างเช่น สำหรับนิพจน์ CSS - input.txt-cls อินพุตคือชื่อแท็ก และ txt-cls คือค่าของแอตทริบิวต์คลาส
หากมีองค์ประกอบย่อย n (ลูก) ขององค์ประกอบองค์ประกอบเว็บ (หลัก) และเราต้องการค้นหาตำแหน่งลูกที่ n ไวยากรณ์ของนิพจน์ CSS คือ nth-of-type(n)
ใน html ด้านบนนี้ หากเราต้องการค้นหา li ที่สี่ของ parent ul เช่น องค์ประกอบสมอที่มีข้อความ - คำถามและคำตอบ CSS ควรเป็น ul.reading li:nth-of-type(4) ในทำนองเดียวกัน เพื่อระบุชายด์คนสุดท้าย CSS ควรเป็น ul.reading li:last-child
สำหรับแอตทริบิวต์ที่มีค่าไดนามิก เราสามารถใช้สัญลักษณ์ ^=เพื่อระบุองค์ประกอบที่มีค่าแอตทริบิวต์ขึ้นต้นด้วยข้อความเฉพาะ ตัวอย่างเช่น input[name^='qa1'] [ในที่นี้ input คือ tagname และค่าของแอตทริบิวต์ name ขึ้นต้นด้วย qa1]
สำหรับแอตทริบิวต์ที่มีค่าไดนามิก เราสามารถใช้สัญลักษณ์ $=เพื่อระบุองค์ประกอบที่มีค่าแอตทริบิวต์ลงท้ายด้วยข้อความเฉพาะ ตัวอย่างเช่น input[class$='loc'] [ในที่นี้ input คือ tagname และค่าของแอตทริบิวต์ class ลงท้ายด้วย loc]
สำหรับแอตทริบิวต์ที่มีค่าไดนามิก เราสามารถใช้สัญลักษณ์ *=เพื่อระบุองค์ประกอบที่มีค่าแอตทริบิวต์มีสตริงย่อยเฉพาะ ตัวอย่างเช่น input[name*='sub'] [ในที่นี้ input is the tagname และค่าของแอตทริบิวต์ name มี substring sub].
ตัวอย่าง
import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; import org.openqa.selenium.firefox.FirefoxDriver; import java.util.concurrent.TimeUnit; public class CSSLocator{ public static void main(String[] args) { System.setProperty("webdriver.gecko.driver", "C:\\Users\\ghs6kor\\Desktop\\Java\\geckodriver.exe"); WebDriver driver = new FirefoxDriver(); //implicit wait driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS); //URL launch driver.get("https://www.linkedin.com/"); //identify element WebElement m = driver. findElement(By.cssSelector("input[id='session_key']")); //enter text m.sendKeys("Java"); String s = m.getAttribute("value"); System.out.println("Attribute value: " + s); //close browser driver.close(); } }