一尘不染

WebDriver和C#-NoSuchElement异常

selenium

我有以下代码从给定列表中选择一个选项,它通常可以正常工作,但有时会失败,并在第二个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);
    }

阅读 291

收藏
2020-06-26

共1个答案

一尘不染

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

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

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

2020-06-26