Python机械化选择表单FormNotFoundE

2024-05-29 00:09:29 发布

您现在位置:Python中文网/ 问答频道 /正文

我想选择一个机械化的表单。这是我的代码:

br = mechanize.Browser()
self.br.open(url)
br.select_form(name="login_form")

表格代码:

<form id="login_form" onsubmit="return Index.login_submit();" method="post" action="index.php?action=login&server_list=1">

但我有个错误:

mechanize._mechanize.FormNotFoundError: no form matching name 'login_form

Tags: 代码namebrselfbrowserformurl表单
2条回答

更具可读性:

class Element_by_id:
    def __init__(self, id_text):
        self.id_text = id_text
    def __call__(self, f, *args, **kwargs):
        return 'id' in f.attrs and f.attrs['id'] ==self.id_text

然后:

b.select_form(predicate=Element_by_id("login_form"))

问题是您的表单没有名称,只有id,而且是login_form。可以使用谓词:

br.select_form(predicate=lambda f: f.attrs.get('id', None) == 'login_form')

(如果f.attrs具有键id,如果是,则id值等于login_form)。或者,如果知道是第一个表单还是第二个表单等,则可以在页面中传递表单的编号。例如,下面的行选择第一个表单:

br.select_form(nr=0)

相关问题 更多 >

    热门问题