Как распечатать предыдущих братьев и сестер в xpath

#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 код