繁体   English   中英

机械化元素

[英]Mechanize click on element

我有以下html代码。 而且我想使用Ruby Mechanize选择下拉菜单元素并输入特定的文本(我想单击它)。 示例中文。 我的问题是怎么做? 我是机械化的新手。

<form class="form-inline search search-large" action="/translate" method="get">  
<input id="q" name="q" type="text" placeholder="Search" class="input-large" value="" autofocus="autofocus" data-pons-redirect-input="true" data-pons-autofocus="true" autocomplete="off">
<div class="btn-group source open" data-pons-lang="de">
  <button class="btn btn-large dropdown-toggle" data-toggle="dropdown">
    <span class="text">Chinese</span>
    <i class="icon-angle-down"></i>
  </button>
  <ul class="dropdown-menu">

        <li>
          <a href="#" class="language">
            <span class="text">Chinese</span>
            <span class="flag flag_zh"></span>
          </a> 
        </li>

        <li>
          <a href="#" class="language">
            <span class="text">Elvish</span>
            <span class="flag flag_lb"></span>
          </a> 
        </li>        
  </ul>
</div>
</form>

坏消息

据我所知,您的示例页面过于.click无法通过.click方法进行机械化接口。 实际上,它可以跟踪链接(“”),但是我想这对您没有多大帮助,因为它似乎涉及到一些JavaScript或其他黑魔法。

您可以先通过禁用浏览器中的JavaScript来尝试查看该页面是否可以很好地进行机械化(不保证)。

好消息

无论如何,最后您将需要机械化执行某些类型的HTTP请求-由JS触发还是不触发。 使您能够机械化(尽管不一定是所有方案的最佳选择)。

提示

我鼓励您使用浏览器开发人员的东西(通常通过按F12触发),查看实际发生的情况,例如,使用哪种值提交哪种表单。 并且不要忘了检查是否与javascript一起使用时是否相同(据我所知机械化不会执行JavaScript)。

同样,在开发机械化代码时,请使用irb或其他类似pry的repl来尝试运行您的代码。 机械化代理或页面将具有save或save_as或类似方法,您可以始终使用该方法保存当前页面并在浏览器或收藏夹文本编辑器中对其进行查看。 并记住irb中的_为您提供了最后的返回值。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM