Computer >> 컴퓨터 >  >> 프로그램 작성 >> JavaScript

id, name, xpath, css 중 어떤 locator를 사용해야 하나요?


각 로케이터에는 약간의 의미가 있습니다. 페이지에 고유한 내용이 포함된 경우

속성 값을 사용하려면 먼저 사용해야 합니다. 단, 고유한 요소가 없는 경우에는 속도 면에서 더 효과적인 css 선택기를 사용해야 합니다.

Css는 또한 자식 노드에서 부모 노드로 이동할 수 없다는 단점이 있습니다. 즉, 뒤로 이동할 수 없습니다. 그러나 xpath는 이 기능을 허용합니다. Xpath는 Selenium에서 가장 일반적인 로케이터이며 DOM 요소와 속성을 통해 탐색을 수행하여 개체를 식별합니다.

xpath는 '/ '와 '//'의 두 가지 방식으로 표현됩니다. 슬래시는 절대 경로를 의미합니다. 여기서 xpath는 DOM에서 부모에서 자식으로 직접 이동합니다. 따라서 절대 xpath에서는 루트 노드에서 대상으로 이동해야 합니다.

구문 -

driver.findElement(By.xpath("/html/body/div/input")).

이중 포워드 '// '슬래시는 상대 경로를 의미합니다. 여기서 xpath는 DOM의 모든 구석에서 일치하는 요소를 찾습니다. 특정 시작점이 없습니다.

구문 -

driver.findElement(By.xpath("//input[@name=’Tutorial’]")).

절대 xpath보다는 상대 xpath를 사용하는 것이 항상 권장됩니다. 절대 xpath에서는 루트에서 원하는 요소까지 지정해야 하므로 그 사이에 속성과 값이 변경되면 xpath가 더 이상 정확하지 않습니다.

예시

import org.openqa.selenium.By;
import org.openqa.selenium.Keys;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
import java.util.concurrent.TimeUnit;
public class TextMatch {
   public static void main(String[] args) {
      System.setProperty("webdriver.chrome.driver",    "C:\\Users\\ghs6kor\\Desktop\\Java\\chromedriver.exe");
      WebDriver driver = new ChromeDriver();
      String url = " https://www.tutorialspoint.com/questions/index.php";
      driver.get(url);
      driver.manage().window().maximize();
      driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
      //identifying element with xpath
      driver.findElement(By.xpath("//input[@class=’gsc-input’]")).click();
      driver.close();
   }
}