t.me/atinfo_chat Telegram группа по автоматизации тестирования

Combo box Selenium+Python+pytest (скриншот+код)

Теги: #<Tag:0x00007f9afc6a1f28> #<Tag:0x00007f9afc6a1e60> #<Tag:0x00007f9afc6a1d70> #<Tag:0x00007f9afc6a1c58> #<Tag:0x00007f9afc6a1b40>

Вопрос из заголовка. Понимаю что тема не новая, но все что перечитал сегодня вечером, не смог реализовать что бьі вьібрать значение из комбо бокс

Я попытался сделать:
Я вьітянул xpath для значения с combo box и через chrome и с помощью fire path в Mozilla
но єти значения не срабатьівают почему то когда прогоняю тест

Освоил Selenium+Python+pytest за 2 дня, сам, на проекте резко решили что нужна автоматизация smoke на python при том что питонщика в компании нету, тестировщика тоже 2 всего) и спросить и посоветуваться нескем, так вот сам и учусь паралельно тестируя два проекта

И вот код:

def test_create_survey():
driver.get(“http://cms.schooldata-test.com/login”)
driver.maximize_window()
# login action
driver.find_element_by_name(“email”).send_keys(“admin@admin.admin”)
driver.find_element_by_name(“password”).send_keys(“admin@admin.admin”)
driver.find_element_by_class_name(“btn”).click()
#surveys
driver.find_element_by_xpath(“html/body/div[1]/aside[1]/section/ul/li[7]/a”).click()
driver.find_element_by_xpath("/html/body/div[1]/aside[1]/section/ul/li[7]/ul/li[1]/a").click()
#add button
driver.find_element_by_xpath(“html/body/div[1]/div[1]/section[2]/div/div/div/div/div[1]/h3/a/i”).click()
driver.find_element_by_name(“title”).send_keys(“Auto survey”)
driver.find_element_by_id(“tagsIds”).click()
time.sleep(2)
driver.find_element_by_xpath("@id=‘tagsIds’]/option[3]").click()
driver.find_element_by_name(“description”).send_keys(“Some auto to to ot ot”)
driver.find_element_by_xpath("/html/body/div[1]/div[1]/section[2]/div/div/div/div/form/div[2]/button").click()
time.sleep(2)
driver.get_screenshot_as_file(“edit_admin.png”)
# out
driver.find_element_by_xpath(“html/body/div[1]/header/nav/div/ul/li/a”).click()

П.С Буду рад усльішать рекомендации, что можно улучшить уже в существующем коде или то что вьіглядит дико как для проффесионала/
Спасибо

нормально

теперь ваши темы для изучения -
css селекторы
assertions в pytest
классы и обьекты

и курс по основам безопасности не помешает

А вообще ответов полно в инете: https://yandex.ru/search/?text=python%20selenium%20select%20dropdown&lr=213&rnd=66645

Не усложняйте. Это функциональные тесты, пока можно жить и так.

Учитесь писать гибкие XPATH пути

и курс по основам безопасности не помешает

Єт тестовьій, так что все нормально, он будет меняться.

Я пробовал много из них(ссылок), но та же ошибка, еще попробую конечно, если не выйдет, то напишу. Здесь на мак сам пайтест была проблема запустить в pycharm все как по инструкции, а ничего в результате не выходило, но как то решил.

Учитесь писать гибкие XPATH пути

Спасибо, почитаю про них, я думал их знать уже достаточно

Подскажите пожалуйста по нескольким вопросам:

После каждого теста я выставляю Log out, что бы ато тест выходил на страницу логина и снова выполнял все по порядку как в тест кейсе, если так не делаю, следующий тест валится, можно сделать по другому?
Если выставляю > driver.close()
окно браузера просто закрываеться и следующий тест не стартует тоже.
Как можно сделать гибко прохождение сюта.

Вот еще, сначала была проблема настроить pytest, как то все таки настроил, ну вот смотрю для каждого теста в блоке (1) создается новая конфигурация. А в блоке 2 просто скажите, настройки нормально выглядят, или из за того и проблема.
Спасибо большое.

Создайте отдельный вопрос.

И вообще вначале лучше запускать через консоль. Потом уже пользоватся раннерами.

вы и по первому не подсказали даже)

Решил вопрос таким способом:
Выбрал через css селектор и тест прошел успешно.

#dropdown option
driver.find_element_by_css_selector("#tagsIds > option:nth-child(3)").click()

Лучше бы так:

tag = Select(driver.find_element_by_id("tagsIds"))
tag.select_by_visible_text('Auto Tag')

попробьівал, но команда select (unresolved reference bla bla) я так понял что у меня что то не долито для нормального функционирования

Добавь к импортам:

from selenium.webdriver.support.ui import Select

За два дня, говоришь, изучил python ? xD

Читай внимательно. Там другое слово, ну и дураку понятно на каком уровне я его изучил за два дня с роботой. Так что не даже с самого себя не могу посмеятсья.

на счет импорта, єтот что тьі дал, вставился нормально, я почему прислал последний скриншот, потому что я не могу добавить больше никакой импорт, с форумов что читал, посл добавления они все ставали серьіми и не бьіли активньіми. А тут все ок, спасибо.

Только какая разница в tag.select_by_visible_text(‘Auto Tag’) и тот что я писал?

Не забивай себе голову, учи дальше - обьекты, классы, модули, как импортить, изучай библиотеку селенуима на питоне (рекомендую так же почитать ее исходники, чтобы увидеть как пишут опытные дядьки)

спасибо, ок.

Код должен быть понятным не только тебе. К примеру, в данной случае далеко не каждый сразу поймет, что делает твоя строчка. Как минимум, придется открыть сайт и покопаться в исходнике да и еще про редко используемые css-локаторы знания освежить.

Ну че ты начинаешь

Чувак только второй день пишет код

Вспомни себя как только начинал - просто молишься чтобы оно хоть запустилось