Перейти к содержимому

krohotin

Регистрация: 06 апр 2015
Offline Активность: 05 сен 2016 09:24
-----

Мои темы

Selenium - выполнение js-скриптов с использованием библиотек

01 марта 2016 - 07:39

Selenium позволяет запустить на странице браузера js-скрипт, выдернуть таким образом например информацию которую не получить средствами самого selenium. Много встречал разных примеров, но нигде не видел такого, чтобы в js-скрипте использовались сторонние библиотеки. Подскажите пожалуйста, возможно ли в принципе запуск скрипта со сторонними библиотеками? В идеале - загружаемыми из js-файла


Selenium для приложения на Crosswalk + Cordova

26 января 2016 - 11:05

Есть приложение (в разработке) для Android, сделанное на базе Crosswalk + Cordova, то бишь по сути просто браузерный движок + приложение на HTML + CSS + Javascript. Вопрос - можно ли автоматизировать тестирование такого приложения средствами Selenium? Нужен ли для этого какой-то специальный драйвер для запуска приложения? Тесту буду писать на Python (хотя думаю что тут разницы никакой на чем из писать)


Selenium python не снимает скриншоты элементов

17 ноября 2015 - 08:14

Простейший код:

 

from selenium import webdriver
p = webdriver.Firefox()
p.get("http://localhost:8000")
h = p.find_elements_by_css_selector("html body ul li a")[1]
h.screenshot("file.png")

 

(http://localhost:8000 - маленький локальный сервер на Питоне, в 4 строчки, чисто для тренировки и тестирования наработок всяких )

Все успешно проходит до h.screenshot("file.png"), дальше вываливается ошибка:

 

Traceback (most recent call last):
  File "C:/Users/KKShilov/PycharmProjects/test2/_helpmetods.py", line 46, in <module>
    h.screenshot("file.png")
  File "C:\Python34\lib\site-packages\selenium\webdriver\remote\webelement.py", line 404, in screenshot
    png = self.screenshot_as_png
  File "C:\Python34\lib\site-packages\selenium\webdriver\remote\webelement.py", line 391, in screenshot_as_png
    return base64.b64decode(self.screenshot_as_base64.encode('ascii'))
  File "C:\Python34\lib\site-packages\selenium\webdriver\remote\webelement.py", line 381, in screenshot_as_base64
    return self._execute(Command.ELEMENT_SCREENSHOT)['value']
  File "C:\Python34\lib\site-packages\selenium\webdriver\remote\webelement.py", line 453, in _execute
    return self._parent.execute(command, params)
  File "C:\Python34\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 201, in execute
    self.error_handler.check_response(response)
  File "C:\Python34\lib\site-packages\selenium\webdriver\remote\errorhandler.py", line 102, in check_response
    value = json.loads(value_json)
  File "C:\Python34\lib\json\__init__.py", line 318, in loads
    return _default_decoder.decode(s)
  File "C:\Python34\lib\json\decoder.py", line 343, in decode
    obj, end = self.raw_decode(s, idx=_w(s, 0).end())
  File "C:\Python34\lib\json\decoder.py", line 361, in raw_decode
    raise ValueError(errmsg("Expecting value", s, err.value)) from None
ValueError: Expecting value: line 1 column 1 (char 0)

 

В чем может быть причина и как это исправить/заставить работать?


Оболочка DriverPlus

19 октября 2015 - 21:41

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

 

Работаю веб-тестировщиком в одном небольшом и относительно молодом (2 года) стартапе. В тестировании 3-й год, в вебе - 5 месяцев. Занимаюсь преимущественно ручным тестированием (проект молодой, все время новые плюшки-финтифлюшки, переделки и редизайны), но стоит цель создать набор автотестов. Писать буду на 3-м питоне (сам сервис на нем написан, поэтому начальство велело на нем). Покудова с автотестами не торопят, начал изучать selenium, писать пробные тесты. Сразу встретил для себя несколько моментов, которые меня мало вдохновили - длинные названия методов поиска селекторов и их разнообразие (java в этом плане меня более воодушевляет, findElement/findsElement и By-локаторы) + прописывание по всему коду методов логирования (куда же в тестах без логов-то!) + всякие мелочи (уже забыл какие сам). Полистав интернет, наткнулся на идию обертки для Selenium, и понеслась...

 

В результате на руках имею жутко черновую (0.1) версию своей собственной обертки DriverPlus. Название - отсылка к другой оболочке WebDriver Plus (из ее кода почерпнул некоторые идеи). На данный момент реализованы следующие моменты:

- универсальные методы find и finds, принимающие на вход объекты-селекторы с проверкой входных данных

- селекторы, задаваемые объектами, которые помимо типа локатора и его значения содерждат в себе название элемента ( id("auto_botton", "кнопка авторизации") )

- несколько типов дополнительных селекторов на основе xpath

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

 

Может кому-то покажется излишним все это (мне самому иногда так кажется, хехе), но кому-то возможно и будет интересно-полезно. Помимо прочего, работая над оболочкой изучаю язык, учусь правильно, красиво и эффективно писать код. Однако есть еще куча идей чего допилить, додедать, улучшить, а и опыта чертовски мало, и лень иногда пробивает.

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

 

Так или иначе, жду ваших мнений