You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Mechanize定位Palo Alto SSO登录页用户名字段失败求助

自动化登录Palo Alto Networks支持站点遇到的表单定位问题

我尝试自动化访问https://support.paloaltonetworks.com/,该网站需先在https://sso.paloaltonetworks.com/完成登录。已通过以下代码成功打开站点:

import re
import mechanize
br = mechanize.Browser()
br.set_handle_robots(False)
br.addheaders = [('User-agent', 'Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.1) Gecko/2008071615 Fedora/3.0.1-1.fc9 Firefox/3.0.1')]
br.open("https://paloaltonetworks.com/")
print(br)

但尝试定位用户名/邮箱字段填写内容时,始终出现错误。我添加以下代码查找表单:

formcount=0
for frm in br.forms():
  if str(frm.attrs["id"])=="username":
    break
  formcount=formcount+1
br.select_form(nr=formcount)

得到如下报错:

Traceback (most recent call last):
  File "scraper_mechanize.py", line 20, in <module>
    br.select_form(nr=formcount)
  File "/home/tdadmin/testing/Python/PaloAlto/grabdata/lib64/python3.6/site-packages/mechanize/_mechanize.py", line 681, in select_form
    raise FormNotFoundError("no form matching " + description)
mechanize._mechanize.FormNotFoundError: no form matching nr 0

随后我尝试以下代码遍历表单,却没有任何输出:

for form in br.forms():
   print("Form name:", form.name)
   print(form)

但在页面源码中,我找到了用户名输入字段:

<input type="text" placeholder="" name="username" id="idp-discovery-username" value="" aria-label="" autocomplete="username" aria-required="true" required="" data-keeper-lock-id="k-o4yd510ha7">

该字段属于如下完整表单结构:

<form novalidate="novalidate" method="POST" action="/" data-se="o-form" slot="content" id="form19" class="idp-discovery-form o-form o-form-edit-mode"><div data-se="o-form-content" class="o-form-content o-form-theme clearfix"><h2 data-se="o-form-head" class="okta-form-title o-form-head">Sign In</h2><div class="o-form-error-container" data-se="o-form-error-container"></div><div class="o-form-fieldset-container" data-se="o-form-fieldset-container"><div data-se="o-form-fieldset" class="o-form-fieldset o-form-label-top margin-btm-30"><div data-se="o-form-label" class="okta-form-label o-form-label"><label for="idp-discovery-username">Email&nbsp;</label></div><div data-se="o-form-input-container" class="o-form-input"><span data-se="o-form-input-username" class="o-form-input-name-username o-form-control okta-form-input-field input-fix"><input type="text" placeholder="" name="username" id="idp-discovery-username" value="" aria-label="" autocomplete="username" aria-required="true" required="" data-keeper-lock-id="k-o4yd510ha7"><keeper-lock class="focus-visible keeper-lock-disabled" tabindex="-1" id="k-o4yd510ha7" aria-label="Open Keeper Popup" role="button" style="background-image: url(&quot;chrome-extension://bfogiafebfohielmmehodmfbbebbbpei/images/ico-field-fill-lock-disabled.svg&quot;) !important; background-size: 24px 24px !important; cursor: pointer !important; width: 24px !important; position: absolute !important; opacity: 1 !important; margin-top: auto !important; min-width: 24px !important; top: 7px; left: 281px; z-index: 1; padding: 0px; animation-name: none; height: 24px !important"></keeper-lock></span></div></div><div data-se="o-form-fieldset" class="o-form-fieldset o-form-label-top margin-btm-0"><div data-se="o-form-input-container" class="o-form-input"><span data-se="o-form-input-remember" class="o-form-input-name-remember"><div class="custom-checkbox"><input type="checkbox" name="remember" id="input34"><label for="input34" data-se-for-name="remember" class="">Remember me</label></div></span></div></div></div></div><div class="o-form-button-bar"><input class="button button-primary" type="submit" value="Next" id="idp-discovery-submit" data-type="save"></div></form>

这表明页面存在id为form19的表单,但Mechanize无法识别或定位它。请问是否可以通过Mechanize定位特定HTML标签,还是必须使用BeautifulSoup?作为Mechanize新手,我尝试了多种搜索到的方法但均未成功。


内容的提问来源于stack exchange,提问作者Bokkie

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.03 11:30:17