2017-09-05 18 views
1

ユーザーのリストを実行し、それぞれを新しいタブで開く必要があります。アクションを実行するとタブが閉じ、リストの次のユーザーを選択するために最初のタブに戻ります。リスト内の次のユーザーを注文順に選択するのに問題があります。問題は、リストアイテムの子要素である写真をクリックすることによってのみ各ユーザーを選択できることです。each.doリストの反復で各liの子要素を選択する方法は?

HTML

<div class="_gs38e"> 
<ul class="_8q670 _b9n99"> 

    <li class="_6e4x5"> 
    <div class="_npuc5"> 
    <a class="_pg23k _9irns _gvoze" style="width: 100px; height: 100px;"> 
    <img class="_rewi8" src="https://pic.com/t51.2885- 
    _1930374081979351040.jpg"></a> 
    <div class="_eryrc"> 
    <a class="_2g7d5 notranslate _o5iw8" title="username1_" 
    href="/username1_/">username1_</a> 
    </div> 
    </div> 
    </li> 

    <li class="_6e4x5"> 
    <div class="_npuc5"> 
    <a class="_pg23k _9irns _gvoze" style="width: 100px; height: 100px;"> 
    <img class="_rewi8" src="https://pic.com/t51.2885- 
    _1930374081979351040.jpg"></a> 
    <div class="_eryrc"> 
    <a class="_2g7d5 notranslate _o5iw8" title="username1_" 
    href="/username1_/">username1_</a> 
    </div> 
    </div> 
    </li> 

    <li class="_6e4x5"> 
    <div class="_npuc5"> 
    <a class="_pg23k _9irns _gvoze" style="width: 100px; height: 100px;"> 
    <img class="_rewi8" src="https://pic.com/t51.2885- 
    _1930374081979351040.jpg"></a> 
    <div class="_eryrc"> 
    <a class="_2g7d5 notranslate _o5iw8" title="username1_" 
    href="/username1_/">username1_</a> 
    </div> 
    </div> 
    </li> 

    <li class="_6e4x5"> 
    <div class="_npuc5"> 
    <a class="_pg23k _9irns _gvoze" style="width: 100px; height: 100px;"> 
    <img class="_rewi8" src="https://pic.com/t51.2885- 
    _1930374081979351040.jpg"></a> 
    <div class="_eryrc"> 
    <a class="_2g7d5 notranslate _o5iw8" title="username1_" 
    href="/username1_/">username1_</a> 
    </div> 
    </div> 
    </li> 

    <li class="_6e4x5"> 
    <div class="_npuc5"> 
    <a class="_pg23k _9irns _gvoze" style="width: 100px; height: 100px;"> 
    <img class="_rewi8" src="https://pic.com/t51.2885- 
    _1930374081979351040.jpg"></a> 
    <div class="_eryrc"> 
    <a class="_2g7d5 notranslate _o5iw8" title="username1_" 
    href="/username1_/">username1_</a> 
    </div> 
    </div> 
    </li> 
</ul> 
</div> 

これは、それだけですべてのリスト項目のページの最初の絵を見つけるとするたびに、選択された最初のユーザーになります。私は、各doループがリストアイテムを順番に実行していることを確認するためにユーザー名テキストの出力を追加しました。最初のユーザーだけを開いている間は、毎回別のリスト項目のユーザー名を正常に印刷します。各リスト項目の子がeach.doループに含まれるように私は、私は要素がで現在のLiの子として選択されるように定義するにはどうすればよい

Mylist = browser.ul(:class => "_8q670 _b9n99") 

#Index the UL to open each user in order 
Mylist.users.each_with_index do |user| 

    #open user in new tab by selecting photo 

    browser.a(:class => '_pg23k _9irns _gvoze').exists? 
    browser.a(:class => '_pg23k _9irns _gvoze').click(:control) 
    browser.windows.last.use 

    #performs action and closes tab 

     browser.windows.last.close 


puts user 
puts user.text 

end 

写真要素を定義するための方法が必要ですリスト?あなたは

user.a(:class => '_pg23k _9irns _gvoze').click(:control) 

理由を使用する必要がループ内で

+0

あなたは 'user.a(:class => '_pg23k _9irns _gvoze')を試しましたか?(:control)'をクリックしますか? –

+0

@ TarunLalwaniこれはうまくいった!ありがとう、友よ! –

+0

ブラウザの代わりにuserパラメータを使用することは可能ですか? @ TarunLalwani –

答えて

1

は、ブラウザのオブジェクトがメインのHTMLページ内の要素を検索するために使用することができるということです。ループ内で 'ブラウザ'を使用すると、HTML全体が表示され、検索条件を満たす複数の要素が存在する場合は、最初に見つかった要素が返されます。だから、それがループ内であっても、毎回同じ要素がページ上にあるはずです。

反復されているリスト内の現在のアイテムを使用するには、リストを歩いているときにリスト要素に割り当てるように指定した名前(この場合はuser)を使用する必要があります。

+0

ああそれは非常に意味をなさない! –

+0

うまくいけばそれはもう少し役に立つように答えを編集しました –

+0

ありがとう@ChuckvanderLinden :-) –

関連する問題