Как правильно использовать WebDriverWait вместе с PageObject ?

Подскажите Пожалуйста как правильно использовать WebDriverWait вместе с #page-object !

не могу понять как оформить класс для ожидания! Ведь в WebDriverWait необходимо непосредственно указывать путь к элементу, а в методологии PageObject все элементы инициализируются при создании обекта!

Если что извините за неправильную формулировку! я новичок в этом!
Спасибо за помощь!

В сетапе используйте implicitly_wait, да и все

class Test(unittest.TestCase):

def setUp(self):
    self.driver = Driver.get()
    self.driver.implicitly_wait(10)

Спасибо Вам Огромное за ответ! я пишу на c#, приложение в win form! я не использую NUnit!
Это так для информации! Забыл в описании написать!

вот пример кода

class Login_Page
    {
        [FindsBy(How = How.Id, Using = ("user-phone"))]
        public IWebElement phone_field;

        [FindsBy(How = How.XPath, Using = ".//*[@id='auth-form']/button[3]")]
        public IWebElement login_submit;

        public Login_Page(IWebDriver browser)
        {
            PageFactory.InitElements(browser, this);
        }
    }

Все элементы инициализируются в конструкторе

В c# не помогу, но концепция такая - описываете BaseTest, в котором собираете базовые метода, собственно setUp и tearDown, а последнующие тесты наследуете от BaseTest, где в свою очередь будет вам и драйвер, и ожидание.

Тоэсть все что связано с драйвером я описываю в BaseTest?

а сам BaseTest является наследник моих Pages??

или как правильно??

у меня пока что такая система
есть классы страниц и есть классы тестов

классы тестов наследуются от нужных страниц!!!

Можете пожалуйста подсказать это правильно?? или не совсем!
Посоветуйте пожалуйста как лучше! Спасибо!

нет, неправильно. Классы тестов от BaseTest, а классы страниц от BasePage, это как пример. Тест - это тест, а страница - это страница. Не путайте руки и ноги )))

Значит мне необходимо создать еще два класса один BasePage который будет наследоваться от Pages и второй BaseTest от которого будет наследоваться непосредственно Тест!

Всю действия работы с элементами страницы мне необходимо описать в BasePage!

А всю логику непосредственно в Тесте!

я правильно все понял?
Извините за настойчивость! Просто реально ко всему сам дохожу, а спросить не у кого вообще! Спасибо!

Так почитайте тогда концепцию Пейдж Обджект ), инфы в инете масса.
Вот на Стеке есть тема с линками

Нет, наоборот, пейджи будут наследоваться от BasePage

Спасибо за помощь буду разбираться!)

Последний вопрос! а в BasePage будут хранится все элементы страницы??

Я бы посоветовал вам еще вот этоту лекцию послушать от Миши

Плюс, если вы впервые столкнулись с этим, то как вариант, возьмите на час-два менторство.

что вы подразумеваете под элементами страницы?
Если это локаторы, то нет, локаторы храните отдельно.

Слушал уже) но думаю надо еще раз!) у меня просто совсем другой проект! и мне как то тяжело сопоставить! Но это скорее от недостатка опыта и знаний! В Общем Спасибо вам за помощь)

шаблон работает независимо от проекта, на то он и шаблон )))
Базовые вещи будут стандартными все равно

@Sashuteak, подход к ожиданиям в вашем коде может быть разным. Зависит от вашего уровня владения ООП, вижена и целей. Что касается WebDriverWait, могу порекомендовать вам, для начала, объявить его в BasePage классе и в дальнейшем использовать в методах страниц наследников. Таким образом, вам не придется заботится об ожиданиях при написании тест скриптов. Ожидания будут инкапсулированы в функциональные методы работы со страницей.

Нет ничего подобного в методологии пэдж обжектов!
Это очень распространённое заблуждение, к сожалению.

Пишите нормальный метод, который ждёт чего надо и ищет нужный элемент.
См. Настоящие пэдж-объекты · Andrei Solntsev