2016-06-28 2 views
2

Я новичок в тестировании и задаюсь вопросом. Как правильно использовать ReadOnlyCollection<IWebElement>, если я использую атрибут FindsBy. Моя коллекция всегда имеет значение null после начала теста. Heres мой код в C#:Selenium: FindsBy с коллекцией

 [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(); 
} 
Смежные вопросы