2016-07-22 10 views
-1

Ich verstehe, der beste Ansatz ichPageFactory zur Identifizierung der Tabellenzeilen

SearchContext table = driver.FindElements(By.Xpath="xpath for the table"); 
List<IWebElement> allrows = table.FindElements(By.Tagname="tr"); 

Aber zu verwenden wäre, wenn wir dies in Seite Fabrik implementieren müssen, wie würden wir darüber gehen. Ich habe es gegoogelt aber alle Antworten sind für die normale Methode, um die PageFactory So Far nicht verwenden,

PageFactory.InitElements(Driver, this); `Driver.Manage().Timeouts().ImplicitlyWait(TimeSpan.FromSeconds(20));` 

[FindsBy(How = How.XPath, Using = "//*[@id='MyGrid']/div[3]/div/table/tbody")] protected ISearchContext AccoProTable { get; set; } 

Wie ich AccProTable tun gehen und darin statt der Webseite Suche zu verwenden.

Antwort

1
[FindsBy(How = How.XPath, Using = "//*[@id='MyGrid']/div[3]/div/table/tbody/tr")] 
IList<IWebElement> allRows; 

PageFactory.InitElements() können sowohl IWebElement und IList<IWebElement> initialisieren arbeiten.

allgemeiner, Ihre FindsBy würde wie folgt aussehen:

[FindsBy(How = How.XPath, Using = "'xpath for the table'/tr")] 
+0

ich die Änderung umgesetzt Sie vorgeschlagen und seine ein gutes. Einfach, aber effektiv, aber jetzt bekomme ich ** [ERROR] Exception wurde vom Ziel eines Aufrufs ausgelöst. -> Art des Mitglieds 'Liste' 1 'ist nicht IWebElement oder IList ** Dies scheint nach vielen Beiträgen ein .Net-Problem zu sein, aber da wir bereits IList verwenden, sind die genannten möglichen Fehlerbehebungen vollständig ausgeschöpft. Wenn Sie einen Vorschlag haben, ist es willkommen. Prost!! –