繁体   English   中英

如何使用C#在Selenium WebDriver中单击列表中的项目?

[英]How to click an item from a list in Selenium WebDriver using C#?

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

码:

        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;
                    }
                }
            }

情况1输出:如果项目同时满足两个条件

Classname:
text: $189

//显示类名为空,并进入循环。

情况2输出:如果第一个项目没有$

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

继续对页面上的30个项目重复相同的操作,而不是转到第二个项目。

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

这个图书馆不是我的头等大事,但是可能是这样:

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

暂无
暂无

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

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