Здравствуйте, а есть ли возможность проверить наличие элемента в связке python + selenium ? Пробовал сделать через assert
Python + selenium проверить есть ли элемент на странице
#1
Отправлено 24 февраля 2016 - 14:32
#2
Отправлено 24 февраля 2016 - 14:40
Ну можно как-то так:
from selenium.common.exceptions import NoSuchElementException def check_exists_by_xpath(xpath): try: webdriver.find_element_by_xpath(xpath) except NoSuchElementException: return False return True
#3
Отправлено 24 февраля 2016 - 14:45
Коллеги, а "умение гуглить" еще не стало основным требованием к начинающим тестировщикам?в интернете вообще информации о python + selenium практически 0
#5
Отправлено 24 февраля 2016 - 15:38
Сделал так вроде работает, спасибо.
from selenium.common.exceptions import NoSuchElementException
def check_exists_by_xpath(self):
try:
webdriver.find_element_by_xpath(self)
except NoSuchElementException:
return self.assertTrue(False)
return True
#6
Отправлено 24 февраля 2016 - 15:57
Сделал так вроде работает, спасибо.
from selenium.common.exceptions import NoSuchElementException
def check_exists_by_xpath(self):
try:
webdriver.find_element_by_xpath(self)
except NoSuchElementException:
return self.assertTrue(False)
return True
Ну хорошо, что работает !))
from selenium.common.exceptions import NoSuchElementException def check_exists_by_xpath(xpath): try: webdriver.find_element_by_xpath(xpath) except NoSuchElementException: return False return True self.assertTrue(check_exists_by_xpath(xpath))
#8
Отправлено 04 марта 2016 - 09:29
А ещё можно без перехвата исключений, вот так:
def check_exists_by_xpath(xpath): return len(webdriver.find_elements_by_xpath(xpath)) > 0
Тренинги для тестировщиков (тестирование производительности, защищенности, тест-дизайн, автоматизация):
Линейка тренингов по Selenium
#9
Отправлено 04 марта 2016 - 09:58
Да, красивый метод.А ещё можно без перехвата исключений, вот так:
def check_exists_by_xpath(xpath): return len(webdriver.find_elements_by_xpath(xpath)) > 0
Правда, читаемость, на мой взгляд, чуть хуже?
#10
Отправлено 09 марта 2016 - 16:11
Да, красивый метод.А ещё можно без перехвата исключений, вот так:
def check_exists_by_xpath(xpath): return len(webdriver.find_elements_by_xpath(xpath)) > 0
Правда, читаемость, на мой взгляд, чуть хуже?
Дело привычки. По началу немного напрягает когда основная работа осуществляется внутри return, но потом жить без этих мини методов не можешь =)
Эстетически код выглядит гораздо лучше и писать меньше.
#11
Отправлено 26 декабря 2016 - 12:31
А ещё можно без перехвата исключений, вот так:
def check_exists_by_xpath(xpath): return len(webdriver.find_elements_by_xpath(xpath)) > 0
а подскажите в вашем методе возвращает значение если только больше 0 но мне бы надо чтобы возвращало и когда его нет и когда есть ниже код почему то не работает
def check_exists_by_class(unread): if len(driver.find_element_by_class_name('unread')) == 0: return 'Нет новых писем' else: return driver.find_element_by_class_name('unread').text
#12
Отправлено 26 декабря 2016 - 12:40
А ещё можно без перехвата исключений, вот так:
def check_exists_by_xpath(xpath): return len(webdriver.find_elements_by_xpath(xpath)) > 0
а подскажите в вашем методе возвращает значение если только больше 0 но мне бы надо чтобы возвращало и когда его нет и когда есть ниже код почему то не работает
ты немного другую функцию используешь ) в функции Алексея ищутся все элементы с определенным xpath(findElements) и потом считается размер массива
Но ты можешь использовать и ее, только в else тебе нужно будет запилить цикл, что бы подтянуть текст всех элементов
#13
Отправлено 26 декабря 2016 - 13:01
А ещё можно без перехвата исключений, вот так:
def check_exists_by_xpath(xpath): return len(webdriver.find_elements_by_xpath(xpath)) > 0
а подскажите в вашем методе возвращает значение если только больше 0 но мне бы надо чтобы возвращало и когда его нет и когда есть ниже код почему то не работает
ты немного другую функцию используешь ) в функции Алексея ищутся все элементы с определенным xpath(findElements) и потом считается размер массива
Но ты можешь использовать и ее, только в else тебе нужно будет запилить цикл, что бы подтянуть текст всех элементов
у меня она не срабатывает с самого начала тк driver.find_element_by_class_name('unread') изначально не существует и выдается ошибка
#14
Отправлено 26 декабря 2016 - 13:28
def check_exists_by_name(name): return len(webdriver.find_elements_by_name(name)) > 0
check_exists_by_name('unread')
так используешь ?
#15
Отправлено 27 декабря 2016 - 16:21
def check_exists_by_name(name): return len(webdriver.find_elements_by_name(name)) > 0check_exists_by_name('unread')так используешь ?
def check_exists_by_class(unread): if len(driver.find_element_by_class_name('unread')) == 0: return 'Нет новых писем' else: return driver.find_element_by_class_name('unread').text
вот так
или так
def unread(): if len(driver.find_element_by_class_name('unread')) == 0: return 'Нет новых писем' else: return driver.find_element_by_class_name('unread').text print(unread())
#16
Отправлено 28 декабря 2016 - 07:50
if len(driver.find_element_by_class_name('unread')) == 0:
driver.find_element_by_class_name() - возвращает либо элемент (если находит), либо бросает ошибку. Поэтому так делать, как вы, неправильно.
У Алексея используется другая функция - driver.find_elements_by_name()
Обратите внимание - find_elements - во множественном числе. Она будет искать ВСЕ элементы, отвечающие заданному критерию и возвращать СПИСОК. Только в этом случае можно применять функцию len(), которая считает длину списка.
#17
Отправлено 28 декабря 2016 - 07:56
if len(driver.find_element_by_class_name('unread')) == 0:driver.find_element_by_class_name() - возвращает либо элемент (если находит), либо бросает ошибку. Поэтому так делать, как вы, неправильно.
У Алексея используется другая функция - driver.find_elements_by_name()
Обратите внимание - find_elements - во множественном числе. Она будет искать ВСЕ элементы, отвечающие заданному критерию и возвращать СПИСОК. Только в этом случае можно применять функцию len(), которая считает длину списка.
тогда может тут подскажешь? http://software-test...schenij-python/
Темы с аналогичным тегами python selenium
Тестирование →
Автоматизированное тестирование →
Selenium - Functional Testing →
Selenium не хочет работать с сохранённым профилем Firefox webdriverАвтор blablacon, 16 дек 2014 python selenium |
|
|||
Тестирование →
Автоматизированное тестирование →
Вход на сайт и регистрация.Автор anaxaim, 10 ноя 2014 Python selenium |
|
Количество пользователей, читающих эту тему: 0
0 пользователей, 0 гостей, 0 анонимных