У меня есть несколько готовых тестов в WebDriver (python), можно ли использовать етот тест как библиотеку в Robot Framework? Потом создать для него keyword чтоби на виходе он мне возвращал 1 или 0 в случае eсли тест прошел успешно? Если можно это сделать иначе тогда как?
Тестов много и много функции соответственно, все тести имееют asserty, в случае чего тест остановится если assert не проходит. Потому для начала хочу сделать 1 keyword который будет возвращать результат (например 1 или 0) что тест прошел. Вопрос как это сделать?
Вам нужно чтоб работало как в питоне или в зависимости от наличия отсутсвия возвращало 1 или 0 соответственно ?
Почитав селениум2либрари кейворды понял что за ассерт по тексту в элементе отвечает “Element text should be”
Код по логике должен быть таким :
Open Browser http://www.test.com/panel browser=gc
Input Text id=login abcdef
Input Password id=password abcdef
Click Element css=input.submit
Wait Until Page Contains Element id=user--test--test2
Click Element id=user--test--test2
Element Text Should Be css=yourlocator yourtext message=yourerrrormessage
Из того кода, что я увидел на скриншоте, я могу предположить, что Banner.py уже может использоваться как библиотека.
Но почему-то вы подключаете его, как ресурс.
Зачем вам возвращать 1 или 0, если assert, как я помню, может вполне обрабатываться роботом.
В общем, вряд ли ваш поход зараборает, так как Вы строите ваши тесты на unittest, где ожидаете инициацию различных фикстур через setUptearDown методы. Но если Вы создадите весь код в обычных методах без setUptearDown, то скорее всего должно сработать. Хотя надо проверять, у меня сомнения.
Спасибо extr3mal. Так чтобы работало как в python. Думаю для начала буду использовать Run Keyword if и Run Keyword Unless чтобы попробовать прогнать тест
Потому решил использовать 1 keyword который мне бы возвращал на виходе что тест прошел успешно, в то время как assert’s делали бы свое дело в тесте.
PageObject + python гораздо лучше чем обычный бот стиль в тестах, думаю перейти со временем на PageObject. Есть ли хороший туториал, который бы описал весь процесс (или по оддельности) создания тестов (python) в PageObject и имплементация их к Robot Framework ?
Спасибо большое
from SeleniumWrapper import SeleniumWrapper as wrapper
locators = {
"email": "id=Email",
"password": "id=Password",
"sign in": "id=submit",
"error messages": "css=.validation-summary-errors li"
}
class SignInPage(object):
def set_sign_in_email_as(self, email):
se = wrapper().connection
se.type(locators["email"], email)
def set_sign_in_password_as(self, password):
se = wrapper().connection
se.type(locators["password"], password)
def submit_sign_in_credentials(self, success=False):
se = wrapper().connection
se.click(locators["sign in"])
se.wait_for_page_to_load("20000")
def sign_in_error_message_should_be(self, message):
se = wrapper().connection
assert se.get_text(locators['error messages']) == message
from homepage import HomePage
from signinpage import SignInPage
class PageObjects(HomePage, SignInPage):
# your top-level keywords here
а тест вот так
*** Settings ***
Documentation A test suite with a single test for valid login. This test has
... a workflow that is created using keywords from the resource file.
Resource common_resource.txt
Test Setup Open Browser To English Home Page
Test Teardown Close Browser After Run
*** Test Cases ***
Invalid Login
Navigate To Sign In Page
Set Sign In Email As demo
Set Sign In Password As demo
Submit Sign In Credentials
Спасибо за ссылку. Наконец-то я расставил все точки в вопросе реализаций page object + robot framework. Единственное замечание: я бы локаторы вынес в отдельный python-файл
Ну это как смотреть на реализацию PageObject. Можно сделать по разному, а как удобнее, каждый решает сам. Я, например, придерживаюсь правила чтобы все локаторы относящиеся к конкретному PageObject были в одном модуле с реализуемым PageObject, чтобы меньше было тело движений в поиске и починке конкретного локатора. Если же у вас становиться слишком много локаторов в одном модуле, значит надо задуматься о правильной реализации PageObject. Может быть надо что-то модуляризировать, что-то разбить на более мелкие логические части.
Конечно этот пример большой давности (3 года уже), но я думаю можно заставить его заработать и в PyCharm.
В общем, времени как всегда у меня не так много и поэтому время ценно для меня. Соответственно, я могу помочь с этой задачей по скайпу, но тогда надо будет помочь нашему сообществу автоматизаторов и стать более активным участником (начать производить контент, а не только задавать вопросы), т.е. меняю консультацию на заметку или code recipe в нашу базу знаний по полученным знаниям.
Какой кейворд можно использовать чтоб прогнать тест без переписывания тестов в Selenium2 Library? Так как Run Keyword if, Run Keyword Unless не подходят в этом случае.
Тест подключен как библиотека может быть keyword “Get Library Instance”- Returns the currently active instance of the specified test library с библиотеки BuiltIn ?
Думаю этот пример должен работать с использованием Operating System library. Может пригодится кому то
Example
Setting Value
Library OperatingSystem
Variable Value
${PATH} ${CURDIR}/example.txt
Test Case Action Argument Argument
Example Create File ${PATH} Some text
File Should Exist ${PATH}
Copy File ${PATH} ${TEMPDIR}/stuff
${output} = Run ${CURDIR}${/}script.py arg