Ejemplo n.º 1
0
def test_web_mail_selene3(browser):
    browser.open('/showcase/typescript/webmail/#/home')
    browser.element("#tree li.e-level-2[data-uid='21']").click()

    browser.element("li.e-level-1[data-uid='SF10208']").click()
    browser.element("#sub").should(have.exact_text('Zena Osborn'))

    browser.element("li.e-level-1[data-uid='SF10203']").click()
    browser.element("#sub").should(have.exact_text('Quynn Carr'))
Ejemplo n.º 2
0
def test_web_mail_selene(browser):
    browser.open('/showcase/typescript/webmail/#/home')
    browser.element("#tree li.e-level-2[data-uid='21']").click()

    browser.element("li.e-level-1[data-uid='SF10205']").click()
    browser.element("#sub").should(have.exact_text('Fletcher Beck'))

    browser.element("li.e-level-1[data-uid='SF10202']").click()
    browser.element("#sub").should(have.exact_text('Oscar Mcconnell'))
Ejemplo n.º 3
0
def test_web_mail_selene2(browser):
    browser.open('/showcase/typescript/webmail/#/home')
    browser.element("#tree li.e-level-2[data-uid='11']").click()

    browser.element("li.e-level-1[data-uid='SF10095']").click()
    browser.element("#sub").should(have.exact_text('Gemma Roberson'))

    browser.element("#tree li.e-level-2[data-uid='12']").click()
    browser.element("li.e-level-1[data-uid='SF10142']").click()
    browser.element("#sub").should(have.exact_text('Elijah Berry'))
Ejemplo n.º 4
0
    def test_filter_tasks(self):
        browser.open('https://todomvc4tasj.herokuapp.com/')
        clear_completed_js_loaded = "return $._data($('#clear-completed').get(0), 'events').hasOwnProperty('click')"
        browser.wait_to(have.js_returned(True, clear_completed_js_loaded))
        browser.wait_to(have.title(u'TroopJS • TodoMVC'))

        browser.element('#new-todo').should(
            be.enabled).set_value('a').press_enter()
        browser.element('#new-todo').should(
            be.enabled).set_value('b').press_enter()
        browser.element('#new-todo').should(
            be.enabled).set_value('c').press_enter()

        browser.all("#todo-list>li").should(have.texts('a', 'b', 'c'))

        browser.all("#todo-list>li").element_by(
            have.exact_text('b')).find(".toggle").click()

        browser.element(by.link_text("Active")).click()
        browser.all("#todo-list>li").filtered_by(be.visible).should(
            have.texts('a', 'c'))

        browser.element(by.link_text("Completed")).click()
        browser.all("#todo-list>li").filtered_by(be.visible).should(
            have.texts('b'))
Ejemplo n.º 5
0
def test_can_init_default_browser_on_visit():
    browser.open(empty_page)
    GivenPage(browser.driver).opened_with_body('''
        <h1 id="header">Selene</h1>''')

    browser.element("#header").should(have.exact_text("Selene"))
    assert browser.driver.name == 'chrome'
Ejemplo n.º 6
0
def test_filter_tasks():
    browser.open('https://todomvc4tasj.herokuapp.com')
    clear_completed_js_loaded = "return $._data($('#clear-completed').get(0), 'events').hasOwnProperty('click')"
    browser.wait_to(
        have.js_returned(True, clear_completed_js_loaded),
        timeout=config.timeout * 3,
    )

    browser.element('#new-todo').set_value('a').press_enter()
    browser.element('#new-todo').set_value('b').press_enter()
    browser.element('#new-todo').set_value('c').press_enter()
    browser.all('#todo-list li').should(have.exact_texts('a', 'b', 'c'))

    browser.all('#todo-list li').element_by(
        have.exact_text('b')).element('.toggle').click()
    browser.element(by.link_text('Active')).click()
    browser.all('#todo-list li').filtered_by(be.visible).should(
        have.exact_texts('a', 'c'))

    browser.element(by.link_text('Completed')).click()
    browser.all('#todo-list li').filtered_by(be.visible).should(
        have.exact_texts('b'))

    browser.element(by.link_text('All')).click()
    browser.all('#todo-list li').filtered_by(be.visible).should(
        have.exact_texts('a', 'b', 'c'))
def test_search_is_lazy_and_does_not_start_on_creation_for_both_collection_and_indexed(
    session_browser, ):
    page = GivenPage(session_browser.driver)
    page.opened_empty()

    non_existent_element = session_browser.all('.non-existing').element_by(
        have.exact_text('Kate'))

    assert str(non_existent_element)
Ejemplo n.º 8
0
def test_can_init_custom_browser_on_visit():
    browser.config.browser_name = 'firefox'

    browser.open(empty_page)
    GivenPage(browser.driver).opened_with_body('''
        <a id="selene_link">Selene site</a>
        ''')

    browser.element("#selene_link").should(have.exact_text("Selene site"))
    assert browser.driver.name == 'firefox'
def test_unicode_text(session_browser):
    GivenPage(session_browser.driver).opened_with_body('''
        <ul>Привет:
           <li>Саше</li>
           <li>Яше</li>
        </ul>
        ''')

    element = session_browser.element('li')

    element.should(have.exact_text('Саше')).should(have.text('Са'))
Ejemplo n.º 10
0
def test_wait_for_notification_after_reload_v5():
    """
    with default rendering (built into selene's condition) of error message on failure
    AND simplified syntax with lambdas
    """
    browser.open(
        'https://the-internet.herokuapp.com/notification_message_rendered')

    browser.wait.for_(lambda _: (
        browser.element('[href*=notification_message]').click(),
        have.exact_text('Action successful\n×')(browser.element('#flash')),
    ))
def test_fails_on_timeout_during_waiting_for_visibility(session_browser):
    browser = session_browser.with_(timeout=0.25)
    page = GivenPage(browser.driver)
    page.opened_with_body('''
        <a href='#second' style='display:none'>go to Heading 2</a>
        <h2 id='second'>Heading 2</h2>''').execute_script_with_timeout(
        'document.getElementsByTagName("a")[0].style = "display:block";', 500)

    with pytest.raises(TimeoutException):
        browser.all('a').element_by(have.exact_text('go to Heading 2')).click()

    assert "second" not in session_browser.driver.current_url
def test_waits_for_visibility(session_browser):
    page = GivenPage(session_browser.driver)
    page.opened_with_body('''
        <a href="#second" style="display:none">go to Heading 2</a>
        <h2 id="second">Heading 2</h2>''').execute_script_with_timeout(
        'document.getElementsByTagName("a")[0].style = "display:block";', 500)

    element = session_browser.all('a').element_by(
        have.exact_text('go to Heading 2'))
    element.click()

    assert "second" in session_browser.driver.current_url
Ejemplo n.º 13
0
def test_can_make_screenshot_automatically():
    browser.open(EMPTY_PAGE_URL)
    config.timeout = 0.1

    with pytest.raises(TimeoutException):
        browser.element("#selene_link").should(have.exact_text("Selen site"))

    expected = os.path.join(
        get_default_screenshot_folder(),
        f'{get_screen_id()}.png',
    )
    assert os.path.exists(expected)
    assert os.path.isfile(expected)
Ejemplo n.º 14
0
def test_wait_for_notification_after_reload_v6():
    """
    with default rendering (built into selene's condition) of error message on failure
    and simplified syntax with lambdas
    AND with optimised performance and removed potential side effects of "nested waiting"
    """
    browser.open(
        'https://the-internet.herokuapp.com/notification_message_rendered')

    browser.wait.for_(lambda _: (
        browser.element('[href*=notification_message]')().click(),
        have.exact_text('Action successful\n×')(browser.element('#flash')),
    ))
    '''
def test_search_is_postponed_until_actual_action_like_questioning_displayed(
    session_browser, ):
    page = GivenPage(session_browser.driver)
    page.opened_empty()
    element = session_browser.all('.will-appear').element_by(
        have.exact_text('Kate'))

    page.load_body('''
                   <ul>Hello to:
                       <li class="will-appear">Bob</li>
                       <li class="will-appear">Kate</li>
                   </ul>''')

    assert element().is_displayed() is True
def test_waits_for_present_in_dom_and_visibility(session_browser):
    page = GivenPage(session_browser.driver)
    page.opened_with_body('''
        <h2 id="second">Heading 2</h2>''')
    page.load_body_with_timeout(
        '''
        <a href="#second">go to Heading 2</a>
        <h2 id="second">Heading 2</h2>''', 500)

    element = (session_browser.all('a').element_by(
        have.exact_text('go to Heading 2')))
    element.click()

    assert "second" in session_browser.driver.current_url
def test_fails_on_timeout_during_waits_for_present_in_dom_and_visibility(
        session_browser):
    browser = session_browser.with_(timeout=0.25)
    page = GivenPage(browser.driver)
    page.opened_with_body('''
        <h2 id="second">Heading 2</h2>''')
    page.load_body_with_timeout(
        '''
        <a href="#second">go to Heading 2</a>
        <h2 id="second">Heading 2</h2>''', 500)

    with pytest.raises(TimeoutException):
        browser.all('a').element_by(have.exact_text('go to Heading 2')).click()

    assert "second" not in session_browser.driver.current_url
Ejemplo n.º 18
0
def test_element_search_fails_with_message_when_explicitly_waits_for_condition(
        session_browser):
    browser = session_browser.with_(timeout=0.1)
    GivenPage(browser.driver).opened_with_body('''
        <label id='element'>Hello world!</label>
        ''')

    with pytest.raises(TimeoutException) as ex:
        browser.element('#element').should(have.exact_text('Hello wor'))

    assert exception_message(ex) == \
           ['Timed out after 0.1s, while waiting for:',
            "browser.element(('css selector', '#element')).has exact text Hello wor",
            '',
            'Reason: AssertionError: actual text: Hello world!']
Ejemplo n.º 19
0
def test_complete_task():
    # browser.config.driver =
    # browser.config.hook_wait_failure=\
    #     lambda error: TimeoutException(error.msg.replace('file://', ''))
    # browser.config.timeout = 6
    # browser.config.save_screenshot_on_failure = False
    # browser.config.save_page_source_on_failure = False
    browser.open('http://todomvc.com/examples/emberjs/')

    browser.element('#new-todo').type('a').press_enter()
    browser.element('#new-todo').type('b').press_enter()
    browser.element('#new-todo').type('c').press_enter()
    # browser.element('#new-todo').with_(Config(timeout=2)).should(have.value('foo'))
    browser.all('#todo-list>li').should(have.exact_texts('a', 'b', 'c'))

    browser.all('#todo-list>li').element_by(have.exact_text('b'))\
        .element('.toggle').click()
    browser.all('#todo-list>li').filtered_by(have.css_class('completed'))\
        .should(have.exact_texts('b'))
    browser.all('#todo-list>li').filtered_by(have.no.css_class('completed'))\
        .should(have.exact_texts('a', 'c'))
Ejemplo n.º 20
0
def test_fails_on_timeout_during_waits_first_for_present_in_dom_then_visibility(
    session_browser,
):
    browser = session_browser.with_(timeout=0.25)
    page = GivenPage(browser.driver)
    page.opened_with_body(
        '''
        <h2 id="second">Heading 2</h2>'''
    )
    page.load_body_with_timeout(
        '''
        <a href="#second" style="display:none">go to Heading 2</a>
        <h2 id="second">Heading 2</h2>''',
        0.25,
    ).execute_script_with_timeout(
        'document.getElementsByTagName("a")[0].style = "display:block";', 0.5
    )

    with pytest.raises(TimeoutException):
        browser.all('a').element_by(have.exact_text('go to Heading 2')).click()

    assert "second" not in session_browser.driver.current_url
Ejemplo n.º 21
0
    def test_filter_tasks(self):
        browser.open(APP_URL)
        clear_completed_js_loaded = "return $._data($('#clear-completed').get(0), 'events').hasOwnProperty('click')"
        browser.wait.for_(have.js_returned(True, clear_completed_js_loaded))

        browser.element('#new-todo').should(
            be.enabled).set_value('a').press_enter()
        browser.element('#new-todo').should(
            be.enabled).set_value('b').press_enter()
        browser.element('#new-todo').should(
            be.enabled).set_value('c').press_enter()

        browser.all("#todo-list>li").should(have.texts('a', 'b', 'c'))

        browser.all("#todo-list>li").element_by(
            have.exact_text('b')).element(".toggle").click()

        browser.element(by.link_text("Active")).click()
        browser.all("#todo-list>li").filtered_by(be.visible).should(
            have.texts('a', 'c'))

        browser.element(by.link_text("Completed")).click()
        browser.all("#todo-list>li").filtered_by(be.visible).should(
            have.texts('b'))
Ejemplo n.º 22
0
 def items_left_should_be(self, amount: int):
     s('#todo-count>strong').should(have.exact_text(str(amount)))
     return self
Ejemplo n.º 23
0
 def toggle(self, name: str):
     self.todos.element_by(have.exact_text(name)).element('.toggle').click()
     return self
Ejemplo n.º 24
0
 def delete(self, name: str):
     self.todos.element_by(have.exact_text(name)).hover()\
         .element('.destroy').click()
     return self
Ejemplo n.º 25
0
 def start_editing(self, name: str, new_name):
     self.todos.element_by(have.exact_text(name)).double_click()
     return self.todos.element_by(have.css_class('editing'))\
         .element('.edit').with_(set_value_by_js=True).set_value(new_name)
Ejemplo n.º 26
0
def todo(text):
    return todos.element_by(have.exact_text(text))
def delete(todo: str):
    todo_list.element_by(
        have.exact_text(todo)).hover().element('.destroy').click()
def toggle(todo: str):
    todo_list.element_by(have.exact_text(todo)).element('.toggle').click()
def start_editing(todo: str, new_text):
    todo_list.element_by(have.exact_text(todo)).double_click()
    return todo_list.element_by(have.css_class('editing'))\
        .element('.edit').perform(command.js.set_value(new_text))
Ejemplo n.º 30
0
 def should_have_items_left(self, count: int):
     browser.element('#todo-count strong').should(
         have.exact_text(str(count)))
     return self