Selenium:FindsBy collection

Selenium: FindsBy with collection

我是测试初学者,有一个问题。如果我使用 FindsBy 属性,我该如何正确使用 ReadOnlyCollection<IWebElement> 。我的 collection 在开始测试后总是空的。这是我在 C# 中的代码:

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

这里是测试网站:http://testwisely.com/demo/survey

我想做这样的事情:radPercentage[2].Click();

试试这个。

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

您需要在使用集合之前调用 InitElements。传递驱动程序和包含 FindsBy 属性的 class 实例(在我的代码 "this" 中)。

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

方法 InitElements 期望 属性 是 IWebElementIList 类型 IWebElement

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