亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

獲取所有由 THEN 包裹的文本 if 條件

獲取所有由 THEN 包裹的文本 if 條件

臨摹微笑 2022-05-19 14:14:48
html代碼<div class=media>   <div class=11></div>   <div class=22></div>   <div class=media-content>       yes, this is the text<BR>       that i want to compare below       multiple line    </div></div><div class=media>   <div class=11></div>   <div class=22></div>   <div class=media-content>       and i want to compare above text multiple line       then if both same, i wanna break the loop       But it is not work    </div></div>成功選擇第一個元素(由 chropath 檢查)driver.find_elements_by_xpath('//div[@class="media"][last()]//div[@class="media-content"]')成功選擇第二個元素(由 chropath 檢查)driver.find_elements_by_xpath('//div[@class="media"][last()-1]//div[@class="media-content"]')但是兩個文本都不相同,但總是 TRUE 然后中斷。if driver.find_elements_by_xpath('//div[@class="media"][last()]//div[@class="media-content"]').gettext() == driver.find_elements_by_xpath('//div[@class="media"][last()-1]//div[@class="media-content"]').gettext():     break是的,這是行不通的。我想比較第一和第二的文本(多行)element(@class=media-content)如果兩個多行文本相同,我想停止循環。但是兩個文本都與您看到的不同,但總是變為 TRUE 然后 STOPPED(break)我成功選擇了項目(*with last[], last[]-1) 但我不知道為什么它會出錯.....有沒有人可以解決我的新手代碼?//text(), .gettext(),.text()
查看完整描述

3 回答

?
BIG陽

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


查看完整回答
反對 回復 2022-05-19
?
婷婷同學_

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 方法


查看完整回答
反對 回復 2022-05-19
?
慕哥6287543

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對象中,如果您希望訪問元素的文本,您應該以這種方式引用它們。


查看完整回答
反對 回復 2022-05-19
  • 3 回答
  • 0 關注
  • 127 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號