Saya mencoba mendapatkan saudara kandung elemen sebelumnya menggunakan xpath.

Ada 2 saudara yang saya cari:

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

Jika sibling_two tidak ada, saya ingin menampilkan sibling_one

Ini adalah kode saya, tetapi hanya menghasilkan nilai sibling_two

if sibling_two:
    for i in sibling_two:
        print(i.text)
else:
    for a in sibling_one:
         print(a.text)

Adakah ide tentang cara memperbaikinya untuk menghasilkan nilai sibling_one dan sibling_two?

Terima kasih telah meluangkan waktu untuk membaca pertanyaan saya dan membantu.

0
shorttriptomars 22 September 2021, 04:46

2 jawaban

Jawaban Terbaik

Jangan gunakan if else, gunakan dua if:

if sibling_two:
    for i in sibling_two:
        print(i.text)
if sibling_one:
    for a in sibling_one:
         print(a.text)
0
U12-Forward 22 September 2021, 02:08

Anda telah menggunakan find_elements yang akan mengembalikan list di Python.

Saya tidak yakin apakah Anda benar-benar ingin menggunakan find_elements atau find_element.

Jika Anda ingin menggunakan 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

Diperbarui :

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
0
cruisepandey 22 September 2021, 17:39