コード例 #1
0
def test_waits_first_for_inner_presence_in_dom_then_visibility(
    session_browser, ):
    page = GivenPage(session_browser.driver)
    page.opened_with_body('''
        <p>
            <h2 id="second">Heading 2</h2>
        </p>''')
    page.load_body_with_timeout(
        '''
        <p>
            <a href="#second" style="display:none">go to Heading 2</a>
            <h2 id="second">Heading 2</h2>
        </p>''',
        0.25,
    ).execute_script_with_timeout(
        'document.getElementsByTagName("a")[0].style = "display:block";', 0.5)

    session_browser.element('p').element('a').click()

    assert "second" in session_browser.driver.current_url
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>''',
            250)\
        .execute_script_with_timeout(
            'document.getElementsByTagName("a")[0].style = "display:block";',
            500)
    element = browser.element("a")

    with pytest.raises(TimeoutException):
        element.click()

    assert "second" not in session_browser.driver.current_url
コード例 #3
0
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>''',
        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
コード例 #4
0
def test_inner_element_search_fails_with_message_when_implicitly_waits_for_condition_mismatch_on_inner_element(
        session_browser):
    browser = session_browser.with_(timeout=0.1)
    page = GivenPage(browser.driver)
    page.opened_with_body('''
    <div id='container'>
        <button id='hidden-button' style='display:none'>You can't click me, ha ha! :P</button>
    </div>
    ''')

    with pytest.raises(TimeoutException) as ex:
        browser.element('#container').element('#hidden-button').click()

    assert exception_message(ex) == \
           ['Timed out after 0.1s, while waiting for:',
            "browser.element(('css selector', '#container')).element(('css selector', "
            "'#hidden-button')).click",
            '',
            'Reason: ElementNotInteractableException: Message: element not interactable',
            '(Session info: *)']
コード例 #5
0
def test_click_waits_for_no_overlay(session_browser):
    browser = session_browser.with_(timeout=0.5)
    page = GivenPage(browser.driver)
    page.opened_with_body(
        '''
        <div
            id="overlay"
            style=
            '
                display:block;
                position: fixed;
                display: block;
                width: 100%;
                height: 100%;
                top: 0;
                left: 0;
                right: 0;
                bottom: 0;
                background-color: rgba(0,0,0,0.1);
                z-index: 2;
                cursor: pointer;
            '
        >
        </div>
        <a href="#second">go to Heading 2</a>
        <h2 id="second">Heading 2</h2>
        '''
    )
    before_call = time.time()
    page.execute_script_with_timeout(
        '''
        document.getElementById('overlay').style.display='none'
        ''',
        250,
    )

    browser.element('a').click()

    time_diff = time.time() - before_call
    assert 0.25 < time_diff < 0.5
    assert "second" in browser.driver.current_url
コード例 #6
0
def test_search_is_updated_on_next_actual_action_like_questioning_displayed(
        session_browser):
    element = (session_browser.element('#will-be-existing-element').element(
        '.will-exist-inner'))
    page = GivenPage(session_browser.driver)
    page.opened_with_body('''
        <h1 id="will-be-existing-element">
            <span class="will-exist-inner">Hello</span> kitty:*
        </h1>
        ''')
    assert element().is_displayed() is True

    page.load_body('''
        <h1 id="will-be-existing-element">
            <span class="will-exist-inner" style="display:none">
              Hello
            </span> kitty:*
        </h1>''')
    new_answer = element().is_displayed()

    assert new_answer is False
コード例 #7
0
def test_fails_on_timeout_during_waiting_for_inner_in_dom_and_visibility(
        session_browser):
    browser = session_browser.with_(timeout=0.1)
    page = GivenPage(browser.driver)
    page.opened_with_body(
        '''
        <p>
             <h2 id="second">Heading 2</h2>
        </p>''')
    page.load_body_with_timeout(
        '''
        <p>
            <a href="#second">go to Heading 2</a>
            <h2 id="second">Heading 2</h2>
        </p>''',
        250)

    with pytest.raises(TimeoutException):
        browser.element('p').element('a').click()

    assert "second" not in browser.driver.current_url
コード例 #8
0
def test_inner_element_search_fails_with_message_when_implicitly_waits_for_condition_failed_on_parent_element(
        session_browser):
    browser = session_browser.with_(timeout=0.1)
    page = GivenPage(browser.driver)
    page.opened_with_body('''
    <div>
        <button id='button'>Try to click me</button>
    </div>
    ''')

    with pytest.raises(TimeoutException) as ex:
        browser.element('#not-existing').element('#button').click()

    assert exception_message(ex)[:10] == \
           ['Timed out after 0.1s, while waiting for:',
            "browser.element(('css selector', '#not-existing')).element(('css selector', "
            "'#button')).click",
            '',
            'Reason: NoSuchElementException: Message: no such element: Unable to locate '
            'element: {"method":"css selector","selector":"#not-existing"}',
            '(Session info: *)']
コード例 #9
0
def test_element_search_fails_with_message_when_explicitly_waits_for_not_condition(
    session_browser,
):
    browser = session_browser.with_(timeout=0.1)
    page = GivenPage(browser.driver)
    page.opened_with_body(
        '''
        <label id='element'>Hello world!</label>
        '''
    )

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

    assert exception_message(ex) == [
        'Timed out after 0.1s, while waiting for:',
        "browser.element(('css selector', '#element')).has no exact text Hello world!",
        '',
        'Reason: ConditionNotMatchedError: condition not matched',
    ]
コード例 #10
0
def test_indexed_selement_search_fails_with_message_when_implicitly_waits_for_condition_failed_on_collection(
    session_browser,
):
    browser = session_browser.with_(timeout=0.1)
    page = GivenPage(browser.driver)
    page.opened_with_body(
        '''
    <div>
        <button id='button'>Try to click me</button>
    </div>
    '''
    )

    with pytest.raises(TimeoutException) as ex:
        browser.all('button')[1].click()

    assert exception_message(ex) == [
        'Timed out after 0.1s, while waiting for:',
        "browser.all(('css selector', 'button'))[1].click",
        '',
        'Reason: AssertionError: Cannot get element with index 1 from webelements '
        'collection with length 1',
    ]
コード例 #11
0
ファイル: by_text_test.py プロジェクト: ricardo5987/selene
def test_nested_elements_search(session_browser):
    page = GivenPage(session_browser.driver)
    page.opened_with_body('''
        <div id="container">
            <div>
                <div>
                    <label>First</label>
                </div>
                <div>
                    <a href="#first">go to Heading 1</a>
                </div>
            </div>
            <div>
                <div>
                    <label>Second</label>
                    <div>
                        <a href="#second">go to Heading 2</a>
                        <a href="#third">go to Heading 3</a>
                    </div>
                </div>
                <div>
                </div>
            </div>
        </div>
        <h1 id="first">Heading 1</h2>
        <h2 id="second">Heading 2</h2>
        <h2 id="third">Heading 3</h2>
        ''')

    session_browser.element('#container') \
        .element(by.text('Second')) \
        .element('./following-sibling::*') \
        .element(by.partial_text('Heading 3')) \
        .click()

    assert "third" in session_browser.driver.current_url
コード例 #12
0
ファイル: element__type_test.py プロジェクト: yashaka/selene
def test_type_failure_when_overlapped(session_browser):
    browser = session_browser.with_(timeout=1).with_(
        wait_for_no_overlap_found_by_js=True
    )
    page = GivenPage(browser.driver)
    page.opened_with_body(
        '''
        <div
          id="overlay"
          style="display: block;
                background-color: rgba(0, 0, 0, 0.336);
                position: fixed;
                height: 100%;
                width: 100%;
                top: 0;
                left: 0;
                right: 0;
                bottom: 0;
                z-index: 10000">
        </div>
        <input id="text-field" value="before"></input>
        '''
    )
    time_before = time.time()

    try:
        browser.element('#text-field').type(' after')

    except TimeoutException as error:
        time_spent = time.time() - time_before
        assert time_spent >= 1
        browser.element('#text-field').should(have.value('before'))
        assert (
            'Element: <input id="text-field" value="before">'
            '\n\tis overlapped by: <div id="overlay"'
        ) in error.msg