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

时间:2017-07-22 00:49:19

标签: java selenium selenium-webdriver

我想验证标签'Name'在我们的页面上显示#times,并想知道如何使用cssSelector来查找该元素?

这是元素:

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

这是我目前所拥有的,但不确定如何添加“名称”。

private By lblNameField = By.cssSelector("[class='entity-label ng-binding'][ng-bind-html='entity.Label'");

Image of my source

2 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

从技术上讲,你可以使用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);

更有效的方法(以及方式来定位包含文本的元素)是使用XPath。 XPath将包含您要查找的文本,这样只有定位器就可以找到所有需要的元素。下面的代码将返回您要查找的元素数。

driver.findElements(By.xpath("//div[.='Name'][ng-bind-html='entity.Label']")).size();