如何在 Selenium 中通过属性的部分比较来识别元素?
software testingautomation testingselenium web driver
在 Selenium 中,我们可以借助正则表达式,通过属性的部分比较来识别元素。XPath 中有一个 `contains()` 方法,它支持与属性值进行部分匹配。当处理属性值动态变化的元素时,此方法非常有用。
语法
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://www.tutorialspoint.com/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 中类名属性以 gsc 开头
driver.findElement(By.cssSelector("input[class^=’gsc’)]"))
.click();
// CSS 中带有 class 属性且以 button v2 结尾的样式
driver.findElement(By.cssSelector("button[class$=’button-v2’)]")).
click();
// 带有 id 属性的 CSS 包含 Selenium
driver.findElement(By.cssSelector("input[id*=’gsc-i’)]"))
.click();
driver.close();
}
}

