Selenium webdriver - 如何单击下一步按钮直到无法在c#中找到下一步按钮

时间:2016-05-05 05:27:47

标签: c# selenium selenium-webdriver

我有一个响应式网站,其中包含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循环

任何帮助都将不胜感激。

1 个答案:

答案 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();
    ...

}