def test_fails_on_timeout_when_waiting_parent_in_dom_then_visible_then_inner_in_dom_then_visible( session_browser, ): browser = session_browser.with_(timeout=0.25) page = GivenPage(browser.driver) page.opened_empty() page.load_body_with_timeout( ''' <p style="display:none"> <h2 id="second">Heading 2</h2> </p>''', 250, ).execute_script_with_timeout( 'document.getElementsByTagName("p")[0].style = "display:block";', 500 ) page.load_body_with_timeout( ''' <p> <a href="#second" style="display:none">go to Heading 2</a> <h2 id="second">Heading 2</h2> </p>''', 750, ).execute_script_with_timeout( 'document.getElementsByTagName("a")[0].style = "display:block";', 1000 ) with pytest.raises(TimeoutException): browser.element('p').element('a').click() assert "second" not in browser.driver.current_url
def test_waits_first_for_parent_in_dom_then_inner_in_dom_then_visibility( session_browser, ): page = GivenPage(session_browser.driver) page.opened_empty() page.load_body_with_timeout( ''' <p> <h2 id="second">Heading 2</h2> </p>''', 250, ) page.load_body_with_timeout( ''' <p> <a href="#second" style="display:none">go to Heading 2</a> <h2 id="second">Heading 2</h2> </p>''', 500, ).execute_script_with_timeout( 'document.getElementsByTagName("a")[0].style = "display:block";', 750 ) 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> ''', 0.25, ).execute_script_with_timeout( 'document.getElementsByTagName("a")[0].style = "display:block";', 0.5 ) element = browser.element("a") with pytest.raises(TimeoutException): element.click() assert "second" not in session_browser.driver.current_url
def test_waits_nothing(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>''') assert len(elements) == 2 page.load_body_with_timeout( ''' <ul>Hello to: <li>Anonymous</li> <li class='will-appear'>Bob</li> <li class='will-appear' style='display:none'>Kate</li> <li class='will-appear'>Joe</li> </ul>''', 500, ) assert len(elements) == 2
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) session_browser.all('a')[0].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
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>''', 0.25, ).execute_script_with_timeout( 'document.getElementsByTagName("a")[0].style = "display:block";', 0.5) session_browser.all('a')[0].click() assert "second" in session_browser.driver.current_url
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
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, ) 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_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_waits_for_parent_in_dom_then_visible(session_browser): page = GivenPage(session_browser.driver) page.opened_empty() elements = session_browser.element('#will-appear').all('.item') page.load_body(''' <li class='item'>Bob</li> <li class='item' style='display:none'>Kate</li>''') page.load_body_with_timeout( ''' <ul id='will-appear' style="display:none">Hello to: <li class='item'>Bob</li> <li class='item' style='display:none'>Kate</li> </ul>''', 0.25, ).execute_script_with_timeout( 'document.getElementsByTagName("ul")[0].style = "display:block";', 0.5) assert len(elements) == 2
def test_does_not_wait_inner(session_browser): page = GivenPage(session_browser.driver) page.opened_empty() elements = session_browser.element('ul').all('.will-appear') page.load_body(''' <ul>Hello to: <li class='will-appear'>Bob</li> <li class='will-appear' style='display:none'>Kate</li> </ul>''') assert len(elements) == 2 page.load_body_with_timeout( ''' <ul>Hello to: <li class='will-appear'>Bob</li> <li class='will-appear' style='display:none'>Kate</li> <li class='will-appear'>Joe</li> </ul>''', 500) assert len(elements) == 2