Size: a a a

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

2020 December 12

ВЗ

Ваня Зайко in QA — Автоматизация
Привет!
Пишу на selenium + python, PageObjectModel
столкнулся с проблемой: что тесты падают рандомно если запускать все тесты в файле ( по одиночке все работает ). Оказалось что тесты отрабатывают быстрее чем сами элементы на странице...
Я искал об ожиданиях (явных и неявных) браузера. Сначала я делал вот так:
def click_on_element(self):
     locator = self.driver.find_element(*LocatorsFile.locator_name)
     locator.click()


Погуглил и нашел что в таких ситуациях нужно использовать WebDriverWait структуру.
wait = WebDriverWait(driver, 10)
element = wait.until(EC.presence_of_element_located((By.XPATH, "//div”)))


но если я оставлю текущую архитектуру ( методы страницы в отдельном файле, локаторы в отдельном) и буду передавать переменную локатора вот так:
element = wait.until(EC.presence_of_element_located((my_element_locator)))

то падает ошибка что драйвер не может принять более 2 параметров на вход …

Есть ли какие-то варианты решения или даже примеры решения ???

P.S. поиск локатора в отдельном файле выглядит вот так:
my_element_locator =(By.XPATH, “//some xpath”)


P.P.S. некоторые методы у меня обернуты в try except структуру
источник

MZ

Mikhail Zamotin in QA — Автоматизация
Звёздочку поставить
источник

MZ

Mikhail Zamotin in QA — Автоматизация
...located(*my_element_locator)
источник

EY

Evgeniy Yakovlev in QA — Автоматизация
как я помню, * тут не поможет.
источник

ВЗ

Ваня Зайко in QA — Автоматизация
Evgeniy Yakovlev
как я помню, * тут не поможет.
Да, это не помогло(
источник

VQ

Vladislav Q in QA — Автоматизация
Ваня Зайко
Привет!
Пишу на selenium + python, PageObjectModel
столкнулся с проблемой: что тесты падают рандомно если запускать все тесты в файле ( по одиночке все работает ). Оказалось что тесты отрабатывают быстрее чем сами элементы на странице...
Я искал об ожиданиях (явных и неявных) браузера. Сначала я делал вот так:
def click_on_element(self):
     locator = self.driver.find_element(*LocatorsFile.locator_name)
     locator.click()


Погуглил и нашел что в таких ситуациях нужно использовать WebDriverWait структуру.
wait = WebDriverWait(driver, 10)
element = wait.until(EC.presence_of_element_located((By.XPATH, "//div”)))


но если я оставлю текущую архитектуру ( методы страницы в отдельном файле, локаторы в отдельном) и буду передавать переменную локатора вот так:
element = wait.until(EC.presence_of_element_located((my_element_locator)))

то падает ошибка что драйвер не может принять более 2 параметров на вход …

Есть ли какие-то варианты решения или даже примеры решения ???

P.S. поиск локатора в отдельном файле выглядит вот так:
my_element_locator =(By.XPATH, “//some xpath”)


P.P.S. некоторые методы у меня обернуты в try except структуру
В первом случае locator = self.driver.find_element(*LocatorsFile.locator_name) сюда ещё нужно передавать способ поиска By.{method}

Во втором случае: элемент как ищете в принципе? find_element_by_xpath наверное? Если так, то правильно ругается
источник

ВЗ

Ваня Зайко in QA — Автоматизация
Vladislav Q
В первом случае locator = self.driver.find_element(*LocatorsFile.locator_name) сюда ещё нужно передавать способ поиска By.{method}

Во втором случае: элемент как ищете в принципе? find_element_by_xpath наверное? Если так, то правильно ругается
locator_name = (By.Способ поиска, 'locator')
Ищу при помощи функции find_element, а способ поиска прописан в файле с локаторами(пример выше)
источник

VQ

Vladislav Q in QA — Автоматизация
Ваня Зайко
locator_name = (By.Способ поиска, 'locator')
Ищу при помощи функции find_element, а способ поиска прописан в файле с локаторами(пример выше)
    def search_element(self, locator, time=15):
       return WebDriverWait(self.driver, time).until(ex_cond.presence_of_element_located(locator),
                                                     message=f"Can't find element by locator {locator}")

Попробуйте сделать сам поиск элемента таким, не через find element, где locator = (By.{method}, 'locator'), т.е. как у вас сейчас, кортеж из двух элементов
источник

EY

Evgeniy Yakovlev in QA — Автоматизация
это же питон, тут вопрос скорее о том, почему раскрытие списка, через *  не работает для presence_of_element_located
источник

AF

Anna Farafonova in QA — Автоматизация
привет! Помогите пжл разобраться в таком вопросе. Я пишу тесты на Selenide+TestNG. У тестируемого приложения есть несколько сущностей, каждая из которых может быть создана с разным набором параметров (от выбора которых в свою очередь зависит выбор дополнительных параметров). По этой причине использую паттерн билдер для создания таких сущностей. На проекте возник вопрос параметризации тестов с помощью дата провайдера. Но мне кажется, что если тестируемый объект не создается с каким-то определенным набором свойств, то датапровайдер не подходит. На сколько я разобралась с дата провайдером - все что он должен делать, это поставлять разные наборы входных данных для ОДНИХ И ТЕХ ЖЕ полей, грубо говоря. Но датапровайдер не должен никак влиять на конфигурацию тестируемого объекта. Подскажите, я мыслю в правильном направлении?.. Нагуглить какие-то примеры для своей ситуации не удалось...
источник

EG

Edward Galiaskarov in QA — Автоматизация
Всем привет!

Дорогие коллеги, кто работал с select2. У нас на проекте довольно часто его применяют, и я как-то всегда справлялся, а сейчас, как-то его смонтировали, имеющиеся процедуры не работают.

1 по известному id select я открываю список по команде $('#select_id').select2('open') -соответствующим образом обернутую в команды фреймворка
2 далее ищу элемент и пытаюсь его выбрать $('#select_id').val('value').trigger('select2:select')

выбор происходит, но не происходит действие - пробовал использовать
для capybara find("//select[@id='#{select_id}']/option[contains(text(),'#{text}')]").click

никаких результатов

сам select2 такая хитрая штука - то, что в DOM отражается - это
источник

EG

Edward Galiaskarov in QA — Автоматизация
источник

EG

Edward Galiaskarov in QA — Автоматизация
и ниже в
источник

EG

Edward Galiaskarov in QA — Автоматизация
т.е при клике должна отработать гиперссылка, но почему-то не отрабатывает
источник
2020 December 13

IC

Ilya L Che in QA — Автоматизация
Значит, клик происходит по неправильному элементу, и ивент не срабатывает. Можно в браузере посмотреть, у какого элемента есть обработчик клика.
источник

TN

Timur Nurlygayanov in QA — Автоматизация
Edward Galiaskarov
Всем привет!

Дорогие коллеги, кто работал с select2. У нас на проекте довольно часто его применяют, и я как-то всегда справлялся, а сейчас, как-то его смонтировали, имеющиеся процедуры не работают.

1 по известному id select я открываю список по команде $('#select_id').select2('open') -соответствующим образом обернутую в команды фреймворка
2 далее ищу элемент и пытаюсь его выбрать $('#select_id').val('value').trigger('select2:select')

выбор происходит, но не происходит действие - пробовал использовать
для capybara find("//select[@id='#{select_id}']/option[contains(text(),'#{text}')]").click

никаких результатов

сам select2 такая хитрая штука - то, что в DOM отражается - это
Привет, работаю с селектом, там вот так надо выбирать элементы https://select2.org/programmatic-control/add-select-clear-items#selecting-options
источник

VM

Vova Moskalenko in QA — Автоматизация
Anna Farafonova
привет! Помогите пжл разобраться в таком вопросе. Я пишу тесты на Selenide+TestNG. У тестируемого приложения есть несколько сущностей, каждая из которых может быть создана с разным набором параметров (от выбора которых в свою очередь зависит выбор дополнительных параметров). По этой причине использую паттерн билдер для создания таких сущностей. На проекте возник вопрос параметризации тестов с помощью дата провайдера. Но мне кажется, что если тестируемый объект не создается с каким-то определенным набором свойств, то датапровайдер не подходит. На сколько я разобралась с дата провайдером - все что он должен делать, это поставлять разные наборы входных данных для ОДНИХ И ТЕХ ЖЕ полей, грубо говоря. Но датапровайдер не должен никак влиять на конфигурацию тестируемого объекта. Подскажите, я мыслю в правильном направлении?.. Нагуглить какие-то примеры для своей ситуации не удалось...
Всегда можно закостылить и в дата провайдере набилдить объектов с разными полями, а вместо параметра возвращать уже сам этот объект. Будет длинная простыня, но по другому как-то и не придумаешь
источник

DS

Denis Shtuka in QA — Автоматизация
Подскажите, какие можно применить технологии в замен моему текущему процессу, чтобы ускорить время создания скрипта?

Задача такая, есть сайт с формами для ввода данных, после заполнения которых мы получаем число.

В крациях, я использую Python + Selenium, беру данные из Excel многопоточно выполняю весь процесс и полученную сумму заношу в другой файл Excel (в будущем SQL). Проблемы у метода: много времени уходит на создание проверок, чтобы программа не ломалась и указания вручную xpath’ов.
Было бы классно визуально натыкать через Selenium IDE, а ввод/вывод сделать из/в файл.
источник

D

Denys 👻 in QA — Автоматизация
Привет всем. У кого-то было что в Интелиджи создаешь xml и она в гите не трекается локально? А в других классах вносишь изменения и трекается все ок.
источник

D

Denys 👻 in QA — Автоматизация
git add . и похожее чет не помогает
источник