当前位置: 首页 > 面试题库 >

IE的selenium悬停元素

燕鸿波
2023-03-14
问题内容

我有一个HTML div标签,并且在div内有一个元素,当鼠标进入其边界时会出现在其中。现在,我要单击在鼠标进入或悬停时可见的元素。

问题:该元素开始闪烁。浏览器:IE8

我正在使用下面的代码

   IWebElement we = addToBasket.FindElement(By.Id("MyBox"));
   action.MoveToElement(we).MoveToElement(driver.FindElement(By.Id("plus-icon"))).Click().Build().Perform();

有什么建议为什么它会闪烁吗?


问题答案:

由于IE驱动程序的一个称为“永久悬停”的功能,该元素闪烁。此功能的价值可疑,但是由于IE(浏览器,而不是驱动程序)在使用API
时响应WM_MOUSEMOVE消息的大脑失效方式,因此此功能是必需的SendMessage

您有几种选择。您可以使用以下代码关闭永久性悬停:

InternetExplorerOptions options = new InternetExplorerOptions();
options.EnablePersistentHover = false;
IWebDriver driver = new InternetExplorerDriver(options);

请注意,尽管这将使您在尝试悬停时受到物理鼠标光标在屏幕上的位置的影响。如果那是不可接受的,则可以采用其他两种方法。首先,您可以关闭所谓的“本机事件”,这将导致驱动程序仅依赖于合成的JavaScript事件。由于仅依靠JavaScript来合成鼠标事件,因此这种方法有其自身的陷阱。

InternetExplorerOptions options = new InternetExplorerOptions();
options.EnableNativeEvents = false;
IWebDriver driver = new InternetExplorerDriver(options);

最后,您可以从使用默认的SendMessageWindows API
迁移到使用更正确的SendInputAPI的代码。这是通过RequireWindowFocus属性完成的。它的缺点是鼠标输入是在系统中以非常低的级别注入的,这要求IE窗口成为系统上的前台窗口。

InternetExplorerOptions options = new InternetExplorerOptions();
options.RequireWindowFocus = true;
IWebDriver driver = new InternetExplorerDriver(options);

最后一点,请不要尝试一次设置所有这些属性。选择一种方法并坚持下去。它们中的几个是互斥的,并且它们之间的交互是不确定的。



 类似资料:
  • 问题内容: 我有一个HTML 标签,并且在div内有一个元素,当鼠标进入其边界时会出现在其中。现在,我要单击在鼠标进入或悬停时可见的元素。 问题:元素开始闪烁。浏览器:IE8 我正在使用下面的代码 有什么建议为什么它会闪烁吗? 问题答案: 由于IE驱动程序的一个称为“永久悬停”的功能,该元素闪烁。此功能的价值可疑,但由于IE(浏览器,而非驱动程序)在使用API 时对消息做出反应的大脑失效方式,因此

  • 我的代码在FF中运行良好,但如果我尝试使用IE,它会闪烁。 下面是我的代码 一旦动作移动到元素行被触发,它似乎通过了循环,或者鼠标一直在链接文本“abc”上移动。由于它闪烁,因此无法移动到下一个元素。我正在使用线程。由于悬停到元素后会显示其他项目,因此睡眠通常需要1秒左右的时间才能显示 我检查了以下链接,声明 出现这种情况的普遍理论是,IE在其事件循环期间正在进行某种类型的命中测试,这导致它在物理

  • Selenium WebDriver:2.35。火狐: 25.0 我想将鼠标移到一个div上,这将使隐藏的图像变得可见,然后单击该图像。我读过这里,这里,这里和其他的帖子。一般的答案是采取以下形式: 但是,这在下面的示例中不起作用: html: Javascript/jquery: CSS: C#测试代码: 问题是没有触发click事件。此外,该元素保持可见,因此任何后续鼠标悬停都会将其隐藏。当然

  • 问题内容: 我的页面布局涉及很多绝对位置和z索引位置,因此有很多元素相互重叠。 元素之一仅包含文本,它悬停在许多其他事物之上。 在该元素下方,有几个应用了CSS悬停伪类的元素。 当鼠标经过包含文本的元素时,我想以某种方式使下面的Element响应鼠标的存在并激活伪类样式。 有没有什么样式的元素,以便它允许悬停通过它传递给下面的任何元素? 使用JavaScript并不是很难,但是为了使事情尽可能简单

  • 我正在尝试单击一个按钮来启动文件下载。根据我所看到的,该按钮具有悬停功能。我尝试通过所有单击。 页面的HTML块, 悬停前按钮的类是, 悬停时按钮的类是, 通过开发人员窗口选择按钮,并通过路径从 我得到了如下结果, CSS路径, XPath, 我试过的代码, 而且,

  • 如果孩子在焦点中(已被点击),我怎么能失去父母的悬停状态?我有一个菜单箭头(用OPEN代替了它,以减少代码),它在悬停状态下打开我的菜单和菜单项,当我单击它们时,菜单项就会聚焦。在菜单项点击后,我希望能够失去对我父母的关注,这样菜单就会消失。 如果可能的话,我会尽量避免使用javascript,这是我最好的尝试... 这是我的html null null 编辑 我在一个单页应用程序上使用Angul