python селена нажмите кнопку <a> - PullRequest
0 голосов
/ 23 февраля 2020

Я делаю макрос с селеном.

Я хочу нажать эту кнопку на этой странице

enter image description here

Итак, я использовал следующий код. но, это не работает.

driver.find_element_by_xpath('/html/body/div[1]/div[5]/div[1]/div[3]/div/div/section/div/a').click()

Какой код я должен использовать?

Ответы [ 2 ]

4 голосов
/ 23 февраля 2020

Эта кнопка находится внутри <iframe id="down">, но Selenium обрабатывает frame как отдельную страницу, и вам нужно сначала switch_to.frame, прежде чем вы сможете искать внутри фрейма.

frame = driver.find_element_by_id('down')
driver.switch_to.frame(frame)

И, как сказал @match, вы могли бы используйте id для поиска элементов. Но это работает и с вашим xpath

import selenium.webdriver

url = 'http://cafe.daum.net/WekiMeki'

driver = selenium.webdriver.Chrome()
#driver = selenium.webdriver.Firefox()
driver.get(url)

frame = driver.find_element_by_id('down')
driver.switch_to.frame(frame)

driver.find_element_by_id('fancafe-widget-cheer').click()

#driver.find_element_by_xpath('/html/body/div[1]/div[5]/div[1]/div[3]/div/div/section/div/a').click()
2 голосов
/ 23 февраля 2020

Использование такого абсолютного пути рискованно, поскольку, если структура сайта изменится, он больше не будет работать.

К счастью, элемент, на который вы хотите щелкнуть, имеет уникальный идентификатор: id="fancafe-widget-cheer"

Таким образом, вы можете выбрать его, выполнив:

driver.find_element_by_id('fancafe-widget-cheer')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...