简体   繁体   English

Selenium 从元素循环中获取 xpath 返回相同的结果

[英]Selenium get get xpath from element loop return same result

This is my python code, find all elements and process each element, but im have problem, output code is same result, but if i print out element html, nothing wrong with my html element, This is my python code, find all elements and process each element, but im have problem, output code is same result, but if i print out element html, nothing wrong with my html element,

xpath_chatlist = '//div[@class="content-container"]/div/div/div[1]/div[3]'
xpath_chatlist_name = '//div[@class="listTextName"]/h3'
xpath_chatlist_msg = '//div[@class="listTextChat"]'
xpath_chatlist_date = '//div[@class="listTime"]'
xpath_chatlist_total = '//div[@class="listInfoBottom"]/span'

print('=============START=============')
chatlist = driver.find_elements(By.XPATH, '//div[@aria-label="ChatListItem"]')
for item in chatlist:
    print('innerHTML : '+item.get_attribute('innerHTML'))
    print('Name : '+item.find_element(By.XPATH, xpath_chatlist_name).text)
    print('Msg : '+item.find_element(By.XPATH, xpath_chatlist_msg).text)
    print('Date : '+item.find_element(By.XPATH, xpath_chatlist_date).text)
    print('Total : '+item.find_element(By.XPATH, xpath_chatlist_total).text)
print('=============END=============')

This is my output这是我的 output

=============START=============
innerHTML : <div class="listItemWrapper"><div class="css-1ixlgd5"><img src="https://website.com/image/v1/u/23034869/user_thumbnail/mobile" alt="Anas"></div><div class="css-1yssxig"><div class="listTextName"><h3 class="unreads">Anas</h3></div><div class="wrapperText"><div class="listTextChat">Terima kasih!</div></div></div><div class="css-up9rb4"><div class="listTime">06:46</div><div class="listInfoBottom"><span class="css-818igq">1</span><div class="listOption"><div class="css-1w7t4hv" aria-label="ChatListMenu"></div><div class="css-3ybd2c"><ul><li>Tempel Chat</li><li>Atur Penerimaan Chat</li><li>Laporkan Pengguna</li><li>Tandai Sudah Dibaca</li><li>Hapus</li></ul></div></div></div></div></div>
Name : Anas
Msg : Terima kasih!
Date : 06:46
Total : 1
innerHTML : <div class="listItemWrapper"><div class="css-1ixlgd5"><img src="https://website.com/image/v1/u/1581313/user_thumbnail/mobile" alt="Dewi"></div><div class="css-1yssxig"><div class="listTextName"><h3 class="unreads">Dewi</h3></div><div class="wrapperText"><div class="listTextChat">Hai, barang ini ready ga?</div></div></div><div class="css-up9rb4"><div class="listTime">7 Okt</div><div class="listInfoBottom"><span class="css-818igq">2</span><div class="listOption"><div class="css-1w7t4hv" aria-label="ChatListMenu"></div><div class="css-3ybd2c"><ul><li>Tempel Chat</li><li>Atur Penerimaan Chat</li><li>Laporkan Pengguna</li><li>Tandai Sudah Dibaca</li><li>Hapus</li></ul></div></div></div></div></div>
Name : Anas
Msg : Terima kasih!
Date : 06:46
Total : 1
=============END=============

Expected result:预期结果:

=============START=============
innerHTML : <div class="listItemWrapper"><div class="css-1ixlgd5"><img src="https://website.com/image/v1/u/23034869/user_thumbnail/mobile" alt="Anas"></div><div class="css-1yssxig"><div class="listTextName"><h3 class="unreads">Anas</h3></div><div class="wrapperText"><div class="listTextChat">Terima kasih!</div></div></div><div class="css-up9rb4"><div class="listTime">06:46</div><div class="listInfoBottom"><span class="css-818igq">1</span><div class="listOption"><div class="css-1w7t4hv" aria-label="ChatListMenu"></div><div class="css-3ybd2c"><ul><li>Tempel Chat</li><li>Atur Penerimaan Chat</li><li>Laporkan Pengguna</li><li>Tandai Sudah Dibaca</li><li>Hapus</li></ul></div></div></div></div></div>
Name : Anas
Msg : Terima kasih!
Date : 06:46
Total : 1
innerHTML : <div class="listItemWrapper"><div class="css-1ixlgd5"><img src="https://website.com/image/v1/u/1581313/user_thumbnail/mobile" alt="Dewi"></div><div class="css-1yssxig"><div class="listTextName"><h3 class="unreads">Dewi</h3></div><div class="wrapperText"><div class="listTextChat">Hai, barang ini ready ga?</div></div></div><div class="css-up9rb4"><div class="listTime">7 Okt</div><div class="listInfoBottom"><span class="css-818igq">2</span><div class="listOption"><div class="css-1w7t4hv" aria-label="ChatListMenu"></div><div class="css-3ybd2c"><ul><li>Tempel Chat</li><li>Atur Penerimaan Chat</li><li>Laporkan Pengguna</li><li>Tandai Sudah Dibaca</li><li>Hapus</li></ul></div></div></div></div></div>
Name : Dewi
Msg : Hai, barang ini ready ga?
Date : 7 Okt
Total : 1
=============END=============

Whats wrong with my code, any help would be apreciated, thanks我的代码有什么问题,任何帮助将不胜感激,谢谢

EDIT:编辑:

Solved with access loop index解决了访问循环索引

i=1;
for item in chatlist:
    x=str(i)
    print(self.Tampilkan('Name : '+item.find_element(By.XPATH, '//div[@aria-label="ChatListItem"]['+x+']//div[@class="listTextName"]/h3').text))
    i += 1

but im still dont know why cannot find xpath in loop using item element, if somebody know please give the reason但我仍然不知道为什么使用 item 元素在循环中找不到 xpath,如果有人知道请给出原因

you're close.你很近。 you want the xpath relative to the "item":你想要 xpath 相对于“项目”:

xpath_chatlist = './/div[@class="content-container"]/div/div/div[1]/div[3]'
xpath_chatlist_name = './/div[@class="listTextName"]/h3'
xpath_chatlist_msg = './/div[@class="listTextChat"]'
xpath_chatlist_date = './/div[@class="listTime"]'
xpath_chatlist_total = './/div[@class="listInfoBottom"]/span'

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM