首页 > 解决方案 > 打印 IReadOnlyCollection元素不显示任何内容

问题描述

我有一个带有 IWebElement 的 IReadOnlyCollection 列表。当我遍历每个元素并尝试显示每个元素时,它会显示空白文本或“元素(id = #some random id)”作为输出。如何将元素显示为文本?

预期的输出应该是这样的:

往返

单程

有一个类似的问题,但没有帮助:如何通过索引访问 IReadOnlyCollection 的元素?

尝试了这些选项,

Console.WriteLine(list.ElementAt(1));
Console.WriteLine(list.ElementAt(1).Text);
Console.WriteLine(list.ElementAt(1).ToString());

以下是供参考的代码:

 IReadOnlyCollection<IWebElement> list = Browser.Driver.FindElements(By.Name("tripType"));
 for (int i = 0; i < list.count; i++)
    {
      Console.WriteLine(list.ElementAt(i));
      Console.WriteLine(list.ElementAt(i).Text);
      Console.WriteLine(list.ElementAt(i).ToString());
     }

这是HTML:

 <font face="Arial, Helvetica, sans-serif" size="2"> 
 <input type="radio" name="tripType" value="roundtrip" checked="">
         Round Trip &nbsp; 
  <input type="radio" name="tripType" value="oneway">
          One Way</font>

标签: c#selenium

解决方案


我认为您必须在循环中使用 GetAttribute,因为您的 HTML 中没有文本:

IReadOnlyCollection<IWebElement> list = Browser.Driver.FindElements(By.Name("tripType"));
 for (int i = 0; i < list.count; i++)
    {
      Console.WriteLine(list.ElementAt(i).GetAttribute("value");
     }

我会使用的一项改进是 foreach 循环

IReadOnlyCollection<IWebElement> list = Browser.Driver.FindElements(By.Name("tripType"));
    Foreach(IWebElement element in list){
        Console.WriteLine(element.GetAttribute("value");
    }

推荐阅读