Selenium Scroll to view не работает, когда элемент уже виден - PullRequest
0 голосов
/ 06 марта 2020

Я испытываю такое поведение прокрутки в поле зрения. Обычно я прокручиваю элементы в поле зрения с помощью действий или JavaScript, как показано ниже:

Actions actions = new Actions(driver());
actions.moveToElement(element).build().perform();

или

js().executeScript("arguments[0].scrollIntoView();", element);

Оба они отлично работают, когда элементы находятся вне области просмотра. Но иногда мои элементы уже находятся внутри области просмотра, затем, когда он достигает этих команд, он фактически прокручивает эти элементы вне поля зрения, и тест не проходит, потому что он не активен.

Кто-нибудь сталкивался с такой же проблемой ? Любое решение?

1 Ответ

0 голосов
/ 06 марта 2020

Вы можете проверить, находится ли элемент в порту просмотра или нет, и, основываясь на логическом значении, вы можете поместить действие, чтобы выяснить, находится ли элемент в порту просмотра, который я использую

public static Boolean isVisibleInViewport(WebElement element) {
WebDriver driver = ((RemoteWebElement)element).getWrappedDriver();

return (Boolean)((JavascriptExecutor)driver).executeScript(
  "var elem = arguments[0],                 " +
  "  box = elem.getBoundingClientRect(),    " +
  "  cx = box.left + box.width / 2,         " +
  "  cy = box.top + box.height / 2,         " +
  "  e = document.elementFromPoint(cx, cy); " +
  "for (; e; e = e.parentElement) {         " +
  "  if (e === elem)                        " +
  "    return true;                         " +
  "}                                        " +
  "return false;                            "
  , element);
}

Ссылка

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...