如何鼠标悬停然后需要单击选项卡--Selenium WebDriver

时间:2014-01-22 07:06:20

标签: java extjs selenium selenium-webdriver

enter image description here 在selenium webdriver上工作首先,我希望鼠标需要悬停到图像中显示的选项卡。从年龄解决时间。使用 Java

if(existsElement("ext-pr-backlog-evolution")==true){
WebElement menuHoverLink = driver.findElement(By.id("ext-pr-backlog-evolution"));// Problem in this line
actions.moveToElement(menuHoverLink).perform();//
JavascriptExecutor executor = (JavascriptExecutor)driver;// This is exactly opening the page
executor.executeScript("arguments[0].click();", driver.findElement(By.id("ext-pr-backlog-evolution") ));// This is exactly opening the page
Thread.sleep(6000);
}
else{
System.out.println("element not present -- so it entered the else loop");
}

这是HTML标记

<a id="ext-pr-backlog-evolution" class=" ext-pr-backlog-evolution" name="ext-pr-backlog-evolution" href="https://10.4.16.159/extranet_prbacklogevolutiontendency/reports/type/default/">Overview & Evolution</a>

在图片至问题报告(PR)中,鼠标在尝试点击概述和退出标签时正在移动故障单标签但概述和展开页面正在打开。它正是打开标签但没有悬停和点击。

2 个答案:

答案 0 :(得分:1)

如果元素不可见或未启用,则会出现此错误。

这是我的两点 1.如果您正在徘徊,然后正确使用硒,请检查元素是否可见或已启用。 2.或者使用JavascriptExecutor。它可以点击隐藏的元素而不打开它们。

(JavascriptExecutor(webdriver)).executeScript("document.getElementsById('ext-pr-backlog-evolution').click();");

答案 1 :(得分:1)

尽量避免使用硬编码睡眠,因为它会减慢您的测试速度。

如何使用隐式等待?

WebDriverWait wait = new WebDriverWait(driver, 10);
WebElement element = wait.until(ExpectedConditions.elementToBeClickable(By.id("someid")));

它的作用:

  1. 当元素存在时,继续进行测试
  2. 当元素不存在时(当站点很慢时),它将抛出超时。
  3. 这是更好的测试,所以你知道你的测试失败的原因

    此处有更多信息:http://docs.seleniumhq.org/docs/04_webdriver_advanced.jsp