链接在调试模式下是可点击的,而不是在运行模式下

问题描述 投票:0回答:1

这是我用来点击菜单中链接的代码

public static void ClickOnALink(IWebDriver driver, string linkText)
    {
        if (driver != null)
        {
            IList<IWebElement> links = driver.FindElements(By.TagName("a"));
            Console.WriteLine("Clicking on the link which has the text");
            foreach (var link in links)
            {
                if (link.Text == linkText)
                {                       
                    driver.Manage().Timeouts().ImplicitWait = TimeSpan.FromSeconds(30);
                    link.Click();
                    break;
                }
            }
        }
    }

我发送菜单项文本。当我在调试模式下运行时,测试通过但在运行模式下菜单项没有被点击。有谁知道我在这里做错了什么?

我尝试在代码中各处放置等待消息,以便它等待整个页面加载。我还在运行模式下检查了链接文本,看看它是否与我提供的链接文本匹配

c# selenium-webdriver hyperlink webdriverwait
1个回答
0
投票

尝试更改您的方法以使用显式等待元素在单击之前显示和启用

 public static void ClickOnALink(IWebDriver driver, string linkText)
        {
            if (driver != null)
            {
                IList<IWebElement> links = driver.FindElements(By.TagName("a"));
                Console.WriteLine("Clicking on the link which has the text");
                foreach (var link in links)
                {
                    if (link.Text == linkText)
                    {
                        WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromSeconds(20));
                        wait.Until(condition =>
                        {
                            return link.Displayed && link.Enabled;
                        });
                        link.Click();
                        break;
                    }
                }
            }
        }
© www.soinside.com 2019 - 2024. All rights reserved.