我阅读了Perl WWW::Mechanize
模块,这是语法:
$mech->tick( $name, $value [, $set] )
但是,当我检查网页的页面来源时,这就是我发现的:
<div class="key-name" title="GLOBAL_PROCESSING">GLOBAL_PROCESSING</div>
<div class="col-50 col-left">
<div class="string-controls">
<a href="#" class="control-expand-toggle"></a>
<a href="#" class="control-activity-toggle ">0</a>
<input type="checkbox" class="control-select-string">
</div>
我没有看到复选框字段的ID和值。我该怎么做?
此复选框也不是任何表单的一部分。如何在Mechanize中引用此复选框?
HTML代码
<div id="edit-controls-leftside" class="clear-fix">
<div class="col-left">
<label>
<input id="select-all-visible" class="" type="checkbox">
Select all visible
</label>
<a id="expand-all" class="blue-on-dark-blue text-link arrow-leftside-down" href="#">Show key names</a>
<a id="show-modify-nav" class="blue-on-dark-blue text-link arrow-leftside-right disabled" href="#">Modify selected...</a>
<nav id="modify-nav" style="display: none;">
<a id="show-order-translation" class="sub-nav-item" href="#">Order translations</a>
答案 0 :(得分:1)
$ mech-&gt; tick('name'=&gt; undef);
答案 1 :(得分:0)
以下是使用perl Mechanize
检查没有值的复选框的一些变通方法。
来自Mechanize manual.
如何选中没有定义值的复选框?
将其设置为“on”的值。
$mech->field( my_checkbox => 'on' );
另一个选项here.
$form->find_input('checkbox_id')->check();
唯一的问题是您的复选框也没有名称/ ID。希望其他人可以使用除名称/ ID之外的其他内容来获取复选框。我会继续寻找。
编辑:
您可以使用:
$mech->find_all_inputs( ... criteria ... )
按类型和/或类名找到复选框,因为它没有名称或ID。
答案 2 :(得分:0)
使用method check
in HTML::Form
。文档引用:
某些输入类型表示可以打开/关闭的切换。这包括“复选框”和“选项”输入。调用此方法可以打开此输入,而无需知道值名称。
适用于HTML的代码:
my $w = WWW::Mechanize->new;
$w->get('file:///tmp/10775965.html');
[$w->forms->[0]->inputs]->[0]->check;
答案 3 :(得分:0)
你为什么要这样做?
因为复选框没有名称或值,所以它不会是任何提交的一部分,即使它是表单的一部分,也不是。
您认为JavaScript使用该复选框来切换其他复选框吗?