如果我有两个具有相同选择器的元素,如何使CSS选择器唯一?

时间:2019-03-15 10:27:30

标签: html selenium css-selectors

我正在尝试访问图像中的第二个元素文本(总安装号,但是左边的元素具有相同的选择器,并且作为输出,程序会在上面提供文本。如何处理这种情况?

快照1:

Snapshot 1

快照2:

Snapshot 2

快照3:

Snapshot 3

快照4:

Snapshot 4

3 个答案:

答案 0 :(得分:0)

this.table.find( '.at-filter' ).each(
    function(index, element) {
        var type=$(element).data-filter-type();
        var val=$(element).data-filter-val();
        self.data.filter[type] = {};
        $(element).bind('click', {self:self, val:val, type:type}, type.openContextMenu);
    }
)

答案 1 :(得分:0)

使用index来获取元素。使用CSS选择器可以尝试这种方式。

driver.findElement(By.cssSelector("*.af-kpi-box-footer:nth-child(1)"))
driver.findElement(By.cssSelector("*.af-kpi-box-footer:nth-child(2)"))

已编辑,并带有xpath。

WebElement Element1 = driver.findElement(By.xpath("(//h5[@class='af-kpi-box-footer'])[1]"));
System.out.println(Element1.getAttribute("innerHTML"));

WebElement Element3 = driver.findElement(By.xpath("(//h5[@class='af-kpi-box-footer'])[2]"));
System.out.println(Element3.getAttribute("innerHTML"));

答案 2 :(得分:0)

List<WebElement> elem=driver.findElements(By.className("af-kpi-box-pieces-container"));

for(int i=0;i<elem.size();i++){
  if(elem.get(i).getText().contains("Installs") {
    elem.get(i).getText();
    break;
    }
}

@Edit =>未能调用.get()类的List方法