どのようにリンクをループするとワチールを使用して各1をクリックしてください

StackOverflow https://stackoverflow.com/questions/1670036

  •  13-09-2019
  •  | 
  •  

質問

Iは、グリッドを使用したWebページを有し、そしていくつかの列は、[サーバへのラウンドトリップによって]その列によって値をソートします列ヘッダーのリンクを持っています。

私はそれらの並べ替えリンクを識別し、連続して各1をクリックします単一ワチールテストを書きたいです。これは、ソートの発現から生じる一切のランタイム例外がない確実にスモークテストです。

私の質問は、(1)これらのリンクを識別し、(2)連続して、それぞれをクリックする最良の方法は何ですか?これは私がこれまで持っているものです。

$ie.table(:id, "myGrid").body(:index, 1).each do | row |
  row.each do | cell |
    ## todo: figure out if this contains a sort link
    ## todo: click the link now, or save a reference for later?
  end
end
役に立ちましたか?

解決

私はが、ページの読み込みをトリガーするリンクをクリックするので、ループ内の各リンクをクリックすることができなくなると思うと、私はこれが他のワチールリンク要素を無効にすると信じています。

だから、私は何を示唆することで、リンクのIDを取得し、その後、クリックをしてお互いをループということです。

<時間>

たとえば、私はあまりにも、それらの並べ替えリンクと意味のあるIDに特定のクラスを追加します。 線に沿って何かます:

<a id='sortby-name' class='sorting' href='...'>Name</a>

次に、あなたがこれでそれらを選ぶことができます:

$ie.table(:id, "myGrid").body(:index, 1).each do | row |
  # pick sorting links' ids
  sorting_link_ids = row.links.select{|x| x.class_name == "sorting"}.map{|x| x.id}
end

そして、あなたはこのようなあなたのクリック操作を行います:

sorting_link_ids.each do |link_id|
  $ie.table(:id, "myGrid").body(:index, 1).link(:id, link_id).click
end
助け

希望!

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top