如何通过Selenium和Java查找以特定文本开头和以特定文本结尾的类名

时间:2019-01-31 11:43:13

标签: java selenium xpath css-selectors xpath-1.0

下面是元素,我需要找到与第一个 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')]"));

2 个答案:

答案 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')]"));