我有以下代码从给定列表中选择一个选项,它通常可以正常工作,但有时会失败,并在第二个if上出现NoSuchElement异常。我的印象是,如果找不到元素,它将再次回到循环中。我相信解释很简单……有人能启发我吗?

    public static void selectFromList(String vList, String vText, IWebDriver driver)
    {
        for (int sec = 0; ; sec++)
        {
            System.Threading.Thread.Sleep(2500);
            if (sec >= 10) Debug.Fail("timeout : " + vList);
            if (driver.FindElement(By.Id(ConfigurationManager.AppSettings[vList])).Displayed) break;
        }
        new SelectElement(driver.FindElement(By.Id(ConfigurationManager.AppSettings[vList]))).SelectByText(vText);
    }

最佳答案

好吧,我是Java专家,所以我不会为您提供代码,而是为您提供算法:

  • 您的代码(我认为)应检查是否显示了该元素,如果没有显示,请再等待2,5秒
  • 失败的原因是,有时显示元素所需的时间超过前2.5秒。在这种情况下,检查是否显示该元素将引发异常

  • 因此,基本上,您应该在for循环中执行一些异常处理,并捕获该异常,而不执行任何操作。在Java中,它是由trycatch块完成的。但是因为我不了解C#,所以您必须找出用这种语言完成的工作

    关于c# - WebDriver和C#-NoSuchElementexception,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10899360/

    10-13 08:11