在id、name、xpath和css中,应该使用哪个定位器?

javascriptweb development

每个定位器都有一定的意义。如果页面包含唯一的

属性值,我们应该首先使用它们。但是,如果没有唯一的元素,我们应该使用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();
   }
}

相关文章