【问题标题】:Python + Mechanize - Emulate Javascript button click using POST?Python + Mechanize - 使用 POST 模拟 Javascript 按钮单击?
【发布时间】:2020-11-24 07:53:16
【问题描述】:

我正在尝试在网站上自动填写汽车保险报价单: (按照与站点 URL 相同的格式,我们将其命名为:“https://secure.examplesite.com/css/car/step1#noBack”)

我被困在 rego 部分,因为一旦添加了 rego,就需要单击一个按钮来执行搜索,而且这似乎是繁重的 Javascript,我知道 mechanizer 无法处理这个问题。我不精通 JavaScript,但我可以看到,当单击按钮时,会向此 URL 发出 POST 请求:(“https://secure.examplesite.com/css/car/step1/searchVehicleByRegNo”)请看图片也。

如何在 Mechanize 中模拟这个 POST 请求来运行 javascript?所以我可以看到响应/与响应交互?或者这是不可能的?我可以考虑 bs4/requests/robobrowser 代替。我只有大约 4 个月的学习时间!谢谢

# Mechanize test
import mechanize

br = mechanize.Browser()
br.set_handle_robots(False)   # ignore robots
br.set_handle_refresh(False)  # can sometimes hang without this
res = br.open("https://secure.examplesite.com/css/car/step1#noBack")

br.select_form(id = "quoteCollectForm")
br.set_all_readonly(False)    # allow everything to be written to

controlDict = {}

# List all form controls
for control in br.form.controls:
    controlDict[control.name] = control.value
    print("type = %s, name = %s, value = %s" %(control.type, control.name, control.value))

# Enter Rego etc "example"
br.form["vehicle.searchRegNo"] = "example"

# Now for control name = vehicle.searchRegNo, value = example

# BUT Now how do I click the button?? Simulate POST? The post url is formatted like:
# https://secure.examplesite.com/css/car/step1/searchVehicleByRegNo

Javascript POST

【问题讨论】:

    标签: python-3.x forms post mechanize mechanize-python


    【解决方案1】:

    解决了我自己的问题-

    步骤:

    1. 在浏览器中打开开发工具
    2. 转到网络选项卡并清除
    3. 与表单元素交互(在我的例子中是 car rego finder)
    4. 点击从交互中发生的事件
    5. 复制准确的 URL、请求标头数据和有效负载
    6. 我使用 Postman 快速测试了请求和响应是否正确/与 Webform 相同,并找到了相关标头
    7. 在 postman 中转换为 python 请求代码

    现在我可以完全与表单交互了

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-11-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多