Tôi gặp một số khó khăn với một trong các biểu mẫu đăng nhập của nhà cung cấp dịch vụ của chúng tôi. Các trang web khác đang hoạt động tốt nhưng vì một số lý do tôi không thể vượt qua biểu mẫu đăng nhập của họ.Đăng nhập vào trang web bằng Cơ chế và Nokogiri?
Trang web đăng nhập cho là như thế này:
<form accept-charset="UTF-8" action="/sessions" class="new_user_session" id="new_user_session" method="post"><div style="margin:0;padding:0;display:inline"><input name="utf8" type="hidden" value="✓" /><input name="authenticity_token" type="hidden" value="kaLEkPesQfeheronzGTdfnVAzpuUiC+VmjVXBu540n8=" /></div>
<fieldset class="big">
<div class="form-row">
<div class="form-label">
<label for="user_session_email">Email</label>
</div>
<div class="form-field">
<input id="user_session_email" name="user_session[email]" size="30" type="text" />
</div>
</div>
<div class="form-row">
<div class="form-label">
<label for="user_session_password">Password</label>
</div>
<div class="form-field">
<input id="user_session_password" name="user_session[password]" size="30" type="password" />
</div>
<div class="form-comment"><p><a href="/password_resets/new" class="link-password-recovery">Forgot your password?</a></p></div>
</div>
<div class="form-row optional">
<div class="form-field">
<label for="user_session_remember_me"><input name="user_session[remember_me]" type="hidden" value="0" /><input id="user_session_remember_me" name="user_session[remember_me]" type="checkbox" value="1" /> Remember me for 2 weeks</label>
</div>
</div>
</fieldset>
Tôi đã cố gắng để đăng nhập sử dụng mã tương tự như khác các trang web khác nhưng nó không hoạt động.
# Create a new mechanize object
agent = Mechanize.new
# Load the dial9 website
page = agent.get("http://webapplication.co.uk")
# Select the first form
form = agent.page.forms.first
form.username = 'username
form.password = 'password'
# Submit the form
page = form.submit form.buttons.first
Tôi cũng đã thử một cách khác nhau của việc đăng nhập như đề xuất trong questions/answers khác SO:
email = '[email protected]'
password = 'password
# Create a new mechanize object
agent = Mechanize.new
# Load the postmarkapp website
page = agent.get("https://domain.com")
# Select the first form
form = agent.page.forms.first
form.field_with(:email => "user_session_email").value = email
form.field_with(:password => "user_session_password").value = password
# Submit the form
page = form.submit form.buttons.first
Sử dụng phương pháp này xác thực tôi nhận được đầu ra sau khi chạy nhiệm vụ rake:
undefined method `email' for [hidden:0x3fef2ab2b994 type: hidden name: utf8 value: ✓]:Mechanize::Form::Hidden
Khi kiểm tra kỹ hơn, lỗi trên có vẻ là do thực tế là có trường ngay sau khi biểu mẫu được bắt đầu:
<form accept-charset="UTF-8" action="/sessions" class="new_user_session" id="new_user_session" method="post"><div style="margin:0;padding:0;display:inline"><input name="utf8" type="hidden" value="✓" /><input name="authenticity_token" type="hidden" value="kaLEkPesQfeheronzGTdfnVAzpuUiC+VmjVXBu540n8=" /></div>
Tôi có thiếu gì đó không? Nếu có thì sao? Bất kỳ con trỏ được đánh giá cao!