автоматически нажимать кнопку, которая появляется на веб-странице

Я хочу автоматизировать нажатие кнопки, которая появляется на веб-странице. Как я могу сделать это с помощью python? У меня нет опыта работы с JavaScript, и я только начал изучать программирование.

Ниже приведен внешний HTML-код кнопки:

‹ button type="button" class="_23b4U" data-crid="16175cf391104e1db0234ea1707ff45c">Принять

Я искал и нашел похожие вопросы: Как автоматически щелкнуть кнопку ввода

Автоматический щелчок по всплывающей кнопке

Пожалуйста помоги.


person Khushal Badhan    schedule 08.02.2018    source источник
comment
Вы не сможете использовать python для этого. Вам нужно будет использовать Javascript, так как он будет работать в браузере, и когда кнопка появится, вы можете настроить ее и выполнить действие по событию щелчка.   -  person Stretch0    schedule 08.02.2018
comment
Вы можете автоматизировать это с помощью пакета python, полученного из JAvascript pypi.python.org/pypi/pyppeteer Эти пакеты изначально были написаны для автоматизации тестирования функциональности пользовательского интерфейса, но вы можете использовать их для парсинга веб-сайтов, полностью загружающих страницу, и используя Cheerio или другие библиотеки, чтобы легко найти нужную кнопку и нажать ее. Это довольно гладко.   -  person Josh Lavely    schedule 08.02.2018
comment
Вы также можете использовать Selenium, см. stackoverflow.com/questions/8871654/ и pythonspot.com/selenium-click-button   -  person Joe    schedule 08.02.2018


Ответы (2)


Для автоматизации вы определенно можете проверить

веб-бот

Он основан на селене и предлагает гораздо больше функций с очень небольшим количеством кода, таких как автоматический поиск элементов для выполнения таких действий, как щелчок, тип на основе ваших параметров.

Вот документ: https://webbot.readthedocs.io/

person Natesh bhat    schedule 30.06.2018

Взгляните на Selenium http://selenium-python.readthedocs.io/

from selenium import webdriver
import time

options = webdriver.ChromeOptions()
options.add_argument('--ignore-certificate-errors')
options.add_argument("--test-type")
options.binary_location = "/usr/bin/chromium"
driver = webdriver.Chrome(chrome_options=options)
driver.get('http://codepad.org')

# click radio button
python_button = driver.find_elements_by_xpath("//input[@name='lang' and @value='Python']")[0]
python_button.click()

# type text
text_area = driver.find_element_by_id('textarea')
text_area.send_keys("print('Hello World')")

# click submit button
submit_button = driver.find_elements_by_xpath('//*[@id="editor"]/table/tbody/tr[3]/td/table/tbody/tr/td/div/table/tbody/tr/td[3]/input')[0]
submit_button.click()

(Код украден с https://pythonspot.com/selenium-click-button/)

person Joe    schedule 08.02.2018
comment
Привет, спасибо за ответ. Попробовал программу на IDLE. Веб-сайт открывается, но я не могу найти и правильно указать x-пути. Как я могу получить правильные x-пути? - person Khushal Badhan; 09.02.2018
comment
Вам нужно посмотреть файл HTML и получить его оттуда. Вместо x-пути есть и другие варианты поиска элемента по идентификатору или имени. см. selenium-python.readthedocs.io/locating-elements.html - person Joe; 09.02.2018
comment
В Firefox вы можете получить xpath в инструментах веб-разработчика — щелкните элемент правой кнопкой мыши — скопировать — xpath - person Joe; 09.02.2018
comment
Да, я использовал разные методы для поиска разных элементов и почти закончил, но последняя кнопка выдает ошибку при попытке использовать «метод класса». div › div._3Vu4w._3Xzhy › div._2Jdsd › div › div._3wkMv › div › button give_access = driver.find_element_by_css_selector('#root > div > div > div._3Vu4w._3Xzhy > div._2Jdsd > div > div._3wkMv > div > button') попробовал это Затем для xpath: - person Khushal Badhan; 09.02.2018
comment
Тогда для xpath: //*[@id=root]/div/div/div[1]/div[2]/div/div[2]/div/button give_access = driver.find_element_by_xpath("//*[@id='root']/div/div/div[1]/div[2]/div/div[2]/div/button")[0] Но ничего не работает. ниже показан элемент, который я пытаюсь найти: give_access = driver.find_element_by_xpath(//*[@id='root']/div/div/div [1]/дел[2]/дел/дел[2]/дел/кнопка)[0] - person Khushal Badhan; 09.02.2018