繁体   English   中英

如何使用C#将所有元素放入Selenium的列表或字符串中?

[英]How to get all elements into list or string with Selenium using C#?

我已经尝试过使用WebElement(和IWebElement)和字符串列表,但我一直在收到错误。 如何通过classname获取所有元素文本的列表或字符串? 我有所有Selenium参考。 我需要一些java.util dll吗?

我应该实现foreach循环吗?

IList<IWebElement> all = new IList<IWebElement>();
all = driver.FindElements(By.ClassName("comments")).Text;

错误:无法创建抽象类或接口'System.Collections.Generic.IList'的实例

错误:'System.Collections.ObjectModel.ReadOnlyCollection'不包含'Text'的定义,也没有扩展方法'Text'接受类型的第一个参数

你可以得到这样的所有元素文本:

IList<IWebElement> all = driver.FindElements(By.ClassName("comments"));

String[] allText = new String[all.Count];
int i = 0;
foreach (IWebElement element in all)
{
    allText[i++] = element.Text;
}

虽然您已经接受了答案,但可以使用LINQ来压缩它:

List<string> elementTexts = driver.FindElements(By.ClassName("comments")).Select(iw => iw.Text);
  1. 你不能创建一个而不是IList<T> ,你必须创建一个实现接口的类实例,例如List<T>

     IList<IWebElement> all = new List<IWebElement>(); 
  2. 但是,您需要.TextIWebElement ,所以你的名单也许应该List<string>

     IList<string> all = new List<string>(); 
  3. 使用foreach将项添加到列表中:

     foreach(var element in driver.FindElements(By.ClassName("comments")); { all.Add(element.Text); } 

您也可以这样做,它会解析菜单列表并获取列表文本。

IWebElement menuOptions;
menuOptions = _browserInstance.Driver.FindElement(By.XPath(".//*[@id='xxxxxxxxxxxxxxxxxx']/ul[2]/li[3]"));
IList<IWebElement> list = menuOptions.FindElements(By.TagName("li"));

//// get the column headers
char[] character = "\r\n".ToCharArray();
string[] Split = menuOptions.Text.Split(character);

for (int i = 0; i < Split.Length; i++)
{
    if (Split[i] != "")
    {
        _log.LogEntry("INFO", "column Text", true,
                Split + " Text matches the expected:" + Split[i]);
    }
}

我用过这个表格

    public List<string> GetValidations()
    {
        IList<IWebElement> elementList = _webDriver.FindElements(By.Id("validationList")); // note the FindElements, plural.
        List<string> validations = new List<string>();
        foreach (IWebElement element in elementList)
        {
            validations.Add(element.ToString());
        }
        return validations;
    }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM