Webdriver - 单击并删除所有显示的元素

时间:2016-02-26 12:58:08

标签: c# selenium-webdriver webdriver

问题

我有一个允许用户在网页上添加备忘录的应用程序。我需要能够找到所有备忘录并从页面中删除它们。问题是,我永远无法确定页面上会有多少备忘录以及它的ID是什么。每个“备忘录”都有一个唯一的ID,它取决于页面上有多少备忘录。例如,如果页面上有三个备忘录,那么我将有三个备忘录,ID为“memo01,memo02,memo03”等。

我现在所做的只是搜索5个备忘录(我假设永远不会超过5个)所以我通过包含“memo01,memo02,memo03”的ID搜索元素,最多5个。然后我删除它们反过来 - 这是有效的。我知道这不是理想或特别有效,特别是现在,当我有一个案例,我在页面上有10个笔记

理想解决方案:

我想出的是找到所有包含“注释”的ID,如下所示:

driver.Findelements(By.XPath("//*[contains(@id, 'note')]"));

我不在乎找一个特别的音符。我只需要找到它们并删除它们。麻烦的是,上面的xpath定位器也得到了我不感兴趣的其他元素的句柄。即它们在DOM中但不显示在页面上。

我需要的是循环遍历页面上实际显示(.displayed)的所有包含“x”的元素。有什么想法吗?

1 个答案:

答案 0 :(得分:1)

我想你想要这样的东西:

// The selector insid CssSelector is to find all input's ID that contains "memo"
ICollection<IWebElement> listMemo = driver.FindElements(By.CssSelector("input[id*='memo']"));
               foreach (var item in listMemo)
                {
                    item.Displayed = false;
                }