如何使用机械化(python)在global_form ListControl元素中进行选择?

问题描述 投票:0回答:1

我正在与一家食物银行合作,以帮助他们在有人填写他们的进餐表时自动为新客人创建一个条目。为了创建新的访客,必须首先选择外联。这是通过作为全局表单一部分的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

为了使“创建新访客”按钮起作用,必须更改“选择外联”下拉列表

python html mechanize listcontrol
1个回答
0
投票

[再次查看后,我发现该站点根据该下拉菜单的内容运行了javascript。选择正确的选项后,它将向https://companywebsite.com/create-new-visit/set-outreach/?id=config_1发出请求。

通过使用机械化并使用“创建新访客”按钮发出相同的请求,我能够解决我的问题。

© www.soinside.com 2019 - 2024. All rights reserved.