我想打开临界信息,然后在子菜单打开时点击'实时得分'菜单,点击'桌面记分牌'。
但是问题是实时得分菜单是隐藏的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的下拉版本与非下拉版本是一个不同的元素。然后我可以移动到西印度群岛链接,点击它。