向下滚动菜单并单击一个元素,然后单击错误的元素

时间:2019-02-24 05:36:35

标签: java selenium

在我的Web驱动程序测试中,我向下滚动菜单项列表并单击它。但是我观察到的是,它实际上导航到错误的链接,这意味着单击菜单顶部的某些菜单项会产生效果。为什么会这样?

// Click menu button that launches menu.
driver.findElement(By.className("menuButton")).click();

// Scroll down the menu.
new Actions(driver)
    .moveToElement(driver.findElement(By.className("navMenu")))
    .click()
    .sendKeys(Keys.PAGE_DOWN)
    .perform();

// Find and click a menu item now visible.
new Actions(driver)        
    .moveToElement(driver.findElement(By.linkText("bottom menu item")))
    .click()
    .perform();

2 个答案:

答案 0 :(得分:0)

请确保没有其他底部菜单项以相同的“底部菜单项”文本开头并放置在元素之前。

如果单击本身不起作用,您还可以尝试使用Javascript和scrollIntoView方法滚动:

JavascriptExecutor js = (JavascriptExecutor) driver;

// Click menu button that launches menu.
driver.findElement(By.className("menuButton")).click();

driver.findElement(By.className("navMenu")).click();

// Find and click a menu item now visible.
WebElement bottomMenuItem = driver.findElement(By.linkText("bottom menu item"));
js.executeScript("arguments[0].scrollIntoView(true)", bottomMenuItem);
bottomMenuItem.click();

答案 1 :(得分:0)

步骤1.单击菜单按钮以启动菜单。

driver.findElement(By.className("menuButton")).click();
driver.findElement(By.className("navMenu")).click();

第2步。

WebElement bottomMenuItem = driver.findElement(By.linkText("bottom menu item"));
JavascriptExecutor js = (JavascriptExecutor) driver;
js.executeScript("arguments[0].click()", bottomMenuItem);

注意-“底部菜单项”之前可能会有微秒的延迟。因此,在某些时候可能无法单击“底部菜单项”。因此,您可能需要等待一秒钟,以使此操作更可靠,而不会在将来遇到失败。