问题
我有一个允许用户在网页上添加备忘录的应用程序。我需要能够找到所有备忘录并从页面中删除它们。问题是,我永远无法确定页面上会有多少备忘录以及它的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”的元素。有什么想法吗?
答案 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;
}