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对象中,如果您希望访问元素的文本,您应该以这种方式引用它们。
添加回答
举报