#python #selenium #if-statement
Вопрос:
Я пытаюсь получить предыдущих братьев и сестер элемента, используя xpath.
Есть 2 брата и сестры, которых я ищу:
sibling_two = driver.find_elements_by_xpath("//span[contains(@class, 'tag')]/preceding-sibling::a[2]")
sibling_one = driver.find_elements_by_xpath("//span[contains(@class, 'tag')]/preceding-sibling::a[1]")
Если sibling_two
не существует, я хочу вывести sibling_one
Это мой код, но он выводит только sibling_two
значения
if sibling_two:
for i in sibling_two:
print(i.text)
else:
for a in sibling_one:
print(a.text)
Есть идеи о том, как исправить это, чтобы вывести оба sibling_one
sibling_two
значения и?
Спасибо, что нашли время прочитать мой вопрос и помочь.
Ответ №1:
Не используйте if
else
, используйте два if
s:
if sibling_two:
for i in sibling_two:
print(i.text)
if sibling_one:
for a in sibling_one:
print(a.text)
Ответ №2:
Вы использовали find_elements
, который вернет a list
в Python
.
Я не уверен, действительно ли вы хотите использовать find_elements
или find_element
.
В случае, если вы хотите использовать find_elements
try:
if len(sibling_two) == 0:
print("We want to output sibling_one")
for i in sibling_one:
print(i.text)
else:
print("Since sibling_two seems to have something in it, we would extract from the same.")
for j in sibling_two:
print(j.text)
except:
print("Something went wrong")
pass
Обновленный :
j = 0
for a in range(len(sibling_one) or len(sibling_two)):
print(sibling_one[j].text and sibling_two[j].text)
j = j 1
Комментарии:
1. спасибо, что нашли время ответить. Я попробовал ваше решение, но оно по-прежнему выводит
sibling_two
только2. @shorttriptomars : см. Выше, обновлен 1 код