我有一个响应式网站,其中包含36个按钮。乍一看,我们只能看到12个按钮,我需要验证他们的文本值,我知道该怎么做。但问题是我需要点击下一步按钮直到它不可见。那么我怎么能用c#中的selenium来做呢。
同时点击下一步,我们需要在列表或数组中存储按钮的文本,这样我就可以在新列表中添加所有列表并进行比较。
看下面我试过的代码
while (respRightNav.Displayed)
{
IList<IWebElement> sportsBtn = Driver.FindElements(By.CssSelector(".sports-buttons-responsive>ul li[class='sport-button']"));
foreach (var item in sportsBtn)
{
string btnText = item.Text.Replace(System.Environment.NewLine, "");
if (btnText == btnText.ToUpper())
{
Console.WriteLine("Sports Button : " + btnText + " is In Upper Case");
}
else
{
Assert.Fail("Sports Button Text is not Upper Case for : " + btnText);
}
}
respRightNav.Click();
if (respRightNav.Displayed.Equals(false))
{
break;
}
现在上面的工作正在进行,但是当我的Next按钮不可用时,我仍然需要在foreach循环上运行以获取文本(if(respRightNav.Displayed.Equals(false)))。意味着我需要运行Foreach循环
任何帮助都将不胜感激。
答案 0 :(得分:0)
您可以使用while
循环检查“.Displayed”值:
IWebElement button;
while((button = driver.FindElementByXPath("//input[.='Next']")).Displayed) {
button.Click();
...
}
或者在与可见元素匹配的单个调用中使用FindElementsByXPath
:
ReadOnlyCollection<IWebElement> buttons;
while((buttons = driver.FindElementsByXPath("//input[.='Next' and not(contains(@class,'none'))]")).Count > 0) {
buttons[0].Click();
...
}