Поиск ближайшей кнопки Selenium Python - PullRequest
0 голосов
/ 12 марта 2019

Я пытаюсь нажать кнопку «Удалить комментарий» после нахождения комментария, содержащего определенный хэштег, лайк, который является гиперссылкой.

Поскольку имеется несколько кнопок «Удалить комментарий», я думаю, что лучший способ - просто найти комментарий с хэштегом, а затем нажать ближайшую кнопку, но я могу ошибаться.

На картинке я хочу нажать на кнопку, выделенную под хэштегом, а не под:

enter image description here

Пока у меня есть

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

Который успешно находит тэг, но я в тупике после этого.

Ответы [ 2 ]

3 голосов
/ 12 марта 2019

Вы можете использовать один из следующих путей xpath.

Объяснение : найти a с "#hasky" текст , получить первого родителя li с "menuitem" роль и получение дочерней кнопки (с атрибутом "Удалить комментарий" title ):

//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']
0 голосов
/ 12 марта 2019

Что-то простое, как

//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()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...