簡體   English   中英

如何使用 WWW::Mechanize 選中復選框?

[英]How to check a checkbox using WWW::Mechanize?

我閱讀了 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">
&nbsp;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>

你為什么要這樣做?

因為復選框沒有名稱或值,所以它不會是任何提交的一部分,即使它是表單的一部分,但它不是。

您認為 JavaScript 使用復選框來切換其他復選框嗎?

$mech->tick( 'name' => undef );

以下是使用 perl Mechanize檢查沒有值的復選框的一些解決方法。

來自機械化手冊。

如何選中未定義值的復選框?

將其設置為“on”的值。

$mech->field( my_checkbox => 'on' );

這里找到另一個選擇

$form->find_input('checkbox_id')->check();

唯一的問題是您的復選框也沒有名稱/ID。 希望其他人可以加入如何使用名稱/ID 以外的其他內容來獲取復選框。 我會繼續尋找。

編輯:

您或許可以使用:

$mech->find_all_inputs( ... criteria ... )

按類型和/或類名定位復選框,因為它沒有名稱或 ID。

使用HTML::Form方法check 文檔引用:

某些輸入類型代表可以打開/關閉的切換。 這包括“復選框”和“選項”輸入。 調用此方法可打開此輸入,而無需知道值名稱。

適用於您的 HTML 的代碼:

my $w = WWW::Mechanize->new;
$w->get('file:///tmp/10775965.html');
[$w->forms->[0]->inputs]->[0]->check;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM