OpenQA.Selenium.WebDriverTimeoutException - C#Selenium(按钮点击)

时间:2017-05-29 09:23:34

标签: c# selenium

按钮单击会抛出异常:

OpenQA.Selenium.WebDriverTimeoutException

我尝试使用wait.Until(),但没有工作。

wait1 = new WebDriverWait(driver, TimeSpan.FromMinutes(2));
IWebElement okBtn;

okBtn = wait1.Until<IWebElement>((d) =>
    {
        try
        {
            okBtn = wait1.Until<IWebElement>((e) =>
            {
                try
                {
                    IWebElement element = e.FindElement(By.XPath("//*[@id='btnOk']"));
                    if (element.Displayed)
                    {
                        return element;
                    }
                }

                catch (NoSuchElementException) { }
                catch (StaleElementReferenceException) { }

                return null;
            });
            MouseClick(driver, okBtn);
        }

        catch (WebDriverTimeoutException) { }
        catch (WebDriverException) { }

        return null;
    });
MouseClick(driver, okBtn);

相同的HTML代码:

<input type="button" value="OK" id="btnOK" onclick="ButtonClick(event);" class="btnnormal" accesskey="x" style="margin: 5px; width: 65px;">

2 个答案:

答案 0 :(得分:0)

在我看来,就像你的FindElement找到了与你在HTML代码中显示的元素不同的元素。

尝试将其更改为:

e.FindElement(By.XPath("//*[@id='btnOK']"));

答案 1 :(得分:0)

试试这段代码:

wait1.Until(ExpectedConditions.ElementToBeClickable(By.Id("btnOK")));
okBtn = driver.FindElement(By.Id("btnOk"));
MouseClick(driver, okBtn);