3 回答

TA貢獻1859條經驗 獲得超6個贊
試試下面的代碼。
items1=[item.text for item in driver.find_elements_by_xpath('//div[@class="media"][last()-1]//div[@class="media-content"]')]
items2=[item.text for item in driver.find_elements_by_xpath('//div[@class="media"][last()]//div[@class="media-content"]')]
if items1==items2:
print("pass")
else:
print("fail")

TA貢獻1844條經驗 獲得超8個贊
對我來說,anser 是(如果在 singal div[@class="media-content"] 節點中有多個 div[@class="media-content"] 元素):
media_last = driver.find_elements_by_xpath('//div[@class="media"][last()]//div[@class="media-content"]')
media_last = [a.gettext() for a in media_last]
media_not_last =driver.find_elements_by_xpath('//div[@class="media"][last()-1]//div[@class="media-content"]')
media_not_last = [a.gettext() for a in media_not_last]
if media_last == media_not_last:
break
您無法在元素數組中獲取方法 gettext
或者如果你想得到一個單一的元素,請使用 find_element_by_xpath 方法

TA貢獻1831條經驗 獲得超10個贊
我使用您的 html 測試了以下內容,并且得到了您期望的行為:
from selenium import webdriver
driver = webdriver.Chrome()
driver.get(r'file:///<path to local html file>') # Used local html file for testing purposes
el1 = driver.find_elements_by_xpath('//div[@class="media"][last()]//div[@class="media-content"]')
el2 = driver.find_elements_by_xpath('//div[@class="media"][last()-1]//div[@class="media-content"]')
if el1[0].text == el2[0].text:
print('Yes')
else:
print('No')
要理解的一件事是driver.find_elements_by_path()返回一個list對象。因此,即使看起來您正在針對頁面中的特定元素,它們也存儲在list對象中,如果您希望訪問元素的文本,您應該以這種方式引用它們。
添加回答
舉報