当前位置: 首页 > 知识库问答 >
问题:

Selenium webdrive-如何单击下一步按钮,直到在c#中找不到下一步按钮

平嘉熙
2023-03-14

我有一个包含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;
            }

现在上面的工作正常,但当“下一步”按钮不可用时,我仍然需要在foreach循环上方运行以获取文本(if(respRightNav.Displayed.Equals(false))。意味着我需要运行Foreach循环

任何帮助将不胜感激。

共有1个答案

林修雅
2023-03-14

您可以在循环时使用检查“.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();
    ...

}

 类似资料:
  • 我正试图让JQuery在按下下一个按钮时自动单击该按钮。在互联网上,我发现应该是这样的(查看JQuery部分)。但由于某种原因,它不起作用。 它们必须在同一个代码中吗? 我尝试过的:JQuery: 表单中的按钮1 HTML: 表单中的按钮2 HTML:

  • 这是我第一个问题的后续问题,我正在尝试抓取一个网站,让Selenium点击(直到无法点击为止)并收集结果。 这是来自网站的html标签,带有按钮: 我试过这个代码: 我也查过这个问题,但还是没能解决。 有什么想法吗?

  • 我想写一个代码,让Python在页面上抓取一些数据,然后单击页面底部的“下一步”按钮,在第二页上抓取一些数据,单击“下一步”按钮等,直到最后一页,在那里不再可能单击“下一步”(因为没有“下一步”)。 我想尽可能使代码通用,而不是事先指定要做的点击次数。根据这个问题(我如何让Selenium点击可变数量的“下一步”按钮?),我有下面的代码。Python不会报告任何错误,但是程序会在第一次迭代之后停止

  • 我正在从分页的网页中抓取数据,一旦我抓取完一页,我需要单击下一个按钮并继续抓取下一页。一旦我抓取了所有页面并且下一个按钮不再存在,我就需要停止。下面包含我需要单击的“下一步”按钮周围的html。 我尝试过在类和链接文本上选择,但在我目前的尝试中,这两种方式都不适合我。 我的代码的2个例子: 我在网上找到的所有解决方案都不起作用,并且主要以以下错误结束: 如果错误代码的其余部分对审查有帮助,请告诉我

  • 嗨,我是一个网络抓取新手,一直在尝试使用Selenium用python抓取论坛 我想让Selenium点击"下一步",直到最后一页,但我不知道如何打破循环。 当我通过部分链接找到下一个按钮时,自动单击将继续到下一个线程,例如page1- 当我按类名找到下一个按钮时,自动单击将在到达最后一页时单击“prev”按钮 我的问题是: 我应该使用哪个定位器?(按类还是按部分链接或任何其他建议? 如何打破循环

  • 问题内容: 我正在尝试使用selenium和python 在该特定网站上单击以查看更多信息。这就是我测试的方式,并且出现以下错误 这是可行的: 我想念什么? 问题答案: 这是一个非常简单的运行代码段,该代码段使用XPATH查找按钮“ Se flere”。