C# 从列表项中剥离项

C# 从列表项中剥离项,c#,list,linq,selenium,C#,List,Linq,Selenium,我正在自动化一些网站,我被困在这样一个案件。我创建了一个列表,对我来说一切都很好,它有24个元素。这些是来自商店的产品,包含它们的图片、名称、价格等。但是现在我需要从第一个元素中获取两个内容并显示在控制台中,即名称和价格。有人能提出什么建议吗?我坐着思考,但什么也没说出来。我所能做的就是把每件东西都寄出去 我试着用Linq解决这个问题,但没有成功 public List<string> ListOfElements() { var elements = new List<

我正在自动化一些网站,我被困在这样一个案件。我创建了一个列表,对我来说一切都很好,它有24个元素。这些是来自商店的产品,包含它们的图片、名称、价格等。但是现在我需要从第一个元素中获取两个内容并显示在控制台中,即名称和价格。有人能提出什么建议吗?我坐着思考,但什么也没说出来。我所能做的就是把每件东西都寄出去

我试着用Linq解决这个问题,但没有成功

public List<string> ListOfElements()
{
    var elements = new List<string>();

    IReadOnlyCollection<IWebElement> listElements = _driver.FindElements(By.CssSelector(".category-list div[class='cat-prod-row js_category-list-item js_clickHashData js_man-track-event ']");

    foreach (IWebElement element in listElements)
    {
        elements.Add(element.Text);
    }

    return elements;
}

public void DisplayFirstElement()
{
    var firstElement = ListOfElements();
    Console.WriteLine(firstElement[0]);
}
公共元素列表()
{
var elements=新列表();
iRadonlyCollection listElements=_driver.FindElements(By.CssSelector(“.category list div[class='cat-prod-row js_category-list-item js_clickHashData js_man-track-event']);
foreach(列表元素中的IWebElement元素)
{
elements.Add(element.Text);
}
返回元素;
}
public void DisplayFirstElement()
{
var firstElement=listofements();
Console.WriteLine(第一个元素[0]);
}

我想要得到第一个元素的名称和价格,然后断言该元素的价格大于10。

您正在将所有元素属性展平为一个字符串集合。因此,您将失去这些字符串之间的任何关系。很难说列表中的第22个元素实际上是什么:它是价格吗?名称吗?Som完全不同?它实际上属于哪个项目

相反,您应该只返回实体列表,然后打印第一个实体的属性:

public List<IWebElement> ListOfElements()
{
    var elements = new List<string>();
    return listElements = _driver.FindElements(By.CssSelector(".category-list div[class='cat-prod-row js_category-list-item js_clickHashData js_man-track-event ']");
}

public void DisplayFirstElement()
{
    var allElements = ListOfElements();
    var firstElement = allElements.First();
    Console.WriteLine("FirstName: " + firstElement.Name + " Price: " + firstElement.Price);
}
公共元素列表()
{
var elements=新列表();
return listElements=_driver.FindElements(By.CssSelector(“.category list div[class='cat-prod-row js_category-list-item js_clickHashData js_man-track-event']);
}
public void DisplayFirstElement()
{
var等位基因=元素列表();
var firstElement=等位基因。First();
Console.WriteLine(“FirstName:+firstElement.Name+”Price:+firstElement.Price);
}

当然,这假设您的
IWebElement
有一个
名称
和一个
价格
-属性。

您正在将所有元素属性展平为一个字符串集合。因此,您正在丢失这些字符串之间的任何关系。很难说该列表中的第22个元素实际上是什么:它是pric吗名字?完全不同的东西?它实际上属于哪个项目

相反,您应该只返回实体列表,然后打印第一个实体的属性:

public List<IWebElement> ListOfElements()
{
    var elements = new List<string>();
    return listElements = _driver.FindElements(By.CssSelector(".category-list div[class='cat-prod-row js_category-list-item js_clickHashData js_man-track-event ']");
}

public void DisplayFirstElement()
{
    var allElements = ListOfElements();
    var firstElement = allElements.First();
    Console.WriteLine("FirstName: " + firstElement.Name + " Price: " + firstElement.Price);
}
公共元素列表()
{
var elements=新列表();
return listElements=_driver.FindElements(By.CssSelector(“.category list div[class='cat-prod-row js_category-list-item js_clickHashData js_man-track-event']);
}
public void DisplayFirstElement()
{
var等位基因=元素列表();
var firstElement=等位基因。First();
Console.WriteLine(“FirstName:+firstElement.Name+”Price:+firstElement.Price);
}
当然,这假设您的
IWebElement
具有
名称
-和
价格
-属性