ruby - Mechanize 点击元素

标签 ruby mechanize

我有以下 html 代码。我想使用 Ruby Mechanize 选择带有特定文本的下拉元素(我想单击它)。示例中文。我的问题是如何做到这一点?我是 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>

最佳答案

坏消息

据我所知,您的示例页面过于复杂,无法让 Mechanize 与例如一个 .click 方法。实际上,它可以跟踪链接(“”),但我想这不会对您有太大帮助,因为似乎涉及一些 javascript 或其他黑魔法。

您可以先尝试通过在浏览器中禁用 JavaScript 来查看该页面是否能够与 mechanize 良好地配合(不保证)。

好消息

无论如何,最后你会希望 mechanize 执行某些类型的 HTTP 请求 - 由 JS 触发与否并不重要。 你将能够使用 Mechanize 来做到这一点(尽管它不一定是所有场景的最佳选择)。

提示

我鼓励您使用浏览器开发者工具(通常通过按 F12 启动)并查看到底发生了什么,例如提交哪个表单以及哪些值。并且不要忘记检查使用和不使用 javascript 时是否相同(据我所知,mechanize 不会执行 JavaScript)。

此外,在开发 mechanize 代码时,请使用 irb 或其他 repl(例如 pry)来实时尝试您的代码。您的 mechanize 代理或页面将具有 save 或 save_as 或类似方法,您可以随时保存当前页面并在浏览器或喜爱的文本编辑器中查看它。请记住 irb 中的 _ 为您提供了最后的返回值。

关于ruby - Mechanize 点击元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25743073/

相关文章:

ruby - 如何在 Volt 中创建 jQuery 切换类?

html - 注入(inject) Ruby 并放入 HTML

ruby-on-rails - Rails 4. 唯一 ID 计数器

python - 如何手动向已在 mechanize 中设置 cookie 的 session 添加更多 cookie?

python - 在 Mechanize 表单中选择未命名的文本字段(python)

ruby-on-rails - 获取 Mechanize 以处理来自任意 POST 的 cookie(以编程方式登录网站)

ruby-on-rails - 用 hidden_​​field 更新 ruby​​ 对象?

Ruby/Gmail gem 来抓取已发送消息

python - 使用程序化 Web 浏览时无法使用检查元素访问输入字段

python - 尽管设置为忽略,但 Mechanize 返回 robot.txt