Selenium webdriver:IE 11 element.Click()不起作用

时间:2015-07-30 14:16:23

标签: c# selenium selenium-webdriver webdriver internet-explorer-11

我试图找到任何解决方案但没有任何帮助我。

我有这个元素

<span data-lkd="GUI-411396" data-lkta="tc" data-lkda="title" class="panelbar_item" title="Hledat">Form</span>

在Selenium中我找到了

IWebElement form = GetElementAndWaitForEnabled(By.CssSelector("span[data-lkd=\'GUI-411396\']"));

这部分没问题。但如果尝试点击IE11中的这个元素没有任何事情发生

find.Click()

我尝试了一些解决方案:

driver.SwitchTo().Window(driver.CurrentWindowHandle);
find.SendKeys(Keys.Enter);
find.Click();

但没有任何事情发生。在Chrome和Firefox中,通常会点击元素。 如果我clik in其他元素例如按钮它适用于IE 11.但我需要点击这个元素。

我正在使用Selenium v​​2.46.0,IE 11(x86,x64)。

2 个答案:

答案 0 :(得分:2)

使用IE浏览器,你应该做的事总是多余的。试试这个“特殊”技巧:

IJavaScriptExecutor js = driver as IJavaScriptExecutor;
js.ExecuteScript("arguments[0].click();", find)

答案 1 :(得分:0)

看起来你正试图点击一个span元素。而不是使用解决方法来单击span元素并尝试获得所需的效果,请尝试检查它是否包含在锚元素或输入/按钮元素中。

顺便说一句,一个好的做法是记住始终将元素滚动到视图中,一个示例包装函数将是:

public static void clickElementAsUser(WebDriver driver, By by)
{
    WebElement element;

    try
    {
        element = driver.findElement(by);
        scrollElementIntoView(driver, element);
        Thread.sleep(100); //Wait a moment for the element to be scrolled into view
        element.click();
    }
    catch(Exception e) //Could be broken into multicatch
    { 
        //Do Something
    }
}

public static void scrollElementIntoView(WebDriver driver, WebElement element)
{
    try
    {
        ((JavascriptExecutor)driver).executeScript("arguments[0].scrollIntoView(true);", element);
    }
    catch(Exception e)
    {
        //Do Something
    }
}

如果您发布了一个代码范围的小代码示例,我可能会进一步提供帮助。古德勒克!