java - Generic fields initialization in Selenium -


i describing grid or table view using selenium. want develop abstract class table classes inherit. here idea:

abstracttable class:

public abstract class abstracttable extends htmlelement {     public abstract class<? extends abstractrow> getheader();     public abstract class<? extends abstractrow> getrow();      private class<? extends abstractrow> tableheader = getheader();     private class<? extends abstractrow> tablerow = getrow();      public abstracttable() { // init method } } 

abstractrow class:

@findby(xpath = ".//thead/tr") public abstract class abstractrow extends htmlelement {      @override     public rectange getrect() { return null; } } 

mytable class:

class mytable extends abstracttable {      @override     public class<? extends abstractrow> getheader() { return tablehead.class; }     @override     public class<? extends abstractrow> getrow() { return tablerow.class; }      @findby(xpath = ".//thead/tr")     public static class tablehead extends abstractrow { // fields }      @findby(xpath = ".//tbody/tr[not(@class = 'clicked')]")     public static class tablerow extends abstractrow { // fields } } 

imagine there more 1 class similar mytable.

so, main question is: inner classes of class mytable decorated , initialized? or, if not, maybe there way more efficient?

i tried similar in past. however, more simple.

here code snippet:

public class table extends abstractpageelement {      public table(webelement wrappedelement, string name, string page) {         super(wrappedelement, name, page);     }      public static final string row_xpath_locator = "//tbody/tr";      private static string getcellxpathlocator(int row, int column) {         return row_xpath_locator + "[" + row + "]/td[" + column + "]";     }      public int getrowcount() {         return findallbyxpath(row_xpath_locator).size();     }      public string getcellvalue(int row, int column) {         cell cell = new cell(row, column, this.name, this.page);         return cell.gettext();     }       public class cell extends abstractpageelement {         private int row;         private int column;          public cell(webelement wrappedelement, string name, string page) {             super(wrappedelement, name, page);         }          public cell(int row, int column, string name, string page) {             super(table.this.findbyxpath(getcellxpathlocator(row, column)), name, page);             this.row = row;             this.column = column;         }          public string gettext() {             return wrappedelement.gettext();         }          public cell nextinrow() {             return new cell(row, column + 1, name, page);         }          public cell previousinrow() {             return new cell(row, column - 1, name, page);         }          public cell nextincolumn() {             return new cell(row + 1, column, name, page);         }          public cell previousincolumn() {             return new cell(row - 1, column, name, page);         }     } } 

abstractpageelement used default implementation fielddecorator.
project structure like:

enter image description here

also, can have yandex-qatools htmlelements. created custom decorator , wrapper classes elements.

btw: have implementation table


Comments

Popular posts from this blog

inversion of control - Autofac named registration constructor injection -

verilog - Systemverilog dynamic casting issues -

ios - Change Storyboard View using Seague -