2016-06-28 6 views
2

私はテストの初心者で、質問があります。属性FindsByを使用すると、どうすれば正しくReadOnlyCollection<IWebElement>を使用できますか。テスト開始後、私のコレクションは常にヌルです。 HERESに私のコードは、C#である:セレン: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(); 
}