如何在页面重新加载时突破循环

时间:2017-11-19 12:23:45

标签: c# selenium

我在下面有这个代码,它通过面板中的所有链接,一旦找到相关链接,它就会点击它。我遇到的问题是,当我选择链接时,页面会在显示新页面之前重新加载。所以我想添加一个中断来摆脱循环,因为如果我不添加它,那么它将给我一个元素没有附加到文档错误。我相信发生此错误是因为它仍在尝试在页面重新加载时循环链接。

然而,当添加中断并运行测试时,没有任何反应,因为它没有选择链接。如何在点击链接后突破循环?

我不需要在页面重新加载后返回循环,我只是想摆脱循环,因为循环完成了找到链接并单击的工作。

    public void SelectHomepageSearchPanelLink(string linkText)
    {
        var searchPanelLinks = _driver.FindElements(HomepageResponsiveElements.HomepageSearchPanelLinks);

        foreach (var searchPanelLink in searchPanelLinks)
        {
            if (searchPanelLink.Text == linkText)
            {
               searchPanelLink.Click();
               break;
            }
            else
            {
                throw new Exception($"{linkText} link not found by the responsive homepage search panel");
            }
        }
    }

1 个答案:

答案 0 :(得分:0)

试试这个:

public void SelectHomepageSearchPanelLink(string linkText)
    {
        var searchPanelLinks = _driver.FindElements(HomepageResponsiveElements.HomepageSearchPanelLinks);
        var linkToClick;
        foreach (var searchPanelLink in searchPanelLinks)
        {
            if (searchPanelLink.Text == linkText)
            {
               linkToClick = searchPanelLink;
               break;
            }
            else
            {
                throw new Exception($"{linkText} link not found by the responsive homepage search panel");
            }
        }
        linkToClick.Click();
}