Добрый день!
Столкнулся с проблемой написания условий при заполнении формы регистрации.
def test_reg_url(self):
for line in file_1:
self.driver = webdriver.Chrome()
self.driver.get(line)
# self.driver.maximize_window()
self.driver.implicitly_wait(10)
#REGISTRATION STEPS
reg = RegistrationForm(self.driver)
# NAME
try:
if reg.name.is_displayed():
reg.name.send_keys('test_name')
else:
print 'something'
except NoSuchElementException:
print 'something'
try:
if reg.name_1.is_displayed():
reg.name_1.send_keys('test_name')
except NoSuchElementException:
print 'something'
дело в том, что мой тест валится на строчке if reg.name.is_displayed():
пишет: NoneType’ object has no attribute ‘is_displayed’
Как мне сделать так, чтобы тест дальше пошел по условию?
П.С. данного элемента нет на странице.
Mes
(Bolatbek)
03.Май.2017 13:13:32
#2
А что возвращает RegistrationForm()?
пока что ничего, я её не сабмичу.
Проблема в том, что мне надо написать (унифицировать) тест для разных сайтов, там практически одна и та же форма регистрации, только иногда список полей меняется, и поэтому мне надо написать условия, типа если поле отображается, то заполнить, если поля нет, то идти дальше.
Mes
(Bolatbek)
03.Май.2017 13:48:19
#4
reg.name - это вебэлемент?
то проверяй, существует ли reg.name, а только потом - видимый он или нет.
эм, а каким именно образом проверить существует он или нет, is element present ?
Первый пример не подойдет?
http://selenium-python.readthedocs.io/waits.html
Само собой не полностью, а та часть где (ExpectedConditions) EC.presence_of_element
что-то не получается.
у меня на первом сайте этого элемента нет и тест сразу завалился, а на втором есть этот элемент
Mes
(Bolatbek)
03.Май.2017 14:25:47
#8
Проверять можно например так:
find_elements_by_xpath -> считаешь количество, если ==0, тогда элемента нет и идешь дальше
если >0, тогда проверяешь на видимость и пробуешь заполнить
3 лайка
спасибо за подсказку, этот способ заработал
а чому для цього не використовувати @pytest.mark.parametrize ()
?