下面是元素,我需要找到与第一个 css-
匹配并以 widget
结尾的类名,我该如何在硒(java)中找到它?
尝试了以下代码,但没有成功
List<WebElement> list1 = driver.findElements(By.xpath("//body[starts-with(@class, 'css-')]"));
List<WebElement> list2 = driver.findElements(By.xpath("//body[contains(@class, 'css-')]"));
List<WebElement> list3 = driver.findElements(By.xpath("//body[ends-with(@class, 'widget')]"));
答案 0 :(得分:4)
我使用CSS选择器来查找任何类型的任何元素:
driver.findElements(By.CssSelector("[class^='css-'][class$='widget']"))
在找到使用[]具有class
属性的元素时,该元素以^=
开头并以$=
结束
要查找div:
driver.findElements(By.CssSelector("div[class^='css-'][class$='widget']"))
答案 1 :(得分:1)
@elworthy的答案是关于 CssSelector 的正确方向,您可以使用它,并且根据您的代码试用,以下内容应该有效:
List<WebElement> list3 = driver.findElements(By.CssSelector("//body[class^='css-'][class$='widget']"));
但是,如果要构建 xpath ,则值得一提的是 Selenium 支持 xpath v1.0 ,而ends-with()
是 xpath v2.0 的一部分。因此等效的 xpath 将是:
List<WebElement> list1 = driver.findElements(By.xpath("//body[starts-with(@class, 'css-') and contains(@class, 'widget')]"));