Указание времени ожидания с PageFactory [Selenium] - PullRequest
0 голосов
/ 11 октября 2018

Я знаю, что мы можем очистить объекты страницы, покрывая свойства атрибутами [FindsBy] и используя PageFactory для инициализации всех элементов.Мы определяем такие свойства следующим образом:

[FindsBy(How = How.CssSelector, Using = "input[type='submit']")]
public IWebElement SignIn { get; private set; }

И мы можем инициализировать все такие свойства, вызывая:

PageFactory.InitElements(_driver, this);

Первый вопрос, который мне приходит в голову, - как будет выполняться процесс поиска?Сколько попыток, применены тайм-ауты?Я предполагаю, что будет только одна попытка с нулевым тайм-аутом.

Возможно ли объединить подход PageFactory с пользовательским процессом поиска, таким как 3 попытки поиска с установленным ExpectedCondition и т. Д.?

Ответы [ 2 ]

0 голосов
/ 11 октября 2018

Добавляя к ответу Ашиша, я использую один из двух разных методов.Для обычного Selenium я использую:

    PageFactory.initElements(new AjaxElementLocatorFactory(driver, 15), this);

Для Appium я использую:

    PageFactory.initElements(new AppiumFieldDecorator(driver, Duration.ofSeconds(30)), this);
0 голосов
/ 11 октября 2018

Вы можете попытаться использовать AppiumFieldDecorator (JAVA Library),

app = new AppiumFieldDecorator(driver, 10, TimeUnit.SECONDS);
PageFactory.initElements(app, this);

app.resetImplicitlyWaitTimeOut(0, TimeUnit.SECONDS);

это установит неявное время ожидания во время вашего шаблона проектирования PageFactory.
Я надеюсь, что это может помочь вампоскольку ваш вопрос говорит [FindBy], что в C #, но следуя тому же подходу JAVA,

@FindBy("your another locator")
WebElement e2;

ожидает рендеринга и времени продолжительности по умолчанию.

@WithTimeout(timeOut = time, timeUnit = unit)
@FindBy("your locator")
WebElement e;

здесь вы можете указатьвремя ожидания устанавливается через @ WithTimeout.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...