Я знаю, что это старый вопрос, но я подумал, что выложу эту информацию для других.
Одна из вещей, которую мне было трудно найти, это как использовать PageFactory в C #.Особенно для нескольких IWebElements.Если вы хотите использовать PageFactory, вот несколько примеров. Источник: PageFactory.cs
Чтобы объявить HTML-элемент WebElement, используйте его в файле класса.
private const string _ID ="CommonIdinHTML";
[FindsBy(How = How.Id, Using = _ID)]
private IList<IWebElement> _MultipleResultsByID;
private const string _ID2 ="IdOfElement";
[FindsBy(How = How.Id, Using = _ID2)]
private IWebElement _ResultById;
Не забудьте создать экземпляры элементов объекта страницы внутриКонструктор.
public MyClass(){
PageFactory.InitElements(driver, this);
}
Теперь вы можете получить доступ к этому элементу в любом из ваших файлов или методов.Также мы можем взять относительные пути из этих элементов, если захотим.Я предпочитаю pagefactory, потому что:
- Мне никогда не нужно вызывать драйвер напрямую, используя driver.FindElement (By.Id ("id"))
- Объекты lazy initialized
Я использую это для написания собственных методов ожидания элементов, оболочек WebElements для доступа только к тому, что мне нужно, чтобы предоставить доступ к тестовым сценариям, и помогает поддерживать чистоту.
Это значительно облегчает жизнь, если у вас есть динамические (автоматически изменяемые) элементы, такие как списки данных.Вы просто создаете оболочку, которая возьмет IWebElements и добавит методы, чтобы найти искомый элемент.