#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)]