将鼠标悬停在Internet Explorer中后,无法单击“子菜单”链接

时间:2014-03-10 09:59:48

标签: selenium selenium-webdriver webdriver action

我必须点击子菜单链接,将鼠标悬停在主菜单上后显示。

下面的代码完全适用于Firefox:

Actions builder = new Actions(driver);
WebElement we = driver.findElement(By.id("menuMainContracts"));
builder.moveToElement(we).perform();
Thread.sleep(2000);
WebElement sublink = driver.findElement(By.id("mnuSubContracts"));
builder.moveToElement(sublink).click().build().perform();

但是在Internet Explorer中它没有点击子菜单链接,而是尝试点击主菜单本身。

它也没有显示任何错误消息。请帮助摆脱这个问题。

2 个答案:

答案 0 :(得分:0)

可能有两次机会。

1.您的应用程序前端设计可能会限制IE支持。可以使用一些奇怪或优雅的框架。

2.如果你能在手册中执行相同的操作,那么你需要有一个正确的方法。请尝试以下方法,

Actions builder = new Actions(driver);
WebElement we = driver.findElement(By.id("menuMainContracts"));
builder.moveToElement(we).build().perform(); // you have missed to build here !
Thread.sleep(2000);
WebElement sublink = driver.findElement(By.id("mnuSubContracts"));
builder.moveToElement(sublink).click().build().perform();

Actions builder = new Actions(driver);
WebElement we = driver.findElement(By.id("menuMainContracts"));
WebElement sublink = driver.findElement(By.id("mnuSubContracts"));  
builder.moveToElement(we).click().moveToElement(sublink).click().build().perform();

我还有其他一些建议,尝试在这些提前操作的中间调用Excepted条件。(在您的情况下,等待子菜单出现)。但我还没试过。这在技术上可能是致命的。尝试让社区公布结果。

答案 1 :(得分:0)

您可以使用此代码以编程方式将鼠标移出窗口区域。

         final int MAX_Y = 4;
         final int MAX_X = 4 ;

        Robot robot = null;
        try
        {
            robot = new Robot();
        } catch (AWTException e)
        {

        }
        Random random = new Random();
        robot.mouseMove(random.nextInt(MAX_X), random.nextInt(MAX_Y));