有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

使用Selenium Java查找筛选器窗格“铅笔图标”的元素时出现问题

我正在开发一个商业智能仪表板。在“过滤器”窗格上,它们都有一个铅笔图标,您可以单击该图标编辑特定的过滤器。问题是所有12个过滤器都有相同的元素。如何选择单个过滤笔? <div class="ew-i-fx ew-i-act f-act" data-ng-click="levelMainAction($event, level, $index)" data-ng-show="!item.disabled &amp;&amp; !item.locked" data-ng-class="{running: opened.edit == 'l'+$index}" data-translate="" data-translate-attr-title="we.actions.editfilter" title="Edit Filter"></div>

enter image description here


共 (3) 个答案

  1. # 1 楼答案

    对于这些图标中的每一个,我确信在左边都必须有一个与之相关的文本、标签或标题

    例如:

    过滤器名称1图标

    过滤器名称2图标

    等等

    您需要做的是首先找到“Filter Name 1”元素,然后找到与之关联的下一个图标

    如果你能在帖子中添加更多细节来显示过滤器名称及其HTML代码,这将非常有用

    基本上是上面/之前的HTML

    <div class="ew-i-fx ew-i-act f-act" data-ng-click="levelMainAction($event, level, $index)" data-ng-show="!item.disabled &amp;&amp; !item.locked" data-ng-class="{running: opened.edit == 'l'+$index}" data-translate="" data-translate-attr-title="we.actions.editfilter" title="Edit Filter"></div>
    
  2. # 2 楼答案

    如果确定元素具有相同的属性:By。xpath((//div[@title='Edit Filter']),并将其设置为多个,然后通过以下方式收集它们:

    import java.util.List;
    import org.openqa.selenium.WebElement;
    
    List<WebElement> elements = driver.findElements(By.xpath("(//div[@title='Edit Filter']));
    

    以及使用indexValue来获取所需的元素:

    int indexValue = 1;
    elements.get(indexValue).click();
    
  3. # 3 楼答案

    如果所有过滤器的所有属性都相同,并且过滤器的位置不变,则可以使用索引标识过滤器
    您可以使用以下xpath查找元素并相应地更改索引值:

    WebElement element = driver.findElement(By.xpath("(//div[@title='Edit Filter'])[1]"));