2016-06-28 85 views
2

我是一名初學者,在測試中遇到問題。如果我使用屬性FindsBy,如何正確使用ReadOnlyCollection<IWebElement>。開始測試後,我的收藏始終爲空。繼承人是我在C#代碼:Selenium:FindsBy with collection

 [FindsBy(How = How.Name, Using = "role")] 
     public ReadOnlyCollection<IWebElement> radPercentage { get; } 

這裏是測試網絡:http://testwisely.com/demo/survey

我想要做這樣的事情:radPercentage[2].Click();

回答

2

你需要調用InitElements使用前集合。通過驅動程序和包含FindsBy屬性的類的實例(在我的代碼「this」中)。

IWebDriver driver = new FirefoxDriver(); 
driver.Navigate().GoToUrl("http://testwisely.com/demo/survey"); 
PageFactory.InitElements(driver, this); 
IWebElement radio = this.radPercentage[2]; 

方法InitElements期待的屬性爲類型的IWebElement的IList IWebElement

[FindsBy(How = How.Name, Using = "role")] 
public IList<IWebElement> radPercentage; 
+0

你們說的IList 作品完美...謝謝 – Deyeth

+0

一旦頁面元素初始化,你可以通過使用'PageFactory.InitElements(driver,radPercentage)''刷新一個特定的元素? –

+0

刷新元素不僅需要再次調用該方法,還需要訪問該頁面。不知道是否有快捷方式。 – derloopkat

0

試試這個。

public void FindStuff() 
{ 
    var stuff = driver.FindElements(By.Name("role")); 
    stuff[2].Click(); 
}