Selenium Python проверяет, существует ли div

#python #xpath #selenium-chromedriver

#python #xpath #selenium-chromedriver

Вопрос:

Я очищаю сообщение facebook, я использую

status = x.find_element_by_xpath(".//div[@class='_5pbx userContent _3576']/p[1]").text

для получения сообщения о статусе и HTML-структуры сообщения facebook, как здесь

 <div class="_5pbx userContent _3576" data-ft="{{"tn":"K"}}" id="js_33">
  <p>Bersama Ketua APTIKOM Yogyakarta, Bapak Dr. Agfianto Eko Putra, M.Si. @agfi68<br> Terima kasih banyak telah memesan buku Digital.Is. Me</p>
</div>
  

иногда тег p внутри div, но иногда не внутри div

как я могу создать status = x.find_element_by_xpath(«.//div [@class=’_5pbx userContent _3576′]/ p[1]»).text

которые поддерживают, если внутри div или нет внутри div

Комментарии:

1. Вы имеете в виду, что у некоторых _5pbx userContent _3576 divs нет p ? Почему бы вам не использовать .getAttribute("innerText") в самом div, который выдаст внутренний текст, если p существует, иначе он будет пустым.

Ответ №1:

Вы могли бы сделать x.find_elements_by_xpath и посмотреть, равна ли длина нулю.

Ответ №2:

Используйте, find_element_by_xpath(".//div[@class='_5pbx userContent _3576']") чтобы найти <div> элемент.

Затем вы можете проверить этот элемент, чтобы увидеть, есть ли у него <p> дочерний элемент.

Ответ №3:

Вы хотите выбрать два разных элемента в зависимости от определенных условий. Итак, вы должны использовать:

 .//div[@class='_5pbx userContent _3576'][not(p[1])]|.//div[@class='_5pbx userContent _3576']/p[1]
  

В общем, предполагая переменные $XPathExpression1 , $XPathExpression2 и $Condition :

 $XPathExpression1[$Condition]|$XPathExpression2[not($Condition)]