<div dir="ltr">Including QA mailing list in the discussion, with Tobi's permission.<div><br></div><div>To give you some context, here is the problem:</div><div><br></div><div><p style="margin-right:0px;margin-bottom:15px;margin-left:0px;color:rgb(51,51,51);font-family:Helvetica,arial,freesans,clean,sans-serif;font-size:13px;line-height:22.100000381469727px;background-color:rgb(251,251,251);margin-top:0px!important">

There are several similar elements on the page:</p><pre style="font-family:Consolas,'Liberation Mono',Courier,monospace;font-size:13px;margin-top:15px;margin-bottom:15px;background-color:rgb(248,248,248);border:1px solid rgb(221,221,221);line-height:19px;overflow:auto;padding:6px 10px;border-top-left-radius:3px;border-top-right-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px;word-wrap:normal;color:rgb(51,51,51)">

<code style="font-family:Consolas,'Liberation Mono',Courier,monospace;font-size:12px;margin:0px;padding:0px;border:none;background-color:transparent;border-top-left-radius:3px;border-top-right-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px;word-wrap:normal">...
module StatementPage
  include PageObject
...
  div(:statement1_name, css: ".wb-claimlistview:nth-child(1) div.wb-claim-name")
  div(:statement2_name, css: ".wb-claimlistview:nth-child(2) div.wb-claim-name")
...
end
</code></pre><p style="margin:15px 0px;color:rgb(51,51,51);font-family:Helvetica,arial,freesans,clean,sans-serif;font-size:13px;line-height:22.100000381469727px;background-color:rgb(251,251,251)">Is it possible to create a generic element? Something like this:</p>

<pre style="font-family:Consolas,'Liberation Mono',Courier,monospace;font-size:13px;margin-top:15px;margin-bottom:15px;background-color:rgb(248,248,248);border:1px solid rgb(221,221,221);line-height:19px;overflow:auto;padding:6px 10px;border-top-left-radius:3px;border-top-right-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px;word-wrap:normal;color:rgb(51,51,51)">

<code style="font-family:Consolas,'Liberation Mono',Courier,monospace;font-size:12px;margin:0px;padding:0px;border:none;background-color:transparent;border-top-left-radius:3px;border-top-right-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px;word-wrap:normal">...
module StatementPage
  include PageObject
...
  div(:statement_name, css: ".wb-claimlistview:nth-child(#{index}) div.wb-claim-name")
...
end
</code></pre><p style="margin:15px 0px;color:rgb(51,51,51);font-family:Helvetica,arial,freesans,clean,sans-serif;font-size:13px;line-height:22.100000381469727px;background-color:rgb(251,251,251)">This is what we ended up doing, falling back to Watir API, since we could not figure how to do it with page-object API:</p>

<pre style="font-family:Consolas,'Liberation Mono',Courier,monospace;font-size:13px;margin-top:15px;background-color:rgb(248,248,248);border:1px solid rgb(221,221,221);line-height:19px;overflow:auto;padding:6px 10px;border-top-left-radius:3px;border-top-right-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px;word-wrap:normal;color:rgb(51,51,51);margin-bottom:0px!important">

<code style="font-family:Consolas,'Liberation Mono',Courier,monospace;font-size:12px;margin:0px;padding:0px;border:none;background-color:transparent;border-top-left-radius:3px;border-top-right-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px;word-wrap:normal">...
module StatementPage
  include PageObject
...
  def statement_name_element(index)
    @browser.element(css: ".wb-claimlistview:nth-child(#{index}) div.wb-claim-name")
  end
...
end</code></pre></div><div class="gmail_extra"><br></div><div class="gmail_extra">Feel free to comment here, in Gerrit[1] or Github[2] or Twitter[3].</div><div class="gmail_extra"><br></div><div class="gmail_extra">Željko</div>

<div class="gmail_extra">--</div><div class="gmail_extra">1: <a href="https://gerrit.wikimedia.org/r/#/c/109103">https://gerrit.wikimedia.org/r/#/c/109103</a></div><div class="gmail_extra">2: <a href="https://github.com/cheezy/page-object/issues/203">https://github.com/cheezy/page-object/issues/203</a></div>

<div class="gmail_extra">3: <a href="https://twitter.com/zeljkofilipin/status/427782047671648256">https://twitter.com/zeljkofilipin/status/427782047671648256</a></div><div class="gmail_extra"><br><div class="gmail_quote">

On Thu, Jan 23, 2014 at 5:44 PM, Tobi Gritschacher <span dir="ltr"><<a href="mailto:tobias.gritschacher@wikimedia.de" target="_blank">tobias.gritschacher@wikimedia.de</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">

<div dir="ltr">Hey,<div><br></div><div>I tried something you showed me some time ago and explained in this email. But it seems I'm doing something wrong. Do you have any Idea? See my comment in <a href="https://gerrit.wikimedia.org/r/#/c/109103/" target="_blank">https://gerrit.wikimedia.org/r/#/c/109103/</a></div>


<div><br></div><div>thx!</div><div><br></div><div>cheers, tobi</div></div><div class="gmail_extra"><div><div class="h5"><br><br><div class="gmail_quote">On Wed, Sep 18, 2013 at 7:17 PM, Željko Filipin <span dir="ltr"><<a href="mailto:zfilipin@wikimedia.org" target="_blank">zfilipin@wikimedia.org</a>></span> wrote:<br>


<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div dir="ltr"><div><div>This two methods do the same thing, but the first one has a few added features and it is shorter.</div>


<div><br></div><div>  table(:enwiki, class: "enwiki")<br></div><div><br></div><div>  def enwiki_element</div>

<div>    @browser.table(class: "enwiki")</div><div>  end</div></div><div><br></div><div><br></div><div><br></div><div>This</div><div><br></div><div>  table(:enwiki, class: "enwiki")</div><div>  div(:enwiki, class: "enwiki")</div>




<div>  ...</div><div><br></div><div>could be simplified like this</div><div><br></div><div><div>  def language_element(type)</div><div>    # type = :div</div><div>    send(type, :enwiki, class: "enwiki")</div><div>




  end</div></div><div><br></div><div><br></div><div><br></div><div>This</div><div><br></div><div><div>  table(:enwiki, class: "enwiki")</div><div>  table(:dewiki, class: "dewiki")</div></div><div>  ...</div>




<div><br></div><div>Could be simplified like this</div><div><br></div><div>  def language_element(language)</div><div>    table("#{language}wiki".to_sym, class: "#{language}wiki")</div><div>  end</div>




<div><br></div><div>Let me know if you have any questions! :)</div><span><font color="#888888"><div><br></div><div>Željko</div><div><br></div></font></span></div>
</blockquote></div><br><br clear="all"><div><br></div></div></div>-- <br><div dir="ltr"><div><div>Tobi Gritschacher</div><div>Software Developer - Wikidata - <a href="http://www.wikidata.org" target="_blank">http://www.wikidata.org</a></div>


<div><br></div><div>Imagine a world, in which every single human being can freely</div><div>share in the sum of all knowledge. That‘s our commitment.<br></div><div><br></div><div>Wikimedia Deutschland e.V. | Tempelhofer Ufer 23-24 | 10963 Berlin<br>


</div></div><div>Phone <a value="+4930219158260" style="color:rgb(17,85,204)">+49 (0)30 219 158 260</a><br></div><div><br><a href="http://www.wikimedia.de/" style="color:rgb(17,85,204)" target="_blank">http://wikimedia.de</a><br>


<div><br>Wikimedia Deutschland - Gesellschaft zur Förderung Freien Wissens e.V. Eingetragen im Vereinsregister des Amtsgerichts Berlin-Charlottenburg unter der Nummer 23855 B. Als gemeinnützig anerkannt durch das Finanzamt für Körperschaften I Berlin, Steuernummer <a value="+12768151985" style="color:rgb(17,85,204)">27/681/51985</a>.</div>


</div></div>
</div>
</blockquote></div><br></div></div>