По сути, нет большой разницы в том, как будут выполняться тесты и что делает драйвер, используете ли вы Driver.FindElement () или аннотацию @FindBy. «Преимущества» использования @FindBy, на мой взгляд, заключаются в том, что он направляет вас к тому, чтобы все элементы и методы Web релевантны для конкретной страницы в одном месте, и отделяет поиск элементов вашей страницы от методов, которые вы используете. на странице, например ниже приведен краткий пример страницы входа (в C #):
public class LoginPage
{
public IWebDriver Driver;
[FindsBy(How = How.Id, Using = "username")]
public IWebElement UsernameField;
[FindsBy(How = How.Id, Using = "password")]
public IWebElement PasswordField;
[FindsBy(How = How.Id, Using = "submit")]
public IWebElement SubmitButton;
public LoginPage(IWebDriver driver)
{
Driver = driver;
PageFactory.InitElements(this, new RetryingElementLocator(Driver, TimeSpan.FromSeconds(10)));
}
// By this point, all your elements on the page are declared and located,
// you're now free to carry out whatever operations you'd like on the page
// without having to make any further declarations
public void Login(string username, string password)
{
UsernameField.SendKeys(username);
PasswordField.SendKeys(password);
SubmitButton.Click();
}
}
Итак, я бы сказал, что это в основном предпочтение, но также можно утверждать, что есть несколько убедительных аргументов в пользу "аккуратности" / организации, которую приносит аннотация @FindBy.