网络驱动程序 - 单击并删除所有已分发的元素

本文关键字:元素 驱动程序 单击 删除 网络 | 更新日期: 2023-09-27 18:36:16

>问题

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

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

理想的解决方案:

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

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

我不在乎找到一个特定的笔记。 我只需要找到它们并删除它们。 麻烦的是,上面的 xpath 定位器还可以处理我不感兴趣的其他元素。 即它们在 DOM 中但不显示在页面上。

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

网络驱动程序 - 单击并删除所有已分发的元素

我想你想要这样的东西:

// 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;
                }