Как найти видимые элементы на странице с помощью Selenium Webdriver? - PullRequest
0 голосов
/ 29 ноября 2018

У меня есть страница с несколькими скрытыми промежутками одного класса.Мне нужно проверить, отображается ли один из них на странице.Я пытался использовать @driver.find_element(:class, 'some class').displayed?, но он возвращает false, когда видимый диапазон не первый с этим классом в DOM.Есть ли способ справиться с этим?

ОБНОВЛЕНИЕ

HTML

<html>
   <head></head>
   <body>
      <div class="span1" style="display: none;">
        <span class="some class">Some Error</span>
      </div>
      <div class="span2" style="display: none;">
        <span class="some class">Some Error</span>
      </div>
      <div class="span3" style>
        <span class="some class">Some Error</span>
      </div>
   </body>
 </html>

Ответы [ 2 ]

0 голосов
/ 29 ноября 2018

Чтобы проверить, отображается ли какой-либо элемент на странице, даже если видимый <span> не является первым в родительском узле согласно предоставленной вами HTML DOM ,Вы можете использовать следующее решение:

  • Использование XPath :

    @driver.find_element(:xpath,"//span[@class='some class']").displayed?
    
0 голосов
/ 29 ноября 2018

Вместо использования style="display: none" вы можете использовать класс CSS для отображения элементов, таких как:

.hidden { 
   display: none;
}

Теперь вы можете проверить, есть ли у элемента этот класс.

ОБНОВЛЕНИЕ

Если вы не можете изменить HTML, можете ли вы использовать функцию element.isDisplayed(), возвращает ли false, если элемент имеет display: none или opacity: 0, я нашел это в другом вопросе: Как проверитьесли элемент виден с WebDriver

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