Как вы можете сделать выбор в элементе global_form ListControl, используя mechanize (python)? - PullRequest
0 голосов
/ 28 марта 2020

Я работаю с продовольственным банком, чтобы помочь им автоматически создавать запись для нового гостя всякий раз, когда кто-то заполняет их форму приема. Чтобы создать нового гостя, необходимо сначала выбрать охват. Это делается с помощью ListControl, который является частью глобальной формы.

import mechanize
import http.cookiejar

br = mechanize.Browser()
cj = http.cookiejar.LWPCookieJar()
br.set_cookiejar(cj)
br.set_handle_equiv(True)
br.set_handle_gzip(True)
br.set_handle_redirect(True)
br.set_handle_referer(True)
br.set_handle_robots(False)
br.set_handle_refresh(mechanize._http.HTTPRefreshProcessor(), max_time=1)
br.addheaders = [('User-agent', 'Chrome')]


# login

br.open('https://companywebsite.com/login')
br.select_form(nr = 0)
br.form['username'] = 'my_username'
br.form['password'] = 'my_password'
br.submit()


# Deselect the default placeholder value and select the name of the outreach

br.open('https://companywebsite.com/create-new-visit')
br.global_form().find_control(id='outreachSelect').items[0].selected = False
br.global_form().find_control(id='outreachSelect').items[1].selected = True
print(br.global_form().find_control(id='outreachSelect').items)

Это вывод, который я получаю. Как видите, первый элемент все еще выделен.

[<Item name='0' id=None value='0' selected='selected' contents='Select an Outreach' label='Select an Outreach'>, 
<Item name='558' id=None value='558' contents='Company Name' label='Company Name'>]

Этот снимок экрана показывает, как выглядит веб-сайт

This screenshot shows how the website looks

In Для того, чтобы кнопка «Создать нового гостя» работала, необходимо изменить выпадающий список «Выбрать охват»

1 Ответ

0 голосов
/ 29 марта 2020

Посмотрев его снова, я обнаружил, что сайт работает javascript на основе содержимого этого раскрывающегося списка. Когда была выбрана правильная опция, она отправляла запрос на https://companywebsite.com/create-new-visit/set-outreach/?id=config_1.

. Мне удалось решить мою проблему, выполнив тот же запрос с помощью mechanize, а затем с помощью кнопки «Создать нового гостя».

...