Как использовать веб-драйвер, чтобы определить, скрыт ли элемент родительским стилем - PullRequest
0 голосов
/ 02 октября 2018

Я пишу автоматизацию Webdriver для приложения, которое использует следующую конструкцию:

<html>
  <body>
    <div style="display:block">
      <div class="textDiv">One</div>
    </div>
    <div style="display:none">
      <div class="textDiv">Two</div>
    </div>
    <div style="display:none">
      <div class="textDiv">Three</div>
    </div>
  </body>
</html>

Мне нужен способ найти textDiv, который виден.Я пробовал следующее:

  • isDisplayed ().Этого недостаточно, поскольку элемент textDiv, у которого есть родительский элемент с display: block, может отсутствовать на экране.
  • getCssValue ('visibility').Это не работает, так как все textDivs возвращают видимость «visible».
  • getCssValue ('display').Это не работает, поскольку все textDivs возвращают отображение 'block'.
  • getAttribute ('style').Это не работает, так как все textDivs возвращают стиль 'null'.

По сути, есть другой способ в Webdriver определить, отображается ли элемент из-за стиля, примененного кродительский элемент?

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

1 Ответ

0 голосов
/ 04 октября 2018

В ответ на комментарий от нового участника я пытался использовать определение, был ли элемент страницы скрыт от просмотра из-за стиля, примененного к его родительскому элементу.Кроме того, поскольку это происходило в контексте автоматизации тестирования Webdriver, я хотел сделать это с использованием функциональности Webdriver или с ошибкой, используя стандартные методы Javascript.

Решение, которое я нашел, было следующим.Команда Webdriver getRect () возвращает позицию x и y элемента страницы, а также его ширину и высоту.Если элемент в данный момент находится за пределами экрана, но будет отображаться, если будет отображаться правильная область страницы, будут возвращены положительные целые числа для всех этих значений.Если элемент скрыт стилем родителя, все они будут иметь значение 0. Если элемент скрыт своим собственным стилем, ширина и высота будут положительными целыми числами, но x и y будут все равно 0.

Таким образом, похоже, что решение этой проблемы состоит в том, чтобы вызвать getRect () для элементов textDiv и оперировать тем, у которого все ненулевые значения возвращены getRect ().

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