def test_wait_for_presence():
    context = Context(Settings())
    selenium_mock = Mock()
    selenium_mock.expects(once()).is_element_present(eq('some element')).will(return_value(True))
    selenium_mock.expects(once()).is_visible(eq('some element')).will(return_value(True))

    driver = SeleniumDriver(context, selenium=selenium_mock)
    driver.wait_for_element_present("some element", 1)
    selenium_mock.verify()
def test_wait_for_presence_works_even_when_is_visible_raises():
    context = Context(Settings())
    selenium_mock = Mock()
    selenium_mock.expects(at_least_once()).is_element_present(eq('some element')).will(return_value(True))
    selenium_mock.expects(once()).is_visible(eq('some element')).will(raise_exception(Exception("ERROR: Element some element not found"))).id("is_visible #1")
    selenium_mock.expects(once()).is_visible(eq('some element')).will(return_value(True)).after("is_visible #1")

    driver = SeleniumDriver(context, selenium=selenium_mock)
    driver.wait_for_element_present("some element", 1)
    selenium_mock.verify()
def test_wait_for_presence():
    
    mocker = Mocker()
    
    context = Context(Settings())
    selenium_mock = mocker.mock()
    selenium_mock.is_element_present('some element')
    mocker.result(True)
    selenium_mock.is_visible('some element')
    mocker.result(True)

    with mocker:
        driver = SeleniumDriver(context, selenium=selenium_mock)
        driver.wait_for_element_present("some element", 1)
def test_wait_for_presence_works_even_when_is_visible_raises():
    
    mocker = Mocker()
    
    context = Context(Settings())
    selenium_mock = mocker.mock()
    selenium_mock.is_element_present('some element')
    mocker.count(min=1, max=None)
    mocker.result(True)
    
    with mocker.order():
        selenium_mock.is_visible('some element')
        mocker.throw(Exception("ERROR: Element some element not found"))
        selenium_mock.is_visible('some element')
        mocker.result(True)

    with mocker:
        driver = SeleniumDriver(context, selenium=selenium_mock)
        driver.wait_for_element_present("some element", 1)