我有以下 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/