如何使用c#在Selenium WebDriver中单击列表中的项

本文关键字:单击 列表 WebDriver 何使用 Selenium | 更新日期: 2023-09-27 18:17:17

嗨,我需要验证我要点击的项目是否有美元符号并且没有缺货。所以我用了这个方法。如果列表上的第一个项目同时满足两个条件,那么这个方法可以正常工作,但如果第一个项目没有美元符号,它就不会转到第二个项目并单击它,而是失败。由于我是编程新手,我不知道我是否在代码中犯了任何错误。我怎样才能纠正这个问题呢?谢谢。

代码:

        ReadOnlyCollection<IWebElement> listOfItems = driver.FindElements(By.CssSelector("ul[class='shelf-list tap-list search']>li"));
            foreach (IWebElement item in listOfItems)
            {
                //To check if item is not sold out get the class attribute of item and check if empty
                string className = item.GetAttribute("class");
                Console.WriteLine("Classname:" + " " + className);
                if (className.Equals(""))
                {
                    //Item is available and now get text and check if it has $ sign
                    IWebElement itemWithDollarSign = driver.FindElement(By.CssSelector("div[class='item-preview-text']>div[class='price']"));
                    string ItemToChoose = itemWithDollarSign.Text;
                    Console.WriteLine("Text:" + " " + ItemToChoose);
                    if (ItemToChoose.Contains("$"))
                    {
                        //Choose the item that satifies both conditions
                        itemWithDollarSign.Click();
                        break;
                    }
                }
            }

Case 1输出:if item满足两个条件

Classname:
text: $189

//显示classname为空并进入循环。

case 2输出:如果第一项没有$

Classname:
text: Prices varies
Classname:
text: Prices varies
Classname:
text: Prices varies...

在页面的30个条目中重复相同的内容,而不是跳转到第二个条目

如何使用c#在Selenium WebDriver中单击列表中的项

内部的FindElement似乎想让itemWithDollarSign与循环的item相关,但它实际上似乎是静态的。

这个图书馆不是我的主要生活来源,但这会是吗?

IWebElement itemWithDollarSign = item.FindElement(By.CssSelector("div[class='item-preview-text']>div[class='price']"));