Как «нажать» кнопку с помощью запросов - PullRequest
1 голос
/ 11 июля 2020

Итак, я пытаюсь создать программу, которая может нажимать кнопку из нескольких ссылок, ссылок, которые я получу из списка, но сначала мне нужно понять, как я могу сделать это с помощью только одной ссылки. Все они имеют одинаковую структуру HTML, но я не знаю, как это сделать.

HTML:

<div class="_55wr">
    <form method="post">
        <input type="hidden" name="fb_dtsg" value="AQG7lSxYN2mb:AQFMMcWJcZtZ" autocomplete="off">
        <input type="hidden" name="jazoest" value="22090" autocomplete="off">
        <table class="btnBar">
            <tbody>
                <tr>
                    <td>
                        <button type="submit" value="Bloquear" class="_54k8 _52jg _56bs _26vk _56b_ _56bu" name="confirmed" data-sigil="touchable"><span class="_55sr">Bloquear</span></button>
                    </td>
                    <td>
                        <button type="submit" value="Cancelar" class="_54k8 _52jg _56bs _26vk _56b_ _56bt" name="canceled" data-sigil="touchable"><span class="_55sr">Cancelar</span></button>
                    </td>
                </tr>
            </tbody>
        </table>
    </form>
</div>

Идея состоит в том, чтобы нажать первую кнопку ('

Ответы [ 2 ]

1 голос
/ 11 июля 2020

Библиотека запросов выполняет HTTP-запросы, что означает, что она не отображает JS и не может нажимать кнопки. Следите за поведением вашей сети с помощью инструментов google dev, чтобы узнать, какие данные отправляются на сервер при нажатии кнопки, а затем выполните запрос POST, отправив те же данные с помощью ключевого слова params в запросе. Например,

data = {'button' : 'clicked1'}
r.requests.post('your_url.com', params = data)

Для нажатия кнопок я бы лично использовал библиотеку селена, которая имитирует браузер и обеспечивает его автоматизацию

0 голосов
/ 11 июля 2020

Я бы использовал Selenium.

Код будет примерно таким:

driver = webdriver.Firefox()
button = driver.find_element_by_xpath("//button[@value = \'Bloquear\']")
button.click()
...