Size: a a a

QA — Автоматизация

2020 April 09

ŚW

Świętomierz Wisniewski in QA — Автоматизация
Vova Kovardakov
привет ребят) буду благодарен любой помощи)
(selenium, Firefox, multiprocessing.pool)
первый вопрос, вот у меня есть код, который запускает webdriver.Firefox(), потом он взаимодействует со страницей, но иногда он делает не то что я прописал, то есть, есть click() по элементу, 10 раз(прогонов) он по нему кликнул, на 11ый раз нет, причем я проверяю есть ли элемент на странице с помощью WebDriverWait и он находится, просто не срабатывает click() и ошибку не выдает, проверяю так, как ниже
try:
   element = WebDriverWait(driver, 60).until(
       EC.presence_of_element_located((By.*****, "*****"))
   )
не знаете из-за чего это может быть?

И второй вопрос)
кто-нибудь делал многопоточную обработку какого-нибудь кода взаимодействия со страницей с помощью multiprocessing.pool, то есть запускаем несколько webdriver.Firefox() и с их помощью клацаем и вписываем различные данные на странице, моя проблема в том, что если без потоков, то функция работает нормально, а если потоки есть то начинается непонятно что) все ведет себя по разному)

И третий вопрос))
как обратиться к элементу с помощью xpath если есть один div со словами "введите дату" а уже в нем указать путь дальше div[1]/div[1]/label/input к примеру
сейчас я просто копирую xpath из браузера, получается длинный путь по дереву, но бывает в начале меняется структура страницы и было например
/html/body/div[3]/.......
а стало
/html/body/div[4]/.......
пока обрабатываю с помощью ветвления try-except-else, но вот если обратиться к диву по имени, ведь он находится в структуре страницы уже дальше изменений и найти его то эти изменения не будут мешать, и решение станет универсальным, а то мало ли там на div[5] потом поменяется))

вопросов конечно много, но по любому из них буду рад каким то советам и подсказкам, и бооольшущее спасибо всем кто поможет)
И ваш третий вопрос. Никогда ничего не копируйте из браузера. Если уж вам так сильно нужно обратиться к элементу внутри элемента через xpath, том можно следать слежующее:
elemet = driver.find_element_by_something(locator, locator_value)
источник

ŚW

Świętomierz Wisniewski in QA — Автоматизация
А потом element = element.find_element('./div[etc]')
источник

VK

Vova Kovardakov in QA — Автоматизация
хорошо, я вот и переделываю все, что накопировал, спасибо вам)
источник

M

Maksim in QA — Автоматизация
Всем привет
может кто делал
есть ли возвожность сохранять состаяние/сессию драйвера и при следующем ране стартовать из этой сессии?
источник

OK

Oleksandr Khotemskyi in QA — Автоматизация
Maksim
Всем привет
может кто делал
есть ли возвожность сохранять состаяние/сессию драйвера и при следующем ране стартовать из этой сессии?
Технически можно запускать браузер с существующим профайлом
источник

M

Maksim in QA — Автоматизация
Oleksandr Khotemskyi
Технически можно запускать браузер с существующим профайлом
А как его создать?
источник

M

Maksim in QA — Автоматизация
Есть примеры?
источник

MS

Mikhail Samoylov in QA — Автоматизация
Vova Kovardakov
то есть возможно такое что я нашел элемент сделал к нему .click() и он не сработал, правильно же? и если там окошко выплывает, то смотреть появилось ли оно
Да. Вы ж тестирует результат нажатия кнопки, а не метод клик
источник

ŚW

Świętomierz Wisniewski in QA — Автоматизация
Maksim
Всем привет
может кто делал
есть ли возвожность сохранять состаяние/сессию драйвера и при следующем ране стартовать из этой сессии?
Вам нужно сохранить состояние: сессии, куков и кэша, но это пагубная практика. Зачем вам это нужно?
источник

OK

Oleksandr Khotemskyi in QA — Автоматизация
Maksim
А как его создать?
но лучше не надо, это зависимые тесты, да и как это менеджить на тестовых фермах - вообще непонятно
источник

VK

Vova Kovardakov in QA — Автоматизация
Mikhail Samoylov
Да. Вы ж тестирует результат нажатия кнопки, а не метод клик
ну я пытаюсь парсить у гугла, не тестирую кнопку, опыта в этом деле мало, поэтому думал что клик безотказный)
источник

MS

Mikhail Samoylov in QA — Автоматизация
Не, селениум вообще так себе штука, там столько днистого кода, что кровь из глаз течет
источник

A

Astin in QA — Автоматизация
Vova Kovardakov
ну я пытаюсь парсить у гугла, не тестирую кнопку, опыта в этом деле мало, поэтому думал что клик безотказный)
для справки, есть такое понятие как % успешных тестов за 1запуск
источник

A

Astin in QA — Автоматизация
ты можешь запустить 1000 раз один и тот же тест и он свалится % 15
источник

ŚW

Świętomierz Wisniewski in QA — Автоматизация
Vova Kovardakov
слишком долго буду парсить, если не сделать потоки
За вас может сделать потоки pytest-xdist если вы в Пайтоне
источник

A

Astin in QA — Автоматизация
раньше вообще до 30% падал
источник

MS

Mikhail Samoylov in QA — Автоматизация
Так то можно просто n2 сказать и ок, для пайтеста, вроде не нужен xdist для этого
источник

A

Astin in QA — Автоматизация
Świętomierz Wisniewski
За вас может сделать потоки pytest-xdist если вы в Пайтоне
люди делятся на 2 категории - тех кто говорят пайтон и тех кто говорит питон
источник

ŚW

Świętomierz Wisniewski in QA — Автоматизация
Astin
люди делятся на 2 категории - тех кто говорят пайтон и тех кто говорит питон
И как это меняет ситуацию?
источник

A

Astin in QA — Автоматизация
Świętomierz Wisniewski
И как это меняет ситуацию?
технически - никак, метафизически - кардинально
источник