Size: a a a

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

2020 May 21

ŚW

Świętomierz Wisniews... in QA — Автоматизация
Ойойо
источник

ŚW

Świętomierz Wisniews... in QA — Автоматизация
Вы же ошиблись
источник

L

Lucky in QA — Автоматизация
Alexei Vinogradov
ну я написал как я рекомендую делать - простые селекторы можно оставлять как есть, запутанные - или именовать понятной переменной или хотя бы комментировать. Есть такой паттерн PageObject  - можно прочитать про него и попытаться использовать.
Вот единственно "правильного" простого "пиши только так" в этой области нет, и не будет.
а лучше вообще изначально обговорить с дэвами наименования локаторов
источник

MK

Maxim Keip in QA — Автоматизация
Świętomierz Wisniewski
Если вы не понимаете суть сплинтера, то возьмите селениум и учитесь в нем
а что такое суть сплинтера?
я вот прошел курс. в нем было написано про фреймворки, про их возможности. то что было написано про сплинтер меня заинтересовало, решил изучить работу с ним.
но вот как одновременно пользоваться его функционалом и при этом не потерять тот который есть в селениуме - хотелось бы понять
источник

ŚW

Świętomierz Wisniews... in QA — Автоматизация
Maxim Keip
а что такое суть сплинтера?
я вот прошел курс. в нем было написано про фреймворки, про их возможности. то что было написано про сплинтер меня заинтересовало, решил изучить работу с ним.
но вот как одновременно пользоваться его функционалом и при этом не потерять тот который есть в селениуме - хотелось бы понять
А вы знаете, что такое сплинтер?
источник

YP

Yaroslav Pernerovsky... in QA — Автоматизация
Екатерина Смирнова
Но тут вместо слипа(который написан в одну строку) используется код в 4 строки


try:
   element = WebDriverWait(driver, 10).until(
       EC.presence_of_element_located((By.ID, "myDynamicElement"))
   )
finally:
   driver.quit()
явное ожидание пишется в одну строку. у вас пример кода не самый лучший
источник

MK

Maxim Keip in QA — Автоматизация
Świętomierz Wisniewski
А вы знаете, что такое сплинтер?
уже начинаю сомневаться
источник

А

Алексей in QA — Автоматизация
Świętomierz Wisniewski
А вы знаете, что такое сплинтер?
Крыса из черепашек ниндзя, не?
источник

ŚW

Świętomierz Wisniews... in QA — Автоматизация
Да, вы правы
источник

ЕС

Екатерина Смирнова... in QA — Автоматизация
Yaroslav Pernerovskyy
явное ожидание пишется в одну строку. у вас пример кода не самый лучший
Хорошо, как можно такой слип превратить в правильный?

finish_button = driver.find_element_by_css_selector("#Finish")
   finish_button.click()
   time.sleep(2)
источник

YP

Yaroslav Pernerovsky... in QA — Автоматизация
Maxim Keip
а что такое суть сплинтера?
я вот прошел курс. в нем было написано про фреймворки, про их возможности. то что было написано про сплинтер меня заинтересовало, решил изучить работу с ним.
но вот как одновременно пользоваться его функционалом и при этом не потерять тот который есть в селениуме - хотелось бы понять
со сплинтером не нужно дергать голый селениум, в этом суть... посмотрите еще в сторону selene для пайтона.. я на него перешел со сплинтера  (https://github.com/yashaka/selene)
источник

ЕС

Екатерина Смирнова... in QA — Автоматизация
Если даже не говорить про одну строку
источник

MK

Maxim Keip in QA — Автоматизация
Yaroslav Pernerovskyy
со сплинтером не нужно дергать голый селениум, в этом суть... посмотрите еще в сторону selene для пайтона.. я на него перешел со сплинтера  (https://github.com/yashaka/selene)
спасибо, посмотрю
источник

YP

Yaroslav Pernerovsky... in QA — Автоматизация
Екатерина Смирнова
Хорошо, как можно такой слип превратить в правильный?

finish_button = driver.find_element_by_css_selector("#Finish")
   finish_button.click()
   time.sleep(2)
такой никак, надо следующу строку видеть.. вы же ждете какое-то событие, которое потом случится... а что потом я не вижу
источник

ЕС

Екатерина Смирнова... in QA — Автоматизация
Yaroslav Pernerovskyy
такой никак, надо следующу строку видеть.. вы же ждете какое-то событие, которое потом случится... а что потом я не вижу
Хорошо, скину так:

finish_button = driver.find_element_by_css_selector("#Finish")
   finish_button.click()
   time.sleep(2)
   next_button = driver.find_element_by_css_selector("#btn_screening_next")
next_button.click()
источник

А

Александр in QA — Автоматизация
Alexei Vinogradov
переменную я рекомендую создавать и давать ей понятное имя, когда селектор выглядит криптически, чтобы код было проще читать. "Экономия памяти" сохранением в переменные - абсолютно бессмысленно занятие в контексте автотестов. Когда селектор выглядит #username - нет абсолютно никакой необходимости помещать его в переменную username.
это совсем необязательно делается ради экономии памяти.
например у вас селектор является частью какого-то более сложного объекта описывающего некий элемент.
и тогда вы обязаны привести все к единому виду.
источник

YP

Yaroslav Pernerovsky... in QA — Автоматизация
Екатерина Смирнова
Хорошо, скину так:

finish_button = driver.find_element_by_css_selector("#Finish")
   finish_button.click()
   time.sleep(2)
   next_button = driver.find_element_by_css_selector("#btn_screening_next")
next_button.click()
from selenium.webdriver.support import expected_conditions as EC

wait=WebDriverWait(driver, 10)
driver.find_element_by_css_selector("#Finish").click()
wait.until(EC.element_to_be_clickable((By.ID, "btn_screening_next")).click()
источник

ВС

Вова Сергеев... in QA — Автоматизация
Екатерина Смирнова
Хорошо, скину так:

finish_button = driver.find_element_by_css_selector("#Finish")
   finish_button.click()
   time.sleep(2)
   next_button = driver.find_element_by_css_selector("#btn_screening_next")
next_button.click()
мне кажется ваш ментор имел ввиду присваивать переменным локаторы, а не найденные объекты, тогда это будет выглядеть так
finish_button = '#Finish'
driver.find_element_by_css_locator(finish_button).click()
источник

ВС

Вова Сергеев... in QA — Автоматизация
тогда это будет иметь смысл
источник

YP

Yaroslav Pernerovsky... in QA — Автоматизация
Вова Сергеев
мне кажется ваш ментор имел ввиду присваивать переменным локаторы, а не найденные объекты, тогда это будет выглядеть так
finish_button = '#Finish'
driver.find_element_by_css_locator(finish_button).click()
так уже гораздо лучше
источник