元素不可见,因为菜单和子菜单都隐藏了



我想打开临界信息,然后在子菜单打开时点击'实时得分'菜单,点击'桌面记分牌'。

但是问题是实时得分菜单是隐藏的div下面。这个div位于td

"您可以查看页面结构以获取详细信息"

所以当我尝试使用driver.findElementBy("xpath")单击菜单元素时,我得到了元素不可见的异常。

所以我直接使用了开发人员mopen('m2')使用的javascript,它可以打开菜单,但在此之后,当我执行命令以找到子菜单元素时再次得到相同的错误"元素不可见异常"。

尝试通过执行jscript使div可见。

我使用的代码:

FirefoxDriver d1=new FirefoxDriver();
    d1.get("http://www.cricinfo.com");
    ((JavascriptExecutor) d1).executeScript("mopen('m2')");
    ((JavascriptExecutor) d1).executeScript("document.getElementById('m2').style.visibility='visible';");
    ((JavascriptExecutor) d1).executeScript("document.getElementById('m2').style.display='block';");
    d1.manage().timeouts().implicitlyWait(30,TimeUnit.SECONDS);
    d1.findElementByXPath("//*[@id='mgDdRht']/tbody/tr[3]/td/a").click();

也尝试使用动作类,但一切都是徒劳的,帮助是非常感激

您应该能够使用Action链做到这一点:

Actions builder = new Actions(d1);
Action clickSubMenu = builder.moveToElement(d1.findElement(By.cssSelector(".Nav td:nth-child(2).navLinks")))
    .moveToElement(d1.findElement(By.cssSelector("#m0 td:nth-child(1)#mgDd>table:nth-child(1)>tbody:nth-child(1) td:nth-child(2).PopupTabs")))
    .click(d1.findElement(By.xpath("//*[@id='mgDdRht']/tbody/tr[3]/td/a"))).build();
clickSubMenu.perform();

我在c#中测试了这个,它对我有效。我把它翻译成Java,但我可能犯了一个语法错误。对不起,如果我有。

我发现我需要移动到系列。然后我不得不转向Series——下拉版本,因为Series的下拉版本与非下拉版本是一个不同的元素。然后我可以移动到西印度群岛链接,点击它。

最新更新