Selenium .NET Click()不起作用

时间:2017-01-28 19:15:08

标签: .net selenium internet-explorer internet-explorer-11

我试图点击标准的HTML按钮。驱动程序正确定位元素,Click()方法毫无例外地完成,但是没有在浏览器上调用点击。

以下示例只会打开Goog​​le主页并点击(或无法点击) I feel lucky 按钮。

private static readonly InternetExplorerOptions INTERNET_EXPLORER_OPTIONS = new InternetExplorerOptions
{
    IgnoreZoomLevel = true
};

[Test]
public void Clicking()
{
    using (var driver = new InternetExplorerDriver(INTERNET_EXPLORER_OPTIONS))
    {
        driver.Navigate().GoToUrl("http://www.google.com");

        driver.FindElement(By.Name("btnI")).Click();

        Assert.That(driver.Url, Is.EqualTo("https://www.google.com/doodles"));
    }
}

我使用的是32位版本的IEDriverServer.exe

我正在使用IE版11.576.14393.0

更新版本:11.0.38

其他解决方案具有相同(非)影响,但是,我发现了一个有用的wait条件ElementToBeClickable

1 个答案:

答案 0 :(得分:0)

添加ExpectedConditions.ElementToBeClickable等待条件解决了问题。

[Test]
public void Clicking()
{
    using (var driver = new InternetExplorerDriver())
    {
        driver.Navigate().GoToUrl("http://www.google.com");

        var button = driver.FindElement(By.Name("btnI"));
        Assert.That(button.TagName, Is.EqualTo("input"));

        var wait = new WebDriverWait(driver, TimeSpan.FromSeconds(10));
        wait.Until(ExpectedConditions.ElementToBeClickable(button));
        button.Click();
        wait.Until(webDriver => webDriver.Url == "https://www.google.com/doodles");  // <==  wait until condition here
        Assert.That(driver.Url, Is.EqualTo("https://www.google.com/doodles"));
    }
}