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

Selenium Webdriver - Element not found Javascript Generated Menu

本文关键字:菜单 Javascript Webdriver- 元素 Selenium      更新时间:2023-09-26

我有一个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);

请帮帮我。谢谢

我已经看到webdriver不能在隐藏字段中键入,所以也可能是不能单击隐藏元素的情况。

如果是这种情况,一个潜在的解决方法是执行javascript

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

上面的例子需要JQuery,但如果JQuery在页面上不可用,则可以将其转换为常规java脚本

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

如果元素被隐藏,则WebDriver无法单击它。

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

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