如何防止错误:元素当前不是难以处理的,可能不会被操纵?

时间:2017-01-15 21:45:59

标签: selenium selenium-webdriver

使用C#我试图像这样替换输入框中的值

        for (int second = 0; ; second++)
        {
            if (second >= 60) Assert.Fail("timeout");
            if (second > 15) break;

         Thread.Sleep(1000);
      }

        driver.FindElement(By.Id("input1")).Clear();
        driver.FindElement(By.Id("input1")).SendKeys(xxxx");

但是我在clear()行上得到错误“元素当前不是难以处理并且可能不被操作”,为什么这样,虽然我等到页面加载?

HTML

<input class="valid" id="input1" name="input1" value="http://dddd" nametemplate="url_to_5D" type="text">

1 个答案:

答案 0 :(得分:6)

您可以尝试等待它:

WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromSeconds(10));
IWebElement element = wait.Until(ExpectedConditions.ElementExists(By.Id("input1")));

然后:

element.Clear();
element.SendKeys("xxxx");

让你的司机在任何行动之前等待:

driver.Manage().Timeouts().ImplicitlyWait(TimeSpan.FromSeconds(10));

如果您使用上述代码,则可以删除所有Thread.Sleep(1000)操作。