Computer >> Máy Tính >  >> Lập trình >> CSS

Làm cách nào để sử dụng CSS selector làm định vị trong Selenium?

Chúng tôi có thể xác định vị trí các phần tử bằng Bộ chọn CSS định vị trong Selenium webdriver. Biểu thức chung để tạo biểu thức CSS là tên thẻ [thuộc tính ='giá trị']. Chúng tôi có thể sử dụng thuộc tính id và class để tạo CSS.

Với id, cú pháp của biểu thức CSS là tên thẻ # id. Ví dụ:đối với một biểu thức CSS - input # txt-loc, input là tên thẻ và txt-loc là giá trị của thuộc tính id.

Với tên lớp, cú pháp của biểu thức CSS là tagname.class. Ví dụ:đối với biểu thức CSS - input.txt-cls, đầu vào là tên thẻ và txt-cls là giá trị của thuộc tính lớp.

Nếu có n phần tử con (phần tử con) của phần tử phần tử web (cha) và chúng tôi muốn xác định vị trí thứ n-con, thì cú pháp của biểu thức CSS là nth-of-type (n).

Làm cách nào để sử dụng CSS selector làm định vị trong Selenium?

Trong html ở trên, nếu chúng ta muốn xác định vị trí li thứ tư của phần tử gốc, tức là phần tử neo có văn bản - Câu hỏi và câu trả lời, thì CSS phải là li:nth-of-type (4). Tương tự, để xác định con cuối cùng, CSS phải là ul.reading li:last-child.

Đối với các thuộc tính có giá trị động, chúng ta có thể sử dụng ký hiệu ^ =để xác định một phần tử có giá trị thuộc tính bắt đầu bằng một văn bản cụ thể. Ví dụ:đầu vào [name ^ ='qa1'] [ở đây đầu vào là tên thẻ và giá trị của thuộc tính tên bắt đầu bằng qa1].

Đối với các thuộc tính có giá trị động, chúng ta có thể sử dụng ký hiệu $ =để xác định một phần tử có giá trị thuộc tính kết thúc bằng một văn bản cụ thể. Ví dụ:đầu vào [class $ ='loc'] [ở đây đầu vào là tên thẻ và giá trị của thuộc tính lớp kết thúc bằng loc].

Đối với các thuộc tính có giá trị động, chúng ta có thể sử dụng ký hiệu * =để xác định một phần tử có giá trị thuộc tính có một chuỗi con cụ thể. Ví dụ:đầu vào [name * ='sub'] [ở đây đầu vào là tên thẻ và giá trị của thuộc tính tên chứa chuỗi con phụ].

Ví dụ

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();
   }
}