【问题标题】:Selenium Webdriver Java Element Cannot be scrolled into viewSelenium Webdriver Java 元素无法滚动到视图中
【发布时间】:2013-05-29 22:03:00
【问题描述】:

大家下午好,这个问题一直让我考虑打我的笔记本电脑。在下面的代码中,我只是将鼠标悬停在下拉菜单上并从中选择一个链接。现在问题是我随机收到我选择的链接的“元素无法滚动到视图中”。大约 50% 的时间会发生这种情况,视觉上发生的情况是它悬停在下拉菜单上,然后屏幕跳下来切断菜单所在的位置并抛出错误。任何帮助将不胜感激。

WebDriverWait waitForDropDown = new WebDriverWait(driver, 5);
    waitForDropDown.until(ExpectedConditions.elementToBeClickable(By.partialLinkText("Create Test Case")));
    Action builder;
    Actions hover = new Actions(driver);
    WebElement objectOnScreen = driver.findElement(By.linkText("Test Lab"));
    hover.moveToElement(objectOnScreen);
    builder = hover.build();
    builder.perform();
    driver.findElement(By.partialLinkText("Create Test Case")).click();

【问题讨论】:

  • 所以我想我终于解决了这个问题。我在悬停后添加了另一个等待,此后它没有重现。
  • 仍然失败的划痕
  • 所以请阅读这是一个已知问题并且已经存在几年了,希望他们已经解决了这个问题。

标签: java selenium-webdriver


【解决方案1】:

链接是如何生成的?链接文本会改变吗?

我建议试试这个:

Actions hover = new Actions(driver);
WebDriverWait waitForDropDown = new WebDriverWait(driver, 5);
WebElement objectOnScreen = driver.findElement(By.linkText("Test Lab")); //Use a CSS locator, not link text
WebElement objectToClick = driver.findElement(By.partialLinkText("Create Test Case")); //Use a CSS locator, not link text

hover.moveToElement(objectOnScreen).perform();
waitForDropDown.until(ExpectedConditions.elementToBeClickable(objectToClick));  
hover.moveToElement(objectToClick).click();

通常链接文本是一个非常脆弱的定位器,不应该使用。 CSS 定位器是一个更好的选择。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-08-09
    • 2017-01-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-28
    • 1970-01-01
    相关资源
    最近更新 更多