Selenium Webdriver - 未找到元素Javascript生成的菜单

时间:2013-07-26 02:37:12

标签: javascript selenium selenium-webdriver selenium-firefoxdriver

我有这个Javascript生成的菜单。我已经尝试使用xpath找到这个菜单但是有一个错误'NoSuchElemetFound'。我的目标是按下javascript生成的菜单或执行菜单命令(就像点击菜单一样真实)。

菜单位于隐藏的div标签中。

以下是此javascript菜单调用的命令:

parent.navFrame.gotoURL('url');

以下是我当前不起作用的代码:

WebElement menu = driver.findElement(By.xpath("html/body/span/div[11]/div/div"));
WebElement parentMenu = driver.findElement(By.xpath("html/body/table/tbody/tr/td[6]/a/img"));
Actions builder = new Actions(driver);
builder.moveToElement(parentMenu).moveToElement(menu).click().build().perform();

和这个

        Actions builder = new Actions(driver);
        ((HasInputDevices) driver).getMouse();
        builder.moveToElement(driver.findElement(By.xpath("html/body/table/tbody/tr/td[6]/a/img"))).build().perform();
        driver.findElement(By.xpath("html/body/table/tbody/tr/td[6]/a/img")).isSelected();
        Thread.sleep(1000L);    
        builder.moveToElement(driver.findElement(By.xpath(".//*[@id='menuItem101']"))).build().perform();
        driver.findElement(By.xpath(".//*[@id='menuItem101']")).click();
        Thread.sleep(1000L);

请帮帮我。感谢

3 个答案:

答案 0 :(得分:3)

我已经看到webdriver无法输入隐藏字段,因此可能无法点击隐藏元素。

如果是这种情况,可能的解决方法是执行javascript

((IJavaScriptExecutor)driver).ExecuteScript("$('#theDivInQuestion').click()");

上面的示例需要JQuery,但如果页面上没有JQuery,则可以将其转换为常规java脚本

答案 1 :(得分:0)

  

菜单位于隐藏的div标签中。

如果该元素被隐藏,则WebDriver无法点击

答案 2 :(得分:0)

即使菜单被隐藏,您也可以通过以下代码段点击它。

WebElement we = driver.findElement(By.xpath(xpathtotheELEMENT));
JavascriptExecutor executor = (JavascriptExecutor)driver;
executor.executeScript("arguments[0].click();", we);