如何在Selenium的主菜单上选择并单击鼠标上的子菜单2

如何在Selenium的主菜单上选择并单击鼠标上的子菜单2,selenium,selenium-webdriver,Selenium,Selenium Webdriver,如何在下面给出的菜单中选择并单击鼠标悬停在主菜单上的子菜单2 菜单子菜单1子菜单2 我尝试使用下面给出的代码,但无法选择子菜单2。请帮助提供线索 Actions actions = new Actions(driver); WebElement menuHoverLink = driver.findElement(By.cssSelector("#access > ul > li > a")); actions.moveToElement(menuHoverLink); We

如何在下面给出的菜单中选择并单击鼠标悬停在主菜单上的子菜单2

  • 菜单
    • 子菜单1
    • 子菜单2

我尝试使用下面给出的代码,但无法选择子菜单2。请帮助提供线索

Actions actions = new Actions(driver);

WebElement menuHoverLink = driver.findElement(By.cssSelector("#access > ul > li > a"));
actions.moveToElement(menuHoverLink);
WebElement subLink = driver.findElement(By.cssSelector("#access > ul > li > ul > li > a"));
actions.moveToElement(subLink);
actions.click();
actions.perform();

看到您的主菜单正在使用鼠标悬停功能打开,对于子菜单,您只需要单击所需的链接,所以您不需要在子菜单链接上执行鼠标悬停。您可以执行以下操作:

Actions actions = new Actions(driver); WebElement menuHoverLink = driver.findElement(By.cssSelector("#access > ul > li > a")); actions.moveToElement(menuHoverLink).build().perform(); WebElement subLink = driver.findElement(By.cssSelector("#access > ul > li > ul > li > a")); subLink.click(); 动作动作=新动作(驱动); WebElement menuOverlink=driver.findElement(By.cssSelector(“#access>ul>li>a”); actions.moveToElement(menuOverlink.build().perform(); WebElement子链接=driver.findElement(By.cssSelector(“#access>ul>li>ul>li>a”); 单击();
这将解决您的问题。

我得到的解决方案如下:

Actions actions = new Actions(driver);
WebElement menuHoverLink =  driver.findElement(By.cssSelector("#access  > ul > li:first-child> a"));

actions.moveToElement(menuHoverLink).build().perform();

By submenucss= By.cssSelector(("#access> ul> li:first-child > ul>  li:last-child a"));

WebDriverWait wait1 = new WebDriverWait(driver, 10);
wait1.until(ExpectedConditions.presenceOfElementLocated(submenucss));
WebElement submenu= driver.findElement(submenucss);
submenu.click();

既然子链接实际上是链接,为什么不使用LinkText方法查找元素,然后单击它?为什么还要将鼠标放在子菜单上?需要吗?只需将鼠标放在主菜单上,然后单击子菜单2,如果您有多个
  • ,感谢您的宝贵提示。但是,我在WebElement subLink=driver.findElement(By.cssSelector(“nav#access ul li a”)中查找元素时遇到问题。并收到错误消息“元素当前不可见”。我甚至尝试使用WebElement subLink=driver.findElement(By.linkText(“子菜单2”));
      可能的解决方案是什么。请分享您的想法。您不想使用XPath吗?如果不想,您可以使用此CSS选择器识别您的2个子菜单
      导航#访问:第n个孩子(2)>a
      ,谢谢您的回复。我不再对CssSelector有任何问题,但我无法选择子菜单2,但我可以选择带有以下代码的主菜单,操作操作=新操作(驱动程序);WebElement menuOverlink=driver.findElement(By.cssSelector(“#access>ul>li:first child>a”);actions.moveToElement(menuOverlink.build().perform();[问题在于子菜单不弹出]WebElement子链接=driver.findElement(By.cssSelector(“#access>ul>li:first child>ul>li:last child a”);单击();