![](/img/trans.png)
[英]How to identify multiple parameters using cssSelector in Selenium webdriver
[英]Selenium - How to find multiple elements using cssSelector
我想验证标签“名称”在我们的页面上显示#次,并且想知道如何使用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'");
你不能。 唯一的方法是使用Xpath。 使用text()='your text'
或contains(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);
这样做的更有效方法(也是找到包含文本的元素的唯一方法)是使用XPath。 XPath将包含您要查找的文本,以便仅使用定位器就可以找到所有所需的元素。 下面的代码将返回您要查找的元素的数量。
driver.findElements(By.xpath("//div[.='Name'][ng-bind-html='entity.Label']")).size();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.