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