Java Selenium-如何使用cssSelector查找多个元素

Java Selenium-如何使用cssSelector查找多个元素,java,selenium,selenium-webdriver,Java,Selenium,Selenium Webdriver,我想验证一下标签“Name”是否在页面上显示了#次,我想知道如何使用cssSelector查找该元素 这是一个要素: <div class="entity-label ng-binding" ng-bind-html="entity.Label">Name</div> 不,你不能。唯一的方法是使用Xpath。使用text()='your text'或包含(text(),'your text')作为查找元素的条件 private By lblNameField = By.

我想验证一下标签“Name”是否在页面上显示了#次,我想知道如何使用cssSelector查找该元素

这是一个要素:

<div class="entity-label ng-binding" ng-bind-html="entity.Label">Name</div>

不,你不能。唯一的方法是使用Xpath。使用
text()='your text'
包含(text(),'your text')
作为查找元素的条件

private By lblNameField = By.xpath("//*[@class='entity-label ng-binding' and text()='Name']");

从技术上讲,您可以使用CSS选择器进行搜索,但仅定位器无法找到所需的元素。您必须循环遍历所有元素,并使用
.getText()
查找包含的文本。下面是一个例子

List<WebElement> labels = driver.findElements(By.cssSelector("div.entity-label.ng-binding[ng-bind-html='entity.Label']"));
int count = 0;
for (WebElement label : labels)
{
    if (label.getText().equals("Name"))
    {
        count++;
    }
}
System.out.println(count);

div中的
Name
是文本而不是名称,您可以将xpath与
div[contains(text(),“Name”)]
一起使用,这可能会对您有所帮助。它似乎仍然找不到xpath,我仍然得到0
public int countName(){int namecont;namecont=driver.findElements(By.xpath(//div[.='Name'][ng bind html='entity.Label']”).size();System.out.println(namecont);return namecont;}
我想我已经弄明白了,我必须将您的xpath切换到driver.findElements(By.xpath(“/*[@class='entity-Label ng binding'][.='Name'])。size();这似乎是可行的。这很奇怪……您在问题中提供的HTML显示了一个
DIV
,因此应该可以工作。我会仔细检查您获得的元素是否是您期望的元素。您可能会仔细检查HTML并更新问题,如果某些内容也发生了更改。我还尝试了xpath,但找不到名称field.如果我使用Chrome Dev并使用xpath,我可以找到它,但它看起来很凌乱-
/*[@id=“ResultsData”]/div/ol/li[*]/ol/li[1]/div[1]
@class='entity-label ng binding'
是一种不好的做法,因为这是两个不同的类,它们不能保证按此顺序出现。@JeffreyNg我忘了提到xpath区分大小写。您可能需要将'name'更改为'name'。SiKing我知道。我知道如何使用Angular中的模板。'class'中的值取决于在实现过程中,只有开发人员知道这种确定性。我不能说这是一种随机顺序。因此我打算使用与提问者相同的xpath。
List<WebElement> labels = driver.findElements(By.cssSelector("div.entity-label.ng-binding[ng-bind-html='entity.Label']"));
int count = 0;
for (WebElement label : labels)
{
    if (label.getText().equals("Name"))
    {
        count++;
    }
}
System.out.println(count);
driver.findElements(By.xpath("//div[.='Name'][ng-bind-html='entity.Label']")).size();