如何在 Selenium 中透過部分比較元素的屬性來識別元素?


藉助正則表示式,我們可以透過部分比較 Selenium 中的屬性來識別元素。在 xpath 中,包含()方法。它支援屬性值的部分匹配。在處理屬性中具有動態值時,此方法非常有用。

語法 

driver.findElement(By.xpath("//tagname[contains(@attributes,’value’)]"))

在 CSS 中,我們可以透過使用正則表示式透過部分比較它的屬性來識別元素。可能有三種情況 −

  • 使用 ^ 以從特定文字開始為目標的屬性。

    語法

    driver.findElement(By.cssSelector("tagname[attribute^=’value’]"))
  • 使用 $ 以從特定文字結束為目標的屬性。

    語法 

    driver.findElement(By.cssSelector("tagname[attribute$=’value’]"))
  • 使用 * 以從包含特定文字為目標的屬性。

    語法 

    driver.findElement(By.cssSelector("tagname[attribute*=’value’]"))

示例

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 PartialMatch {
   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://tutorialspoint.tw/index.htm";
      driver.get(url);
      driver.manage().window().maximize();
      driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
      // xpath with contains() method driver.findElement(By.xpath("input[contains(@id,’gsc-i’)]"))
      .click();
      // css with class name attribute starting with gsc
      driver.findElement(By.cssSelector("input[class^=’gsc’)]"))
      .click();
      // css with class attribute ending with button v2
      driver.findElement(By.cssSelector("button[class$=’button-v2’)]")).
      click();
      // css with id attribute containing Selenium
      driver.findElement(By.cssSelector("input[id*=’gsc-i’)]"))
      .click();
      driver.close();
   }
}

更新於: 2020 年 6 月 10 日

1K+ 瀏覽量

開啟你的 職業

透過完成課程獲得認證

開始
廣告