我需要使用Mechanize来操作一个网页,但是他们已经很难了......我无法访问我需要通过传统方式操作的元素。
方案是我想从下拉列表中选择一个元素,然后点击登录按钮。
这是我的HTML:
<body style="background-color:white;">
<div class="alert-login-place-holder"></div>
<div class="container">
<h2 style="color: #1ab394;"><span style="color: black;">MAX </span>- X1 Menu Console - <span style="color: black;">Login</span>
</h2>
<div class="row">
<div class="col-sm-6 b-r" style="border-right: 2px solid #e7eaec;">
<br>
<div class="form-group">
<p>Select Your Identity Provider:</p>
<select class="form-control partner-select" style="font-size: 12px;width: 300px;">
</select>
</div>
<div class="form-group">
<p>
<a class="btn btn-primary login-button" href="#" role="button" onclick="handlePartnerLogin()"
style="width:15%">GO</a>
</p>
</div>
</div>
</div> <!-- /container -->
</div>
</body>
这是我的红宝石代码:
require 'mechanize'
agent = Mechanize.new
#Make it where I can hit https...
agent.agent.http.verify_mode = OpenSSL::SSL::VERIFY_NONE
#Go to the login page
page = agent.get("my_url_that_I_figure_I_shouldnt_share")
#Grab the select and choose option
form = Mechanize::Form.new page.at('body'), agent
print form.class
print page.body
form.field_with(:class => 'form-control partner-select').options[1].click
它不起作用,因为field_with要求:id或:name。我没有。我可以通过.search获取元素...但是我如何在表单中操作它?这是一个真正的痛苦...而且很遗憾,因为有很多我需要联系的元素,这些元素同样不能通过名称或ID来解决......