这是我过去遇到的一个有趣的问题。通过一些令人沮丧的调试会话,我发现WebElement
对象是根据页面上可见的内容动态变化的。我将检索一个List<WebElement>
,在页面上进行一些更改,然后注意到我的List<>
实际上会随着页面上的内容而变化。
要回答您的问题.....我不确定是否可以存储WebElement
本身,而不删除您提到的旧div
。
对此,我建议的唯一解决方法是创建您自己的Element
类并将WebElements
分配给此类,以便您基本上可以创建自己的元素“缓存”。
这里有一些示例:
public class Element
{
public string TagName { get; set; }
public string Text { get; set; }
public bool Displayed { get; set; }
// any other attributes you want to store here
}
public List<Element> StoreWebElements(List<IWebElement> seleniumElements)
{
var result = new List<Element>();
foreach (var elem in seleniumElements)
{
result.Add(new Element { TagName = elem.TagName,Text = elem.Text,Displayed = elem.Displayed
};
}
}
// your code
var divList = Driver.FindElements(By.Name("elemName"));
// "store" the elements
var cachedElements = StoreWebElements(divList);
// do something on the page to change it
// divList will change,but cachedElements will stay the same.
这有点棘手,但我个人从未找到解决您所描述问题的解决方法。我很想知道是否有人对此有解释或更好的解决方案。
本文链接:https://www.f2er.com/3151354.html