如何避免Selenium上的MouseOver Click()

时间:2016-02-09 13:55:53

标签: c# selenium selenium-webdriver

在我的一个Selenium测试用例中,我遇到了一个问题,即我不想拥有MouseOver效果。这就是我的工作:

  1. 点击“登录”按钮(页面右上角)
  2. 等待页面加载
  3. 点击搜索结果中的“购买”按钮(页面中间右侧)。
  4. 问题是,在“登录”和“购买”之间的中间有一个带有MouseOver效果的“购物篮”链接。因此,当我在“登录”按钮上调用Click()然后在“购买”按钮上调用时,我会触发MouseOver,它会打开购物车的小预览,隐藏“买”按钮。

    适用于Firefox和MSIE。在Chrome中,我没有这种效果。

    任何人都知道吗?

2 个答案:

答案 0 :(得分:0)

安德鲁是对的。如果没有手动发生,那么它也不应该在这里发生。

您也可以尝试点击JavascriptExecutor

WebElement element= driver.findElement(By.xpath("Your Xpath"));

JavascriptExecutor executor = (JavascriptExecutor) driver;
executor.executeScript("arguments[0].click();", element);

下面是一些使用C#

进行操作的示例

Execute JavaScript using Selenium WebDriver in C#

希望它会对你有所帮助:)。

答案 1 :(得分:0)

我仍然不知道真正的解决方案,但这是我正在使用的肮脏的解决方法:

public static void Click(this IWebElement element, TestTarget target)
{
    if (target.IsInternetExplorer)
    {
        var actions = new Actions(target.Driver);
        actions.MoveToElement(element).Perform();
        Thread.Sleep(500); // wait for the mouseover popup to appear
        element.SendKeys(Keys.Escape); // to close the popup (if any)
        actions.MoveToElement(element).DoubleClick().Perform(); // simple click is sometimes not enough in IE
    }
    else
    {
        element.Click();
    }
}