当前位置: 首页 > 知识库问答 >
问题:

使用selenium webdriver java将鼠标悬停在主菜单上时不显示子菜单

令狐献
2023-03-14

我使用火狐浏览器。我尝试鼠标悬停在菜单上,但不显示其相应的子菜单,当悬停在主菜单上使用selenium网络驱动程序。它只选择菜单“索赔”,并仅在那里停止。它不执行testScript进一步,因为鼠标悬停子菜单不显示。所以呢

超文本标记语言代码

    <body>
<div id="div_LockPane" class="LockOff"/>
<div id="claim-newclaimsearch" class="page-wrap" data-menu-hovered="">
<div class="header">
<div class="row">
<div class="column small-12 large-2 logo">
<nav class="column small-12 large-10 navigation-container" role="navigation">
<ul class="main-menu">
<li>
<li class="active">
<a href="/Menu/Claims">
<div class="menu-icon">
<img src="/content/common/images/menu-icons/claims.png"/>
</div>
<span class="name">Claims</span>
</a><div class="arrow-container">
<div class="sub-menu-container">
<div class="row sub-menu">
<div class="column title-side">
<h2 class="title">Claims</h2>
</div>
<div class="column points-side">
<ul>
<li class="active">
<a href="/Claim/NewClaimSearch">New Claims</a>
</li>
<div class="search-page">
<div id="search-advanced-tools" data-state="collapsed">
<div class="row">
<div class="column">
<h2 class="action-title">New Claims</h2>
</div>
</div>

我必须悬停在菜单"索赔"和选择子菜单"新索赔"

在此处输入图像描述

硒代码

//private final By PRODUCT_CATEGORY = By.linkText("Claims");
private final By PRODUCT_CATEGORY= By.xpath("//a[contains(.,'Claims')]");
private final By PRODUCT_SUBCATEGORY = By.linkText("NEW CLAIMS");

@Test()
void testLogincase2() throws Exception{

    Thread.sleep(2000);

    WebElement hoverBtn = driver.findElement(PRODUCT_CATEGORY);
            System.out.println("click on Claims");
            Thread.sleep(2000);
            Actions action = new Actions(driver);
            Thread.sleep(2000);
            action.moveToElement(hoverBtn).perform();
            Thread.sleep(1000);

            WebElement subElement = driver.findElement(PRODUCT_SUBCATEGORY);
            Thread.sleep(1000);
            action.moveToElement(subElement);
            System.out.println("No claims");
            Thread.sleep(2000);
            action.click();
            Thread.sleep(2000);
            action.perform();

    }

如下图所示,驾驶员检测到菜单“声明”,因为它的颜色比其他菜单的颜色稍暗。但子菜单并不像我在上图中显示的那样显示。鼠标悬停事件不起作用

在此处输入图像描述

共有2个答案

柏麒
2023-03-14

释放你的第一个动作,然后在第二个动作中使用它。

action.moveToElement(hoverBtn).perform();

这里不使用release()方法,但在下一步中使用此操作。这可能是你的问题之一。因此,对于第二次单击,尝试创建新的操作实例。

第二,对于下一次点击,无需使用动作,我想你可以通过使用普通点击功能来实现这一点,我的意思是:

driver.findElement(PRODUCT_SUBCATEGORY).click();

并正确地调试您的代码,以便您的元素定位器是否正常。

花玄裳
2023-03-14

一旦你在鼠标悬停上得到菜单,就不需要再使用操作了。只需点击子菜单。鼠标悬停后尝试下面的代码

        WebElement subElement = driver.findElement(PRODUCT_SUBCATEGORY);
        subElement.click();
 类似资料:
  • 我正在尝试将鼠标悬停在动画菜单上并在菜单中选择一个项目。我尝试先通过xpath在菜单上执行悬停,然后通过xpath执行单击菜单项,如下所示。 我有个例外 org.openqa.selenium.interactions。MoveTargetOutOfBoundsException:元素内的偏移量无法滚动到视图中 我还尝试将这些行为链接如下: 这也会引发相同的异常。 有什么想法来实现动画菜单项的点击

  • 问题内容: 当有人将鼠标悬停在元素上时,我想显示一个div ,但是我想在CSS中而不是在JavaScript中执行此操作。您知道如何实现吗? 问题答案: 您可以执行以下操作: 这使用相邻的兄弟选择器,是the下拉菜的基础。 HTML5允许锚元素包装几乎所有内容,因此在这种情况下,该元素可以成为锚的子元素。否则原理是相同的-使用伪类更改另一个元素的属性。

  • 本文向大家介绍Bootstrap 中下拉菜单修改成鼠标悬停直接显示 原创,包括了Bootstrap 中下拉菜单修改成鼠标悬停直接显示 原创的使用技巧和注意事项,需要的朋友参考一下 最近公司做网页用到Bootstrap的菜单功能,要实现鼠标悬停显示二级菜单,于是就研究了一下,大概有两种方法。 第一种方法:修改样式表 实际上比较简单,只需要加一个css设置下hover的状态,把下拉菜单设置成block

  • 我有一个应用程序,我想在

  • 我自己处理悬停事件来添加一个三角形指针和一个水平对齐的子菜单栏。当单击顶部菜单时,它可以很好地显示和导航到子菜单。问题是在悬停期间,试图将鼠标移动到子菜单时,子菜单栏会消失。 TIA 代码: null null

  • 问题内容: 我想让我的Bootstrap菜单在悬停时自动下拉,而不是必须单击菜单标题。我也想丢掉菜单标题旁边的小箭头。 问题答案: 我基于最新的(v2.0.2)Bootstrap框架创建了一个纯悬停下拉菜单,该框架具有对多个子菜单的支持,并认为我会将其发布给以后的用户: