Python Mechanize在我的网页上找不到任何表单

Python Mechanize在我的网页上找不到任何表单,python,mechanize,autologin,Python,Mechanize,Autologin,堆栈溢出! 我最近开始学习Python,主要是用C++和java,几年后,我想通过制作一个程序,让我的知识不断地测试。 你看,我的学校使用在线排课服务Magister,为我们提供学校的日常预约,并告诉我们什么时候上课 现在,我想如果我有一个Windows小部件在我的桌面上显示我的日程安排,它会非常方便。 我研究了一下windows小部件,决定最好使用python来完成这项任务,并偶然发现了mechanize库 我已经写了一些代码,但是有一个问题,因为程序似乎找不到任何形式!我在开发人员控制台中使

堆栈溢出! 我最近开始学习Python,主要是用C++和java,几年后,我想通过制作一个程序,让我的知识不断地测试。 你看,我的学校使用在线排课服务Magister,为我们提供学校的日常预约,并告诉我们什么时候上课

现在,我想如果我有一个Windows小部件在我的桌面上显示我的日程安排,它会非常方便。 我研究了一下windows小部件,决定最好使用python来完成这项任务,并偶然发现了mechanize库

我已经写了一些代码,但是有一个问题,因为程序似乎找不到任何形式!我在开发人员控制台中使用了一些javascript来检查页面上有多少表单,只有一个用于登录,但它没有任何类型的名称,只有一个类,所以我尝试使用

browser.select_form(nr=0)
但这给了我一个FormNotFoundException,所以我尝试使用 br.select_formpredicate=lambda f:f.attrs.get'class'='FormClassName',这给了我同样的异常

我试着让mechanize打印页面上的所有表单,但它只是打印了一个空列表

你知道问题是什么吗?更重要的是,我如何解决它

提前谢谢

编辑-

表格的HTML格式:

Stackoverflow没有保留缩进,但它在那里。
此后,我尝试使用selenium webdriver模块,但也不起作用,因此我删除了该代码。

显示页面的HTML我编辑了我的答案,现在它包含HTML格式。你知道问题出在哪里吗?我希望那页上只有一张表格?同时发布您编写的完整的mechanize代码。在OP中添加了python代码,是的,这是唯一的表单。难道表单一开始就不存在,然后用javascript加载吗?
 <form class="ng-pristine ng-invalid ng-invalid-required">
            <fieldset legend="">
                <div>
                    <label for="username">Username</label>
                    <input class="type-text ng-pristine ng-valid ng-valid-required" type="text" name="username" id="username" data-ng-model="credentials.Username" required="required" data-on-keyup="onLogin()" data-keys="[13]" tabindex="1" autocapitalize="off" data-sm-focus="false" data-sm-auto-fill="credentials.Username">
                </div>
                <div>
                    <label for="password">Password</label>
                    <input class="type-text ng-pristine ng-invalid ng-invalid-required" type="password" name="password" id="password" data-ng-model="credentials.Password" required="required" data-on-keyup="onLogin()" data-keys="[13]" tabindex="2" data-sm-focus="true" data-sm-auto-fill="credentials.Password">
                </div>
                <div class="btn-row">
                    <span class="check">
                        <input type="checkbox" class="checkbox ng-pristine ng-valid" name="remember" data-ng-model="credentials.Usernameremember" id="remember" tabindex="3"><label for="remember"><span></span>Remember username</label>
                    </span>
                    <a class="btn-pri" data-ng-click="onLogin()" tabindex="3">Inloggen</a>
                </div>
                <a class="end-link ng-hide" title="Please choose a different school" data-ng-show="showScholenkiezer" tabindex="4" href="magister://doorstarten_blokkeren=1">Please choose a different school</a>
                <a class="end-link account ng-hide" title="Can't access your account?" tabindex="4" data-ng-show="schoolinformatie.ToonPasswordVergetenOptie" data-ng-click="onForgotPassword();">Can't access your account?</a>
            </fieldset>
        </form>
if __name__ == '__main__':

browser = Browser()
browser.open('SiteURL')
browser.select_form(nr = 0) # Or browser.select_form(predicate=lambda f: f.attrs.get('class') == 'ng-pristine ng-invalid ng-invalid-required') but that didn't work either
browser.form['username'] = 'Username'
browser.form['password'] = 'Password'
browser.submit()