使用Selenium Webdriver,我如何找到与div相关的所有类?

时间:2015-09-10 21:34:17

标签: html css selenium

我有一个基于登录用户权限的多个类的div。

登录后:

<div class="btn deleteButton canDelete">

未登录时:

<div class="btn deleteButton">

我需要一种方法来确定具有deleteButton类的div是否也具有canDelete类。

我尝试使用deleteButton获取所有元素的列表,并使用canDelete获取所有元素,并进行比较,但这有两个原因无效:

  1. 循环浏览两个可能很大的列表而不是一个列表效率很低。

  2. 页面上可能还有其他div canDelete。这意味着仅仅比较两个元素列表并不有效。

2 个答案:

答案 0 :(得分:0)

关注网页相关区域的一种方法是创建容器,然后仅查找这些容器中的元素。例如,您可以在变量中识别和存储您感兴趣的区域:

public static final String AREA_CONTAINER = "some_css_path";

然后,一旦你的区域被封闭,你就可以在这个区域内寻找你的元素:

@FindBy(css = AREA_CONTAINER + "css_path") //here we are looking for specific elements within the area of interest
private WebElement element;

或在多个类似元素的情况下:

@FindBy(css = AREA_CONTAINER + "css_path")
private List<WebElement> elements;

答案 1 :(得分:-1)

这两种方式都必须适合你:

By.cssSelector(".deleteButton .canDelete")

By.Xpath(".//div[contains(@class,'deleteButton') and contains(@class,'canDelete')]")