使用 Mechanize 和 Ruby 定位表单



注意:该页面似乎是使用Angular构建的.js所以也许这就是导致问题的原因???我尝试了许多不同的方法来定位此页面上显示的表单:"https://use-manager.com/#!/signin"。 出于某种原因,当我尝试通过正常方法找到它们时,找不到任何表单,例如:

 @form = @page.form_with(class: "signin")

甚至

@form = @page.forms.first

对我来说更奇怪的是,如果我只是这样做:

@page = @agent.get('https://use-manager.com')

,然后在视图中显示页面正文:

<%= @page.body.inspect %>

表格仍然无处可寻...

由于某种原因,没有任何内容能够找到表单...任何提示或帮助将不胜感激!

检查元素,我们发现以下内容:

 <input aria-invalid="false" tabindex="0" class="ng-pristine ng-valid md-input ng-touched" id="username" name="username" data-ng-model="credentials.username" type="text">

密码:

<input id="password" class="ng-pristine ng-valid md-input ng-touched" type="password" data-ng-model="credentials.password" name="password" tabindex="0" aria-invalid="false"></input>

按钮:

<button class="md-button md-default-theme" ng-transclude="" type="submit">

填写用户/密码后单击按钮提交以下 JSON(作为 POST 到 https://use-manager.com/auth/signin)

{"username":"testing","password":"123"}

因此,如果我是你,我会跳过填写表单的担忧,只需在登录页面发布 JSON 帖子并从那里获取它。

这里似乎还有一个备用登录页面:

登录

那有一个形式...

<form method="post" action="login;jsessionid=5B1002FE04FDBDC6B0D00C0949EDE75F?service=https%3A%2F%2Fwww.use-manager.com%2Fauth%2Fsignin" name="login">
                                    <input name="action" value="do_login" type="hidden">
                                        <input name="urlparams" value="" type="hidden">
                                        <div class="row">
                                            <label>Username&nbsp;</label>                                       
                                            <input id="username" class="textbox" name="username" size="32" tabindex="1" accesskey="n">
                                        </div>
                                        <div class="row">
                                            <label>Password &nbsp;</label>
                                            <input class="textbox" id="password" name="password" size="32" tabindex="2" accesskey="p" type="password">                                                                                      
                                        </div>
                                        <div class="remember">
                                          <input name="rememberMe" id="rememberMe" value="true" type="checkbox"> 
                                          <label for="rememberMe">Remember Me</label>
                                        </div> 
                                        <ul>
                                            <li><a href="http://www.use-group.com/use-manager-support.html" target="_blank">Trouble logging in?</a></li>
                                            <li><a href="javascript:forgotpwd()">Forgot Password?</a></li>
                                        </ul>
                                        <div class="row btn-row">
                                            <input name="lt" value="_c316E91C9-E9CC-CB77-9C3F-1D94EC1A5AF3_kB493A777-3227-2796-6E52-DC8BA896B36D" type="hidden">
                                            <input name="_eventId" value="submit" type="hidden">
                                            <input class="submit" name="bttn1" onclick="callBldg(document.forms[0].username.value)" accesskey="l" value="LOGIN" tabindex="4" type="button">
                                            <input class="submit" name="reset" accesskey="c" value="CLEAR" tabindex="5" type="reset">
                                        </div>
                                </form>

最新更新