如何在selenium webdriver中处理“MoveTargetOutOfBoundsException”

时间:2016-03-14 13:38:00

标签: selenium selenium-webdriver

当我使用moveToElement时,我收到错误“ org.openqa.selenium.interactions.MoveTargetOutOfBoundsException:元素内的偏移量无法滚动到视图中:(0,0):命令持续时间或超时:34毫秒”。下面的代码用于

WebDriverWait waitForEditI = new WebDriverWait(driver, 20);     
waitForEditI.until(ExpectedConditions.elementToBeClickable(editContactI));
Actions action = new Actions(driver);
    action.moveToElement(editContactI).moveToElement(editContactIEdit).click().build().perform();

和网络元素

@FindBy(how = How.CSS, using = "div#evy_aboutme_content_id08  div.evy_edit_overflow > div.evy_rltn_icon2 i")    
  WebElement  editContactI;

  @FindBy(how = How.CSS, using = "div#evy_aboutme_content_id08  div.evy_aboutme_education_content.ng-scope   a:nth-child(1)")   
 WebElement editContactIEdit;

如下图所示,首先我需要悬停i元素(以黄色圆圈标记)并单击编辑(黑色圆圈)。

enter image description here

我已经尝试了以下所有选项。但没有任何工作。它的位置是动态的。

JavascriptExecutor jse = (JavascriptExecutor)driver;
jse.executeScript("scroll(250, 0)");

Actions actions = new Actions(driver);
actions.keyDown(Keys.CONTROL).sendKeys(Keys.END).perform();

请帮帮我。

3 个答案:

答案 0 :(得分:0)

我会分开不同的行动。我会使用Actions进行悬停,然后执行“正常”click()

Actions builder = new Actions(driver);
builder.moveToElement(editContactI).perform();
driver.findElement(editContactIEdit).click();

答案 1 :(得分:0)

此解决方案适合我

((JavascriptExecutor)driver).executeScript("$('div#evy_aboutme_content_id08  div.evy_edit_overflow > div.evy_rltn_icon2 i').hover();");
    ((JavascriptExecutor)driver).executeScript("$('div#evy_aboutme_content_id08  div.evy_aboutme_education_content.ng-scope   a:nth-child(1)').click();");

答案 2 :(得分:0)

如果在IE浏览器中收到上述异常。请按照以下步骤操作:

  1. 返回IE并检查缩放比例是否设置为100%
  2. 如果将缩放级别设置为100%,并且您的网络应用仅在浏览器的一半中显示,则说明其分辨率问题,
  3. 转到您的桌面并更改屏幕分辨率:在我看来,1366 * 768有效。
  4. 现在返回IE浏览器,将缩放级别设置为100(它将根据屏幕分辨率重置)。
  5. 现在,请确保您的网络应用程序能够像在其他浏览器中一样显示。

最后再次运行您的代码,现在您应该不会看到此错误。 :)