如何使用C#获取Selenium的元素列表

时间:2015-06-26 14:47:58

标签: c# selenium-webdriver

我正在尝试在Selenium中创建一个Web元素列表。我现在的问题是有4个可以全部点击的GIF但都保持相同的值。我需要列出它们,以便我可以选择我想要的那个。这是我的代码行

[1]

我在网上看到的每个地方都有一个合适的答案。但是我收到错误:

  

错误1无法隐式转换类型' System.Collections.ObjectModel.ReadOnlyCollection'到' System.Collections.Generic.List'

有没有人知道如何完成我要找的东西或如何解决这个错误?

3 个答案:

答案 0 :(得分:4)

将其转换为ReadOnlyCollection,并确保您拥有using System.Collections.Generic;导入

IReadOnlyCollection<IWebElement> createGifs = driver.FindElements(By.XPath("//img[@ src='images/document_create.gif']"));

如果您确实想使用List,请使用ToList()

List<IWebElement> createGifs = driver.FindElements(By.XPath("//img[@ src='images/document_create.gif']")).ToList();

修改

默认情况下,澄清Selenium的ISearchContext.FindElements方法返回ReadOnlyCollection<IWebElement>。见this

答案 1 :(得分:0)

您可以将IReadOnlyCollection转换为列表。

例如,如果您要搜索li,则应该执行以下操作。

//get readonly list
IReadOnlyCollection<IWebElement> li_element_list =driver.FindElements(By.TagName("li"));

//create new list
List<IWebElement> allHandles2 = new List<IWebElement>(li_element_list);

答案 2 :(得分:0)

List<IWebElement> createGifs = new List<IWebElement> (driver.FindElements(By.XPath("//img[@ src='images/document_create.gif']"))); 

这对我来说很好。