<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Recent changes to Complexe Datatypes</title><link>https://sourceforge.net/p/popperfw/wiki/Complexe%2520Datatypes/</link><description>Recent changes to Complexe Datatypes</description><atom:link href="https://sourceforge.net/p/popperfw/wiki/Complexe%20Datatypes/feed" rel="self"/><language>en</language><lastBuildDate>Tue, 12 Nov 2013 11:18:43 -0000</lastBuildDate><atom:link href="https://sourceforge.net/p/popperfw/wiki/Complexe%20Datatypes/feed" rel="self" type="application/rss+xml"/><item><title>Complexe Datatypes modified by Michael Bulla</title><link>https://sourceforge.net/p/popperfw/wiki/Complexe%2520Datatypes/</link><description>&lt;div class="markdown_content"&gt;&lt;pre&gt;--- v3
+++ v4
@@ -1,4 +1,22 @@
 [TOC]
+
+# verify correct Page
+Sometimes you run into the problem to debug your page-object because it doesn't find some element on your page until you realize that your pages didn't open the page you expect to be and therefor the element couldn't be found.
+
+For that case PopperFramework supports checkinig to be on the right page when getting elements
+
+~~~~~
+:::java
+@Page(application="Popper Test", name="Verify Page")
+@VerifyBy(title="Title verified")
+public interface VerifyPagePO {
+   @PageAccessor(uri="/pages/titlePage.html")
+   void open();
+   
+   @Locator(name="Message", id="message")
+   ILabel message();
+}
+~~~~~

 # Dividing a page into PageObjects

@@ -47,6 +65,7 @@
    @PageAccessor(uri="/pages/table.html")
    void open();

+   // using tr[.//td] to exclude headers (using th instead of td)
    @Locator(name="all users as list", xpath="//table[@id='users']//tbody/tr[.//td]")
    List allUsers();

@@ -59,6 +78,9 @@
    @Locator(name="all users as array", xpath="//table[@id='users']//tbody/tr[.//td]")
    User[] allUsersAsArray();

+   @Locator(name="element count", xpath="//table[@id='users']//tbody/tr[.//td]")
+   int elementCount();
+
    @Locator(name="all users", xpath="//table[@id='users']//tr[@id={0}]")
    User userById(String id);

@@ -73,5 +95,7 @@
        ILabel birthdate();
    }
 }
+~~~~~

-~~~~~
+You may count elements on your page, too. Just use as the return type of a method an int, short or long, than you will get the number of that elements on you page instead of the elements itself.
+
&lt;/pre&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Michael Bulla</dc:creator><pubDate>Tue, 12 Nov 2013 11:18:43 -0000</pubDate><guid>https://sourceforge.net3c96c8082c0ef0b4b865f9d068bb34cd8fadf86a</guid></item><item><title>Complexe Datatypes modified by Michael Bulla</title><link>https://sourceforge.net/p/popperfw/wiki/Complexe%2520Datatypes/</link><description>&lt;div class="markdown_content"&gt;&lt;pre&gt;--- v2
+++ v3
@@ -3,6 +3,7 @@
 # Dividing a page into PageObjects

 ~~~~~
+:::java
 @Page(name="Site divided in PageObjects")
 public interface Testsite {
   @PageAccessor(uri="Testseite.html")
&lt;/pre&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Michael Bulla</dc:creator><pubDate>Fri, 08 Nov 2013 21:35:22 -0000</pubDate><guid>https://sourceforge.net5c655dc9b82e7e545db6b14216e954aca31da031</guid></item><item><title>Complexe Datatypes modified by Michael Bulla</title><link>https://sourceforge.net/p/popperfw/wiki/Complexe%2520Datatypes/</link><description>&lt;div class="markdown_content"&gt;&lt;pre&gt;--- v1
+++ v2
@@ -36,3 +36,41 @@

 # Working with tables and other list-types

+Say you have a Website with a table like
+[[img src=table.jpg]]
+
+~~~~~
+:::java
+@Page(application="Popper Test", name="Self Implemented Locator")
+public interface TablePO {
+   @PageAccessor(uri="/pages/table.html")
+   void open();
+
+   @Locator(name="all users as list", xpath="//table[@id='users']//tbody/tr[.//td]")
+   List allUsers();
+   
+   @Locator(name="all forenames", xpath="//table[@id='users']//tr/td[@class='firstname']")
+   List allForenames();
+   
+   @Locator(name="all users as set", xpath="//table[@id='users']//tbody/tr[.//td]")
+   Set allUsersAsSet();
+   
+   @Locator(name="all users as array", xpath="//table[@id='users']//tbody/tr[.//td]")
+   User[] allUsersAsArray();
+   
+   @Locator(name="all users", xpath="//table[@id='users']//tr[@id={0}]")
+   User userById(String id);
+   
+   public static interface User {
+       @Locator(name="Firstname", cssSelector=".firstname")
+       ILabel firstname();
+
+       @Locator(name="Lastname", cssSelector=".lastname")
+       ILabel lastname();
+
+       @Locator(name="Birthdate", cssSelector=".birthdate")
+       ILabel birthdate();
+   }
+}
+
+~~~~~
&lt;/pre&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Michael Bulla</dc:creator><pubDate>Fri, 08 Nov 2013 21:34:49 -0000</pubDate><guid>https://sourceforge.netf2947bba92067f9d95000a3ade88bebc8bf0e477</guid></item><item><title>Complexe Datatypes modified by Michael Bulla</title><link>https://sourceforge.net/p/popperfw/wiki/Complexe%2520Datatypes/</link><description>&lt;div class="markdown_content"&gt;&lt;div class="toc"&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="#dividing-a-page-into-pageobjects"&gt;Dividing a page into PageObjects&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#working-with-tables-and-other-list-types"&gt;Working with tables and other list-types&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;h1 id="dividing-a-page-into-pageobjects"&gt;Dividing a page into PageObjects&lt;/h1&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span class="err"&gt;@&lt;/span&gt;&lt;span class="n"&gt;Page&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;name&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;Site divided in PageObjects&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;public&lt;/span&gt; &lt;span class="n"&gt;interface&lt;/span&gt; &lt;span class="n"&gt;Testsite&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="err"&gt;@&lt;/span&gt;&lt;span class="n"&gt;PageAccessor&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;uri&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;Testseite.html&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
  &lt;span class="kt"&gt;void&lt;/span&gt; &lt;span class="n"&gt;open&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;

  &lt;span class="err"&gt;@&lt;/span&gt;&lt;span class="n"&gt;Locator&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;name&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;Header&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
  &lt;span class="err"&gt;@&lt;/span&gt;&lt;span class="n"&gt;LocateById&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;header&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
  &lt;span class="n"&gt;Header&lt;/span&gt; &lt;span class="n"&gt;header&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;

  &lt;span class="err"&gt;@&lt;/span&gt;&lt;span class="n"&gt;Locator&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;name&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;Footer&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
  &lt;span class="err"&gt;@&lt;/span&gt;&lt;span class="n"&gt;LocateById&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;footer&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
  &lt;span class="n"&gt;Footer&lt;/span&gt; &lt;span class="n"&gt;footer&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="n"&gt;public&lt;/span&gt; &lt;span class="n"&gt;interface&lt;/span&gt; &lt;span class="n"&gt;Header&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="err"&gt;@&lt;/span&gt;&lt;span class="n"&gt;Locator&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;name&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;Homepage&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
  &lt;span class="err"&gt;@&lt;/span&gt;&lt;span class="n"&gt;LocateById&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;homepageLink&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
  &lt;span class="n"&gt;ILink&lt;/span&gt; &lt;span class="n"&gt;homepageLink&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;

  &lt;span class="err"&gt;@&lt;/span&gt;&lt;span class="n"&gt;Locator&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;name&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;Logout&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
  &lt;span class="err"&gt;@&lt;/span&gt;&lt;span class="n"&gt;LocateById&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;logoutLink&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
  &lt;span class="n"&gt;ILink&lt;/span&gt; &lt;span class="n"&gt;logoutLink&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="n"&gt;public&lt;/span&gt; &lt;span class="n"&gt;interface&lt;/span&gt; &lt;span class="n"&gt;Footer&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="err"&gt;@&lt;/span&gt;&lt;span class="n"&gt;Locator&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;name&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;Company&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
  &lt;span class="err"&gt;@&lt;/span&gt;&lt;span class="n"&gt;LocateById&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;companyLink&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
  &lt;span class="n"&gt;ILink&lt;/span&gt; &lt;span class="n"&gt;companyLink&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;h1 id="working-with-tables-and-other-list-types"&gt;Working with tables and other list-types&lt;/h1&gt;&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Michael Bulla</dc:creator><pubDate>Fri, 08 Nov 2013 21:31:01 -0000</pubDate><guid>https://sourceforge.net4ecc0621e3bd82b090705e190c254169f011d836</guid></item></channel></rss>