您好我需要验证我要点击的项目是否有美元符号且没有缺货。所以我使用了这个方法。如果列表中的第一个项目满足条件,但如果第一个项目没有美元符号则不会转到第二个项目然后单击它,这样可以正常工作。由于我是编程新手,我不知道我是否在代码中犯了任何错误。 我怎么能纠正这个?感谢。
代码:
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
//显示classname为空,它进入循环。
案例2输出:如果第一项没有$
Classname:
text: Prices varies
Classname:
text: Prices varies
Classname:
text: Prices varies...
对页面上的30个项目不断重复,而不是第二个。
答案 0 :(得分:2)
内部FindElement
似乎想要itemWithDollarSign
与循环item
相关,但它似乎实际上是静态的。
这个图书馆不是我的面包和黄油,但可能就是这样:
IWebElement itemWithDollarSign = item.FindElement(By.CssSelector("div[class='item-preview-text']>div[class='price']"));