Be aware that the UI object, Container(uid: "row: 1, column: 2"), is a logical container and it should not have any locator defined, i.e, its locator is null. A logical container is only used to group different UI elements together.
Thanks, Jian On Fri, Jan 22, 2010 at 4:20 PM, Jian Fang <[email protected]> wrote: > I have made the Standard Table configurable. Please see here, > > http://code.google.com/p/aost/wiki/Tellurium070Update#Standard_Table > > I used your example to create a test case. > > First the UI module: > > public class GeneralTableModule extends DslContext { > > public void defineUi() { > ui.StandardTable(uid: "GT", clocator: [id: "xyz"], ht: "tbody"){ > TextBox(uid: "header: all", clocator: [:]) > TextBox(uid: "row: 1, column: 1", clocator: [tag: "div", class: > "abc"]) > Container(uid: "row: 1, column: 2"){ > InputBox(uid: "Input", clocator: [tag: "input", class: "123"]) > Container(uid: "Some", clocator: [tag: "div", class: "someclass"]){ > Span(uid: "Span", clocator: [tag: "span", class: "x"]) > UrlLink(uid: "Link", clocator: [:]) > } > } > } > } > > public void work(String input){ > keyType "GT[1][2].Input", input > click "GT[1][2].Some.Link" > waitForPageToLoad 30000 > } > } > > The test case is > > public class GeneralTableJUnitTestCase extends TelluriumMockJUnitTestCase { > private static GeneralTableModule gtm; > > @BeforeClass > public static void initUi() { > registerHtmlBody("GeneralTable"); > > gtm = new GeneralTableModule(); > gtm.defineUi(); > useCssSelector(true); > useTrace(true); > } > > @Before > public void connectToLocal() { > connect("GeneralTable"); > } > > @Test > public void testToJSON(){ > > System.out.println(gtm.toJSON("GT")); > } > > @Test > public void testValidateUiModule(){ > gtm.validate("GT"); > } > > @Test > public void testWork(){ > useCache(false); > System.out.println(gtm.getText("GT[1][1]")); > gtm.work("Tellurium jQuery"); > } > > @AfterClass > public static void tearDown(){ > showTrace(); > } > } > > The actual code can be found at > > > http://code.google.com/p/aost/source/browse/trunk/core/src/test/groovy/org/telluriumsource/module/GeneralTableModule.groovy > > http://code.google.com/p/aost/source/browse/trunk/core/src/test/groovy/org/telluriumsource/ft/GeneralTableJUnitTestCase.java > > You need the latest 0.7.0 core and custom selenium server from our Maven > repo. > > Please let us know if this works for you. > > Thanks, > > Jian > > > On Fri, Jan 22, 2010 at 3:44 PM, super fan 911 <[email protected]>wrote: > >> it is tbody that contains the th. And switching to StandardTable, it >> cannot even find the headers, th. >> >> Any suggestions? >> >> On Jan 21, 5:02 pm, Jian Fang <[email protected]> wrote: >> > Should the part >> > <tbody> >> > <tr> >> > <th>one</th> >> > <th>two</th> >> > <th>three</th> >> > </tr> >> > </tbody> >> > >> > be thead instead of tbody? If not, please let me know. >> > >> > If it is, sounds like you need to use StandardTable instead of Table. >> > >> > Thanks, >> > >> > Jian >> > >> > On Thu, Jan 21, 2010 at 5:26 PM, super fan 911 <[email protected] >> >wrote: >> > >> > > I have a table like this >> > >> > > <table id="xyz"> >> > > <tbody> >> > > <tr> >> > > <th>one</th> >> > > <th>two</th> >> > > <th>three</th> >> > > </tr> >> > > </tbody> >> > >> > > <tbody> >> > > <tr> >> > > <td><div class="abc">some text</div></td> >> > > <td><input class="123" /><br/> >> > > <div class="someclass"> >> > > <span class="x">some text</span><br/> >> > > <a href="#">link</a></div> >> > > </td> >> > > </tr> >> > >> > > </tbody> >> > > </table> >> > >> > > Then, I define my UI like this: >> > >> > > Container(uid: "myTbl", clocator: [:]) { >> > >> > > Table(uid: "headerTbl", clocator: [tbody: [position: "1"]]) { >> > > TextBox(uid: "header: 1", clocator: [:]) >> > > TextBox(uid: "header: 2", clocator: [:]) >> > > TextBox(uid: "header: 3", clocator: [:]) >> > > } >> > >> > > Table(uid: "bodyTbl", clocator: [tbody: [position: "2"]]) { >> > >> > > TextBox(uid: "row: *, column: 1", clocator: [:]) >> > >> > > Container(uid: "row: *, column: 2", clocator: [:]) { >> > > InputBox(uid: "box1", clocator: [class: "123"]) >> > >> > > Container(uid: "c1", clocator: [class: "someclass"]) { >> > >> > > } >> > >> > > } >> > >> > > } >> > >> > > } >> > >> > > My problem is when i use isElementPresent to check for the object, it >> > > fails to find the container containing the objects on my second TD. >> > > It finds everything else including the input box on the second td. >> > >> > > So, I refer to the objects like this: >> > >> > > "myTbl.bodyTbl[1][2].box1" --> this will find the input box >> > >> > > "myTbl.bodyTbl[1][2].c1" ---> this says cannot find the container >> > > 'c1' >> > >> > > my goal is to work with the objects contained by 'c1'. But, if it >> > > fails to find the container, cannot move forward. >> > >> > > -- >> > > You received this message because you are subscribed to the Google >> Groups >> > > "tellurium-users" group. >> > > To post to this group, send email to [email protected] >> . >> > > To unsubscribe from this group, send email to >> > > [email protected]<tellurium-users%[email protected]> >> <tellurium-users%[email protected]<tellurium-users%[email protected]> >> > >> > > . >> > > For more options, visit this group at >> > >http://groups.google.com/group/tellurium-users?hl=en. >> >> -- >> You received this message because you are subscribed to the Google Groups >> "tellurium-users" group. >> To post to this group, send email to [email protected]. >> To unsubscribe from this group, send email to >> [email protected]<tellurium-users%[email protected]> >> . >> For more options, visit this group at >> http://groups.google.com/group/tellurium-users?hl=en. >> >> > -- You received this message because you are subscribed to the Google Groups "tellurium-users" group. To post to this group, send email to [email protected]. To unsubscribe from this group, send email to [email protected]. For more options, visit this group at http://groups.google.com/group/tellurium-users?hl=en.
