一尘不染

如何避免在Selenium Click()上使用MouseOver

selenium

在我的一个Selenium测试案例中,我有一个问题,我不想拥有MouseOver效果。这是我的工作:

  1. 点击“登录”按钮(页面右上方)
  2. 等待页面加载
  3. 单击搜索结果中的“购买”按钮(页面右中角)。

问题是,在“登录”和“购买”之间的中间存在一个带有MouseOver效果的“购物篮”链接。因此,当我在“登录”按钮上调用Click(),然后在“购买”按钮上调用时,我会触发MouseOver,这将打开购物车的一个小预览,这会将“购买”按钮隐藏在其后面。

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

有人知道吗?


阅读 330

收藏
2020-06-26

共1个答案

一尘不染

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

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();
    }
}
2020-06-26