找到最近的Button Selenium Python

时间:2019-03-12 10:47:06

标签: python html selenium web-scraping automation

我试图在找到包含特定主题标签(哈士奇)的评论后单击“删除评论”按钮。

由于有多个“删除评论”按钮,所以我认为最好的方法是只找到带有#标签的评论,然后单击最近的按钮,但是我可能是错的。

在图片中,我想单击标签下方而不是下方的突出显示的按钮:

enter image description here

到目前为止,我有

self.browser.find_element_by_xpath('//a[@href="/explore/tags/husky/"]')

成功找到标签的位置,但此后我很困惑。

2 个答案:

答案 0 :(得分:3)

您可以使用下面的xpath之一。

说明:使用“ #hasky” 文本找到 a ,使用“ menuitem”获得第一父级 li 角色并获得子按钮(具有“删除评论” 标题属性):

//a[.='#husky']/ancestor::li[@role='menuitem'][1]//button

//a[.='#husky']/ancestor::li[@role='menuitem'][1]//button[@title='Delete Comment']

//a[contains(@href, "/explore/tags/husky/")]/ancestor::li[@role='menuitem'][1]//button

//li[@role='menuitem' and .//a[.='#husky']]//button[@title='Delete Comment']

答案 1 :(得分:-2)

简单的事情

//a[.='#husky']//following::button[@title='Delete Comment'][1]

应该可以正常工作。如果是我,则将其包装在方法中,并传递链接文本以删除适当的注释。然后,您可以获取链接文本,并将其放在#husky位置的定位器中。

def delete_comment(comment)
    driver.find_element_by_xpath(f"//a[.='{comment}']//following::button[@title='Delete Comment'][1]").click()