我实际上是在尝试从IList中删除该元素,如果出现某些情况,但我似乎得到了相同的列表.Count
号码。以下是我的代码:
[FindsBy(How = How.XPath, Using = "//button[@aria-label='delete']")]
private IList <IWebElement> _deleteIcons;
******** SOME CODE HERE **********
for (var i = 0; i<_deleteIcons.Count; i++)
{
if (_deleteIcons[i].GetAttribute("disabled").Contains("true"))
{
_deleteIcons.RemoveAt(i);
}
}
Debug.WriteLine(_deleteIcons.Count);
想象一下,IList中有 6 个总元素,其中2个包含"disabled" =="true"
最后我想向调试控制台写入变量count并查看 4 即可。目前,一旦运行了这段代码,我仍然可以在IList中获得相同数量的6个元素。
答案 0 :(得分:1)
最简单的方法是使用CSS选择器,然后选择那些未禁用的按钮。它会更快,您不需要在之后进行过滤。
"button[aria-label='delete']:not([disabled])"
答案 1 :(得分:0)
这是你在for循环之前需要做的事情
_deleteIcons = [CODE_TO_GET_ELEMENETS].ToList()
然后这应该工作
或者您可以使用Linq实现此目的而无需此循环:
_deleteIcons = [CODE_TO_GET_ELEMENETS].Where(x => x.GetAttribute("disabled").Contains("true"))
答案 2 :(得分:0)
我遇到了类似的情况,我使用LINQ查询来重建我正在制作的列表。 System.NotSupportedException: 'Collection is read-only.' thrown when removing object from iList
我知道你已经有了一个答案,但也只是把它放在那里。