当所有类都相同时,如何访问网页中的最后一个元素?

银达德

我怀疑我已经清楚地说明了这个问题,但是我想获得一个人在Discord上发送的最新消息(通过网络)。问题是,当使用Web inspector尝试获取消息的唯一属性时,我注意到每隔一条消息都具有相同的类,并且没有其他可以使用的属性(例如,类,id等) 。我是Selenium和HTML的新手,所以我并不了解。

假设我有2条消息。第一个说“你好”,第二个说“再见”。当我输入以下内容时:

message = self.driver.find_element_by_xpath("//div[contains(concat(' ', normalize-space(@class), ' '), ' markup-2BOw-j containerCozy-336-Cz markupRtl-3M0hmN ')]")

我得到“你好”,因为两个消息共享同一个类markup-2BOw-j containerCozy-336-Cz markupRtl-3M0hmN,并且显然该方法选择了匹配的第一个。

我已经浏览了其他类似的问题,但是消息未知,因此我无法使用contains,也无法[position()=2]find_element_by_xpath方法末尾使用因为我不知道消息的编号。

有办法吗?

盖伊

您可以find_elements_by_xpath用来获取所有与定位器匹配的元素的列表,并获取列表中的最后一项

all_messages = self.driver.find_elements_by_xpath("//div[contains(concat(' ', normalize-space(@class), ' '), ' markup-2BOw-j containerCozy-336-Cz markupRtl-3M0hmN ')]")
message = all_messages[-1]

顺便说一句,你可以简化xpath

find_elements_by_xpath("//div[@class='markup-2BOw-j containerCozy-336-Cz markupRtl-3M0hmN']")

css_selector改用

find_elements_by_css_selector('.markup-2BOw-j.containerCozy-336-Cz.markupRtl-3M0hmN')

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

jQuery:如何从元素中删除除最后一个类以外的所有类

如何检查列表列表中的所有元素是否都相同(除了一个[Prolog])

如何在python列表中从最后到第一个访问所有列表元素

如何显示元素内元素的所有对象,直到 Angular 中的最后一个元素?

jQuery - 如果所有子元素都具有相同的类,则向页面上的另一个元素添加额外的类

在实践中,是否应该使一个类的所有对象都具有相同数量的属性?

使一个字符向量的所有元素都具有相同的长度

在一个循环中,所有数组元素都获得最后一个的值

如何使用jQuery隐藏除最后一个元素以外的所有元素(按类)

如何将页脚设置为所有网站中的最后一个元素

如何选择元素中除最后一个孩子以外的所有孩子?

函数.push继续替换与数组中最后一个元素相同的所有元素

选择除具有特定类的最后一个元素以外的所有元素

在php中从文本区域检索行时,除最后一个元素外,其余所有元素都添加空格

所有值都添加到 HashMap 中,但只返回最后一个值

JSDoc是一个对象,所有属性(无论名称如何)都具有相同的类型

创建一个对所有对象都相同的属性

c++ - 如何清除向量中除向量中的最后一个元素外的所有元素

如何将一个类添加到一个元素并从所有兄弟元素中删除一个类 angular

Elixir-如何获取除列表中的最后一个元素以外的所有元素?

当所有元素都相同时,如何更改特定元素的值?

检查除第一个元素外的所有元素是否都具有特定类

如何将所有子元素包装在一个类中?

如何使用CSS选择所有元素中第一个出现的类

如果数组中的所有元素都相同,如何使数组唯一,Ruby?

如何从三个相同的元素中隐藏第一个和最后一个元素

有没有一种方法可以对列表中的所有内容(除了最后一个元素)执行相同的操作?

每个单词中的元素都添加一个类?

BEM中附带CSS的所有内容都需要一个类名吗?