Size: a a a

testing_in_python

2019 February 26

C

Chuprina Artem in testing_in_python
коллеги, тут такой вопрос, есть фикстура со скойпом сессия
@pytest.fixture(scope="session")
def top_panel(driver):
   top_menu = {
       'CLUSTERS': WDW(driver, 5).until(
           EC.visibility_of_element_located((By.CLASS_NAME, "topmenu_clusters"))),
       'HOSTPROVIDERS': WDW(driver, 5).until(
           EC.visibility_of_element_located((By.CLASS_NAME, "topmenu_hostproviders"))),
       'HOSTS': WDW(driver, 5).until(
           EC.visibility_of_element_located((By.CLASS_NAME, "topmenu_hosts"))),
       'JOBS': WDW(driver, 5).until(
           EC.visibility_of_element_located((By.CLASS_NAME, "topmenu_jobs"))),
       'BUNDLES': WDW(driver, 5).until(
           EC.visibility_of_element_located((By.CLASS_NAME, "topmenu_bundles")))
   }
   return top_menu

первый тест с ней отрабатывает норм, следующий я обращаюсь к элементу фикстуры как
 top_panel['HOSTS'].click() 

в результате тест фэйлится что не может обратиться к элементу
источник

C

Chuprina Artem in testing_in_python
решается тупым слипом на 5 секунд, но это какой-то топорный способ имхо
источник

C

Chuprina Artem in testing_in_python
Подскажите в какие дебри копать?
источник

EB

Evgenii B in testing_in_python
Chuprina Artem
коллеги, тут такой вопрос, есть фикстура со скойпом сессия
@pytest.fixture(scope="session")
def top_panel(driver):
   top_menu = {
       'CLUSTERS': WDW(driver, 5).until(
           EC.visibility_of_element_located((By.CLASS_NAME, "topmenu_clusters"))),
       'HOSTPROVIDERS': WDW(driver, 5).until(
           EC.visibility_of_element_located((By.CLASS_NAME, "topmenu_hostproviders"))),
       'HOSTS': WDW(driver, 5).until(
           EC.visibility_of_element_located((By.CLASS_NAME, "topmenu_hosts"))),
       'JOBS': WDW(driver, 5).until(
           EC.visibility_of_element_located((By.CLASS_NAME, "topmenu_jobs"))),
       'BUNDLES': WDW(driver, 5).until(
           EC.visibility_of_element_located((By.CLASS_NAME, "topmenu_bundles")))
   }
   return top_menu

первый тест с ней отрабатывает норм, следующий я обращаюсь к элементу фикстуры как
 top_panel['HOSTS'].click() 

в результате тест фэйлится что не может обратиться к элементу
Я бы сказал, безрассудно делать поиск элементов в доме один раз на сессию и рассчитывать , что элемент останется целым
источник

C

Chuprina Artem in testing_in_python
тут вопрос не в безрассудстве подхода, а как решить описаную проблему элегантным способом
источник

AK

Anton Kachurin in testing_in_python
это не очень похоже на элегентный способ :(
источник

b

betzy in testing_in_python
Chuprina Artem
тут вопрос не в безрассудстве подхода, а как решить описаную проблему элегантным способом
бегом читать что такое дом дерево
источник

EB

Evgenii B in testing_in_python
Chuprina Artem
коллеги, тут такой вопрос, есть фикстура со скойпом сессия
@pytest.fixture(scope="session")
def top_panel(driver):
   top_menu = {
       'CLUSTERS': WDW(driver, 5).until(
           EC.visibility_of_element_located((By.CLASS_NAME, "topmenu_clusters"))),
       'HOSTPROVIDERS': WDW(driver, 5).until(
           EC.visibility_of_element_located((By.CLASS_NAME, "topmenu_hostproviders"))),
       'HOSTS': WDW(driver, 5).until(
           EC.visibility_of_element_located((By.CLASS_NAME, "topmenu_hosts"))),
       'JOBS': WDW(driver, 5).until(
           EC.visibility_of_element_located((By.CLASS_NAME, "topmenu_jobs"))),
       'BUNDLES': WDW(driver, 5).until(
           EC.visibility_of_element_located((By.CLASS_NAME, "topmenu_bundles")))
   }
   return top_menu

первый тест с ней отрабатывает норм, следующий я обращаюсь к элементу фикстуры как
 top_panel['HOSTS'].click() 

в результате тест фэйлится что не может обратиться к элементу
Какая ошибка?
источник

C

Chuprina Artem in testing_in_python
ну и как бы если заведомо известно, что меню не должно меняться, логично его инициализировать один раз, разве не так?
источник

b

betzy in testing_in_python
Chuprina Artem
ну и как бы если заведомо известно, что меню не должно меняться, логично его инициализировать один раз, разве не так?
меню != все дом дерево
источник

EB

Evgenii B in testing_in_python
Chuprina Artem
ну и как бы если заведомо известно, что меню не должно меняться, логично его инициализировать один раз, разве не так?
Не должно меняться? У тебя что, 100% сайт это голый html с картинками? И ни одного jquery / react / angular компонента?
источник

C

Chuprina Artem in testing_in_python
на ангуляре написан сайт
источник

EB

Evgenii B in testing_in_python
Общий подход для работы в питоне с селениумом и сайтами написанными на ангуляре: не хранить и не вычитывать локаторы один раз :)
источник

C

Chuprina Artem in testing_in_python
я новичек в тестировании SPA на ангуляре)
источник

b

betzy in testing_in_python
Chuprina Artem
на ангуляре написан сайт
бегом читать что такое дом-дерево
источник

ЮЛ

Юлия Лях in testing_in_python
(пойду плакаьб и запускать в пяти разных консолях на разных параметрах)
источник

EB

Evgenii B in testing_in_python
Ты можешь передать в тест локатор. Но делать поиск элемента нужно непосредственно перед использованием этого элемента
источник

ЮЛ

Юлия Лях in testing_in_python
хоть убунту переустанавливай
источник

C

Chuprina Artem in testing_in_python
Evgenii B
Общий подход для работы в питоне с селениумом и сайтами написанными на ангуляре: не хранить и не вычитывать локаторы один раз :)
это же мрак, каждый раз искать элементы, повторяемость кода растет ппц как
источник

b

betzy in testing_in_python
Chuprina Artem
это же мрак, каждый раз искать элементы, повторяемость кода растет ппц как
для этого у нас есть pageObject
источник