我怀疑我已经清楚地说明了这个问题,但是我想获得一个人在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] 删除。
我来说两句