Selenium单击以展开菜单,而不是单击它后面的href

时间:2018-03-30 08:53:31

标签: selenium

我试图点击一个菜单,而不会触发其" href":

<a class=" mnav mnavt2 uif_link" href="/xxx/xxx/abc">Menu</a>`

以下是我的Selenium代码:

click("//a[text()='Menu']")

点击菜单并触发&#34; href&#34;会发生什么?我该如何避免这样做?

我尝试过clickMouse,但它并没有扩展菜单。

4 个答案:

答案 0 :(得分:0)

我们可以使用&#34;鼠标 - 右键单击​​&#34;。它将点击该元素而不触发href。请使用下面的行,如果您需要进一步的帮助,请告诉我。

driver.findElement(By.xpath("your xpath goes here")).sendKeys(Keys.RIGHT);

答案 1 :(得分:0)

如果在这个菜单上实现了一些悬停功能。然后链接使用此方法:

WebElement element=driver.findElement(By.xpath("//a[contains(@href,'/xxx/xxx/abc')]"));

    String mouseOver = "var evObj = document.createEvent('MouseEvents');" +
                        "evObj.initMouseEvent(\"mouseover\",true, false, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);" +
                        "arguments[0].dispatchEvent(evObj);";

((JavascriptExecutor) driver).executeScript(mouseOver, element);

如果没有悬停功能,则应该有一些箭头按钮或某些东西可以扩展菜单而不会触发菜单链接。为此,我需要菜单链接周围的HTML以及菜单的屏幕截图。

答案 2 :(得分:0)

根据您的问题,我假设以下内容:

  • 菜单项目包含href属性且可点击。
  • 菜单项目还包含您需要展开的子菜单项目。

您的实际用例可能会 MOUSE HOVER 菜单项目,并展开子菜单项目。< / p>

要实现这一目标,您可以采用以下方法:

  • 操作类用于鼠标悬停,如下所示:

    • Java方法

      import org.openqa.selenium.interactions.Actions;
      
      Actions act = new Actions(driver);
      //Use any one from the following 3 Locator Strategies
      WebElement elem = driver.findElement(By.linkText("Menu"))
      //WebElement elem = driver.findElement(By.cssSelector("a.mnav.mnavt2.uif_link[href='/xxx/xxx/abc']"))
      //WebElement elem = driver.findElement(By.xpath("//a[@class='mnav mnavt2 uif_link' and @href='/xxx/xxx/abc']"))
      act.moveToElement(elem).perform();
      

答案 3 :(得分:0)

所以伙计们,我使用了弗兰克的建议。