我怀疑我在这个问题上说得很清楚,但我想得到一个人在Discord上发送的最后一条消息(通过网络)。问题是,当使用Web检查器尝试获取消息的唯一属性时,我注意到所有其他单个消息都具有相同的类,并且没有其他属性(如类,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 ')]")我得到“hello”,因为两条消息共享同一个类,显然该方法选择第一个匹配的消息。markup-2BOw-j containerCozy-336-Cz markupRtl-3M0hmN我已经查看了其他类似的问题,但是消息是未知的,所以我不能使用,也不能在方法的末尾,因为我不知道消息的编号。contains[position()=2]find_element_by_xpath有没有办法做到这一点?
3 回答
桃花长相依
TA贡献1860条经验 获得超8个赞
您可以使用 来获取与定位器匹配的所有元素的列表,并获取该列表中的最后一个项目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')
慕雪6442864
TA贡献1812条经验 获得超5个赞
用:last()
message = self.driver.find_element_by_xpath("(//div[contains(concat(' ', normalize-space(@class), ' '), ' markup-2BOw-j containerCozy-336-Cz markupRtl-3M0hmN ')])[last()]")
慕少森
TA贡献2019条经验 获得超9个赞
使用find_elements_by_xpath执行此操作。它将返回匹配的 WebElements 的列表。在此之后,您可以使用 list[-1] 访问最后一个元素。
message = self.driver.find_elements_by_xpath("//div[@class='markup-2BOw-j containerCozy-336-Cz markupRtl-3M0hmN']")print(message[-1].text)添加回答
举报
0/150
提交
取消
