Как с помощью питона нажать на кнопку на сайте?
Нужно нажать на кнопку «Прозвонить » на сайте «Удаленное управление Android». Помогите мне это реализовать. Какие библиотеки и методы нужно для этого использовать для этого?
- Вопрос задан более трёх лет назад
- 28051 просмотр
Комментировать
Решения вопроса 2
from selenium import webdriver driver = webdriver.Firefox() driver.get('http://yo.ur/pretty-and-cool/url') element = driver.find_element_by_css_selector('button.with-class#or-id') element.click()
Ответ написан более трёх лет назад
Нравится 7 4 комментария
VADIMPYthon @VADIMPYthon
Верно я понимаю?
Я могу выбрать либо id кнопки или class кнопки. Или я должен и id и class написать?
Также у меня вопрос я должен верхнюю запятую оставлять или нет?
VADIMPYthon, либо id, либо класс, либо тэг, либо любые их комбинации. Погугли CSS селекторы. А лучше пользоваться xpath.
Как нажать на кнопку на сайте через Python?
Есть сайт, на котором некоторые элементы страницы недоступны до нажатия на кнопку. Адрес при нажатии при этом не меняется, поэтому нельзя просто перейти на другую страницу. Как это сделать? Какие библиотеки нужны?
Отслеживать
задан 21 дек 2019 в 19:05
IceCube092 IceCube092
43 1 1 серебряный знак 8 8 бронзовых знаков
Нет баллов на коммент, поэтому так. Это должно помочь: stackoverflow.com/questions/27869225/…
21 дек 2019 в 19:13
1 ответ 1
Сортировка: Сброс на вариант по умолчанию
Для подобных целей есть selenium.
Вот небольшой пример авторизации в вк.
from time import sleep from selenium import webdriver VK_ROOT_URL = "https://vk.com/" class TestFunc(object): def __init__(self): self.driver = webdriver.Firefox() self.driver.get(VK_ROOT_URL) def login(self, username, password): email_field = self.driver.find_element_by_id("index_email") email_field.send_keys(username) sleep(5) password_field = self.driver.find_element_by_id("index_pass") password_field.send_keys(password) sleep(5) login_button = self.driver.find_element_by_id("index_login_button") login_button.click() if __name__ == __main__: username = 'username' password = 'password' TestFunc().login(username, password)
Для марса у селенитам есть такая функция как get_attribute(«outerHTML»), которая возвращает HTML. В вашем распоряжении есть большая документация.
Python-сообщество
![]()
- Начало
- » Python для новичков
- » Kak кликнуть кнопку на сайте?
#1 Март 2, 2016 23:12:51
newpy Зарегистрирован: 2014-08-12 Сообщения: 56 Репутация: 0 Профиль Отправить e-mail
Kak кликнуть кнопку на сайте?
Получилось скачать сайт.
import urllib.parse х = urllib.request.urlopen('https://yandex.ru/internet') y=x.read() print(y)
Хотелось бы научиться кликать кнопки на сайте.
И попутно два вопроса:
1. Такой способ правильный? Может уже так не делают
2. Что за модуль urllib2?
#2 Март 2, 2016 23:57:48
ZerG Зарегистрирован: 2012-04-05 Сообщения: 2468 Репутация: 71 Профиль Отправить e-mail
Kak кликнуть кнопку на сайте?
Начните с того что вы скачали не сайт в вашем понимании а его HTML код и работаете с ним! Вы скачали текстовый файл вы можете сделать по нему поиск. замену и так далее. Для того что бы появилась кнопка в вашем понимании текстовый файл надо сохранить как веб файл и открыть браузером что бы он открыл его как веб страницу а не как текстовый документ
Влодение рускай арфаграфией — это как владение кунг-фу: настаящие мастира не преминяют ево бес ниабхадимости
#3 Март 3, 2016 01:37:14
py.user.next От: Зарегистрирован: 2010-04-29 Сообщения: 9675 Репутация: 841 Профиль Отправить e-mail
Kak кликнуть кнопку на сайте?
newpy
2. Что за модуль urllib2?
Во втором питоне urllib — это старый модуль, потом там стали делать новый и назвали его urllib2. И вот этот новый модуль включили в третий питон под названием urllib.
Есть ещё urllib3.
newpy
Хотелось бы научиться кликать кнопки на сайте.
Потренируйся на сайтах, где ещё остался http. Поставь Wireshark и смотри в нём, что посылается, когда кнопку нажимаешь.
Можешь ещё поставить в браузере Firebug, там тоже можно смотреть, что посылается.
Отредактировано py.user.next (Март 3, 2016 01:58:30)
#4 Март 3, 2016 15:05:27
newpy Зарегистрирован: 2014-08-12 Сообщения: 56 Репутация: 0 Профиль Отправить e-mail
Kak кликнуть кнопку на сайте?
ZerG
вы можете сделать по нему поиск. замену и так далее.
я вот эти и имел ввиду, что могу выбрать данные, которые мне “показывает” страница.. Например yandex.ru/internet выдает мой айпи, мой город.. Но что бы получить ещё кое-что (например скорость интернета) необходимо нажимать имеющуюся там же кнопку “тестирование скорости”. Теперь хотелось бы научиться нажимать на эту кнопку..
Правильно ли я понимаю, что нет никаких “нажатий” кнопок на сайте, а нужно отследить какая ссылка отправляется при нажатии на кнопку и таким же способом “скачать” этот сайт?
py.user.next
urllib2…включили в третий питон под названием urllib.
спасибо ценная информация. И похоже что действительно нет никаких “нажатий” мифических кнопок раз говоришь Wireshark, Firebug
Спасибо за отклики. Обоим поставил крестики
#5 Март 4, 2016 03:10:15
py.user.next От: Зарегистрирован: 2010-04-29 Сообщения: 9675 Репутация: 841 Профиль Отправить e-mail
Kak кликнуть кнопку на сайте?
newpy
И похоже что действительно нет никаких “нажатий” мифических кнопок
Нажатие на кнопку приводит к тому, что браузер формирует запрос в соответствии с протоколом HTTP (протокол передачи гипертекста). А то, как он его формирует, записывается в описании для кнопки на языке HTML (язык разметки гипертекста).
Сервер, который получает запрос, не знает, как тот был сформирован.
Отредактировано py.user.next (Март 4, 2016 03:13:27)
Как нажать кнопку на сайте с помощью python
Одним из наиболее используемых компонентов в графических программах является кнопка. В tkinter кнопки представлены классом Button . Основные параметры виджета Button:
- command : функция, которая вызывается при нажатии на кнопку
- compund : устанавливает расположение картинки и текста относительно друг друга
- cursor : курсор указателя мыши при наведении на метку
- image : ссылка на изображение, которое отображается на метке
- pading : отступы от границ вилжета до его текста
- state : состояние кнопки
- text : устанавливает текст метки
- textvariable : устанавливает привязку к элементу StringVar
- underline : указывает на номер символа в тексте кнопки, который подчеркивается. По умолчанию значение -1, то есть никакой символ не подчеркивается
- width : ширина виджета
Добавим в окно обычную кнопку из пакета ttk:
from tkinter import * from tkinter import ttk root = Tk() root.title("METANIT.COM") root.geometry("250x200") # стандартная кнопка btn = ttk.Button(text="Button") btn.pack() root.mainloop()
Для создания кнопки используется конструктор Button() . В этом конструкторе с помощью параметра text можно установить текст кнопки.
Чтобы разместить виджет в контейнере (главном окне), у него вызывается метод pack() . На ОС Windows мы получим следующую кнопку:

Конструктор Button определяет различные параметры, которые позволяют настроить поведение и внешний вид кнопки. Однако конкретный набор параметров зависит от того, используем ли мы кнопки из пакета tkinter или из пакета tkinter.ttk.
Обработка нажатия на кнопку
Для обработки нажатия на кнопку необходимо установить в конструкторе параметр command , присвоив ему ссылку на функцию, которая будет срабатывать при нажатии:
from tkinter import * from tkinter import ttk clicks = 0 def click_button(): global clicks clicks += 1 # изменяем текст на кнопке btn["text"] = f"Clicks " root = Tk() root.title("METANIT.COM") root.geometry("250x150") btn = ttk.Button(text="Click Me", command=click_button) btn.pack() root.mainloop()
Здесь в качестве обработчика нажатия устанавливается функция click_button. В этой функции изменяется глобальная переменная clicks, которая хранит число кликов. Кроме того, изменяем текст кнопки, чтобы визуально было видно сколько нажатий произведено. Таким образом, при каждом нажатии кнопки будет срабатывать функция click_button, и количество кликов будет увеличиваться:

Отключение кнопки
Для ttk-кнопки мы можем установить отключенное состояние с помощью метода state() , передав ему значение «disabled». С такой кнопкой пользователь не сможет взаимодействовать:
from tkinter import * from tkinter import ttk root = Tk() root.title("METANIT.COM") root.geometry("250x200") btn = ttk.Button(text="Click Me", state=["disabled"]) btn.pack() root.mainloop()
При этом в метод state мы можем передать набор состояний, поэтому значение «disabled» передается внутри списка.