获取所有由 THEN 包裹的文本 if 条件

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


临摹微笑
浏览 102回答 3
3回答

BIG阳

试试下面的代码。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:&nbsp; &nbsp; print("pass")else:&nbsp; &nbsp; print("fail")

婷婷同学_

对我来说,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:&nbsp; &nbsp; break您无法在元素数组中获取方法 gettext或者如果你想得到一个单一的元素,请使用 find_element_by_xpath 方法

慕哥6287543

我使用您的 html 测试了以下内容,并且得到了您期望的行为:from selenium import webdriverdriver = webdriver.Chrome()driver.get(r'file:///<path to local html file>') # Used local html file for testing purposesel1 = 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:&nbsp; &nbsp; print('Yes')else:&nbsp; &nbsp; print('No')要理解的一件事是driver.find_elements_by_path()返回一个list对象。因此,即使看起来您正在针对页面中的特定元素,它们也存储在list对象中,如果您希望访问元素的文本,您应该以这种方式引用它们。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python