-1

指定された条件で Web ページ上のリンクをクリックするコードを作成する方法:

スクリプトは各 div.table-row を調べて、div のリスト要素 (div.domains ul li) に特定の文字列 (somedomain.com) が含まれているかどうかを確認し、div.actions にある a.delete リンクをクリックします。 div.table-row 内。

HTML 構造は次のとおりです。

<div class="table-row">
  <div class="domains">
    <ul>
    <li>somedomain.com</li
    <li>someotherdomain.com</li>
    </ul>
  </div>
  <div class="actions">
    <ul class="menu">
    <li><a class="delete">Delete</a></li>
  </div>
</div>

このコードを ruby​​ mechanize でどのように記述しますか?

すべての .table-rows を選択してループし、条件が満たされた場合にリンクの削除をクリックする方法がわかりませんか?

手伝ってくれてありがとう

4

1 に答える 1

0

要素をループして正しいクラス名を確認するには、Javascript (RoR ではない) を使用する必要があります。リンクをプログラムで「クリック」する方法はありませんが、Javascript を使用して必要な操作を実行できます。

<div class="table-row">
 <div class="domains">
  <ul>
   <li class="domain1">somedomain.com</li>
   <li class="domain2">someotherdomain.com</li>
  </ul>
 </div>
<div class="actions">
 <ul class="menu">
  <li><a class="delete">Delete</a></li>
</div>

Javascript に関しては、この種のことは JQuery のような Javascript フレームワークで最も簡単ですが、手動では次のようになります。

<script type="text/javascript">
  function searchForDomains(domainName) {
   var divs = document.getElementsByTagName('DIV');
    for (var i = 0; i < divs.length; i++) {
     var div = divs[i];
     if (div.className == 'table-row') {
       var tableRow = div;
       var lis = tableRow.getElementsByTagName('LI');
       for (var j = 0; j < lis.length; j++) {
         var li = lis[j];
         if (li.innerHTML == domainName) {
          doDelete(tableRow);
       }
     }
    }
  }

  function doDelete(tableRow) {
    // do whatever it is that you'd like to see happen if the delete link was clicked.
  }

これが行うことは、ページ上のすべての DIV をループ処理することです。適切なクラスの LI が見つかると、その DIV 内のすべての LI がループ処理され、探しているドメインの LI が見つかると、何らかのアクションを実行する関数。この関数は、ページの読み込み時、またはボタンを押すなどのユーザー アクションに応答して呼び出すことができます。

于 2012-07-24T23:35:29.997 に答える