Ruby Mechanize操作下拉列表,没有名称,也没有id

时间:2018-03-02 14:35:36

标签: ruby nokogiri mechanize

我需要使用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来解决......

0 个答案:

没有答案