Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby Mechanize在登录页中找不到表单_Ruby_Forms_Mechanize - Fatal编程技术网

Ruby Mechanize在登录页中找不到表单

Ruby Mechanize在登录页中找不到表单,ruby,forms,mechanize,Ruby,Forms,Mechanize,我正在尝试使用Ruby和Mechanize登录到一个网站,但是有一个特定的登录表单我遇到了麻烦。出于某种原因,Mechanize似乎无法识别这种形式 Mechanize.new.getwebsite.form返回nil,forms返回[] 有什么想法吗 我是否应该尝试其他类似的创业板推荐 这是表单中的源代码。请注意单击时的JavaScript: 您是否尝试过以下方法: $ pry require 'mechanize' agent = Mechanize.new fm_raw_mechanize

我正在尝试使用Ruby和Mechanize登录到一个网站,但是有一个特定的登录表单我遇到了麻烦。出于某种原因,Mechanize似乎无法识别这种形式

Mechanize.new.getwebsite.form返回nil,forms返回[]

有什么想法吗

我是否应该尝试其他类似的创业板推荐

这是表单中的源代码。请注意单击时的JavaScript:


您是否尝试过以下方法:

$ pry
require 'mechanize'
agent = Mechanize.new
fm_raw_mechanize = agent.get('https://www.fitmob.com/login')
email_field = fm_raw_mechanize.at "#email"
email_field.attributes["value"].value = "me@email.com"
fm_raw_mechanize.at('input[@name="pwd"]')['value'] = "password"
agent.click(fm_raw_mechanize.at("#login_email"))

查看doc.source,我在登录页面上没有看到标记。如果您正在寻找mechanize的替代方案,那么有许多基于webdriver的解决方案,例如selenium、watir、gebish等。如果找不到要提交的表单,您可以使用Mechanizepost。这是行不通的,mechanize没有javascript引擎,它不了解单击按钮之类的事情。
<div>
<div class="email_reg" id="email_reg"> 
<div id="email_box" class="form-group ">

<label for="email"></label>

<input type="text" name="email" id="email" value="kevin@gmail.com" placeholder="Email address">
</div>
<div id="pwd_box" class="form-group error">
<label for="pwd"></label>
<input type="password" name="pwd" id="pwd" placeholder="Password">
<span id="pwd_info" class="err">Valid passwords have 6 characters or more</span>

</div>

<a href="#" onclick="javascript:loggingTrack('web: pw reset click from login', {}, function(resp) {document.location = '/password/reset';});" class="forgot_pw">Forgot your password?</a>
</div>
<button id="login_email">Log in via email</button>

<span class="divider">or</span>
<div id="login_fb_box">
<button id="login_fb">Facebook Connect</button>
</div>

<span class="alternative">Don't have an account? <a href="/signup">Request an invite</a></span>
</div>
$ pry
require 'mechanize'
agent = Mechanize.new
fm_raw_mechanize = agent.get('https://www.fitmob.com/login')
email_field = fm_raw_mechanize.at "#email"
email_field.attributes["value"].value = "me@email.com"
fm_raw_mechanize.at('input[@name="pwd"]')['value'] = "password"
agent.click(fm_raw_mechanize.at("#login_email"))