Пример #1
0
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>
        ''',
        0.5,
    )

    session_browser.all('a')[0].click()

    assert "second" in session_browser.driver.current_url
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_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)

    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_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,
    )
    element = browser.element("a")

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

    assert "second" not in session_browser.driver.current_url
def test_waits_first_for_present_in_dom_then_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" 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 = (session_browser.all('a').element_by(
        have.exact_text('go to Heading 2')))
    element.click()

    assert "second" in session_browser.driver.current_url
Пример #6
0
def test_can_scroll_to_via_js(function_browser):
    function_browser.driver.set_window_size(300, 200)
    GivenPage(function_browser.driver).opened_with_body(
        '''
        <div id="paragraph" style="margin: 400px">
        </div>
        <a id="not-viewable-link" href="#header"/>
        <h1 id="header">Heading 1</h2>
        '''
    )
    link = function_browser.element("#not-viewable-link")
    # browser.driver().execute_script("arguments[0].scrollIntoView();", link)
    # - this code does not work because SeleneElement is not JSON serializable, and I don't know the way to fix it
    #   - because all available in python options needs a change to json.dumps call - adding a second parameter to it
    #     and specify a custom encoder, but we can't change this call inside selenium webdriver implementation

    function_browser.driver.execute_script(
        "arguments[0].scrollIntoView();", link()
    )
    link.click()
    # actually, selene .click() scrolls to any element in dom, so it's not an option fo
    # in this case we should find another way to check page is scrolled down or to choose another script.

    assert "header" in function_browser.driver.current_url
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
def test_search_is_postponed_until_actual_action_like_questioning_count(
    session_browser,
):
    page = GivenPage(session_browser.driver)
    page.opened_empty()
    elements = session_browser.all('li').filtered_by(
        have.css_class('will-appear')
    )

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

    assert len(elements) == 2
def test_counts_invisible_tasks(session_browser):
    page = GivenPage(session_browser.driver)
    page.opened_empty()
    elements = session_browser.all('li').filtered_by(
        have.css_class('will-appear')
    )
    page.load_body(
        '''
        <ul>Hello to:
            <li>Anonymous</li>
            <li class='will-appear'>Bob</li>
            <li class='will-appear' style='display:none'>Kate</li>
        </ul>
        '''
    )

    count = len(elements)

    assert count == 2
Пример #10
0
def test_waits_for_inner_presence_in_dom_and_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">go to Heading 2</a>
            <h2 id="second">Heading 2</h2>
        </p>''',
        250,
    )

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

    assert "second" in session_browser.driver.current_url
Пример #11
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
Пример #12
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
Пример #13
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
def test_search_is_lazy_and_does_not_start_on_creation(session_browser):
    page = GivenPage(session_browser.driver)
    page.opened_empty()
    non_existent_collection = session_browser.all('.not-existing').filtered_by(
        have.css_class('special'))
    assert str(non_existent_collection)
Пример #15
0
def setup_module(m):
    driver = webdriver.Chrome(ChromeDriverManager().install())
    browser.set_driver(driver)
    global GIVEN_PAGE
    GIVEN_PAGE = GivenPage(driver)
Пример #16
0
def test_have_url_containing(session_browser):
    GivenPage(session_browser.driver).opened_empty()
    session_browser.should(have.url_containing('empty.html'))
    session_browser.should(have.no.url_containing('start_page.xhtml'))
Пример #17
0
def test_have_url(session_browser):
    GivenPage(session_browser.driver).opened_empty()
    session_browser.should(have.url(session_browser.driver.current_url))
    session_browser.should(have.no.url(
        session_browser.driver.current_url[:-1]))
Пример #18
0
def setup_module(m):
    driver = webdriver.Firefox()
    browser.set_driver(driver)
    global GIVEN_PAGE
    GIVEN_PAGE = GivenPage(driver)