使用Mechanize和Ruby定位表单

时间:2016-03-18 15:36:24

标签: ruby-on-rails ruby ruby-on-rails-4

注意:看起来页面是使用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 %>

表格仍无处可寻......

由于某种原因,没有什么能够找到表格......非常感谢任何提示或帮助!

1 个答案:

答案 0 :(得分:0)

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

 <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帖子并从那里拿走。

此处似乎还有一个备用登录页面:

Login

有形式......

<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>