예제 #1
0
def test_frame_id_number_index(session, index, value):
    session.url = inline("{}{}".format(iframe("<p>foo"), iframe("<p>bar")))

    response = switch_to_frame(session, index)
    assert_success(response)

    element = session.find.css("p", all=False)
    assert element.text == value
예제 #2
0
def test_frame_id_number_index_nested(session):
    session.url = inline(iframe("{}<p>foo".format(iframe("<p>bar"))))

    expected_text = ["foo", "bar"]
    for i in range(0, len(expected_text)):
        response = switch_to_frame(session, 0)
        assert_success(response)

        element = session.find.css("p", all=False)
        assert element.text == expected_text[i]
예제 #3
0
def test_frame_id_webelement_iframe(session, index, value):
    session.url = inline("{}{}".format(iframe("<p>foo"), iframe("<p>bar")))
    frames = session.find.css("iframe")
    assert len(frames) == 2

    response = switch_to_frame(session, frames[index])
    assert_success(response)

    frame_element = session.find.css("p", all=False)
    assert frame_element.text == value
예제 #4
0
def test_link_from_nested_context_with_target(session, target):
    target_page = inline("<p id='foo'>foo</p>")

    session.url = inline(
        iframe("<a href='{}' target='{}'>click</a>".format(
            target_page, target)))
    frame = session.find.css("iframe", all=False)
    session.switch_frame(frame)
    element = session.find.css("a".format(target), all=False)

    orig_handles = session.handles

    response = element_click(session, element)
    assert_success(response)

    if target == "_blank":
        session.window_handle = wait_for_new_handle(session, orig_handles)

    # With the current browsing context removed the navigation should
    # not timeout. Switch to the target context, and wait until the expected
    # element is available.
    if target == "_parent":
        session.switch_frame("parent")
    elif target == "_top":
        session.switch_frame(None)

    wait = Poll(session,
                timeout=5,
                ignored_exceptions=NoSuchElementException,
                message="Expected element has not been found")
    wait.until(lambda s: s.find.css("#foo"))
예제 #5
0
def test_null_response_value(session):
    session.url = inline(iframe("<p>foo"))
    frame_element = session.find.css("iframe", all=False)

    response = switch_to_frame(session, frame_element)
    value = assert_success(response)
    assert value is None
예제 #6
0
def test_frame_id_webelement_no_element_reference(session):
    session.url = inline(iframe("<p>foo"))
    frame = session.find.css("iframe", all=False)
    frame.id = "bar"

    response = switch_to_frame(session, frame)
    assert_error(response, "no such element")
예제 #7
0
파일: iframe.py 프로젝트: eocanha/webkit
def test_frame_element(session):
    # Create a reference element which looks exactly like the frame's content
    session.url = inline("{0}{1}".format(REFERENCE_STYLE, REFERENCE_CONTENT))

    # Capture the inner content as reference image
    ref_el = session.find.css("#content", all=False)
    ref_screenshot = ref_el.screenshot()
    ref_dimensions = element_dimensions(session, ref_el)

    assert png_dimensions(ref_screenshot) == ref_dimensions

    # Capture the frame's element
    iframe_content = "{0}{1}".format(INNER_IFRAME_STYLE, DEFAULT_CONTENT)
    session.url = inline("""{0}{1}""".format(OUTER_IFRAME_STYLE,
                                             iframe(iframe_content)))

    frame = session.find.css("iframe", all=False)
    session.switch_frame(frame)
    div = session.find.css("div", all=False)
    div_dimensions = element_dimensions(session, div)
    assert div_dimensions == ref_dimensions

    response = take_element_screenshot(session, div.id)
    div_screenshot = assert_success(response)

    assert png_dimensions(div_screenshot) == ref_dimensions
    assert div_screenshot == ref_screenshot
예제 #8
0
파일: switch.py 프로젝트: shsiccac/webkit
def test_null_response_value(session):
    session.url = inline(iframe("<p>foo"))
    frame_element = session.find.css("iframe", all=False)

    response = switch_to_frame(session, frame_element)
    value = assert_success(response)
    assert value is None
예제 #9
0
def test_stale_element_from_iframe(session):
    session.url = inline(iframe("<p>foo"))
    frame_element = session.find.css("iframe", all=False)
    session.switch_frame(frame_element)
    stale_element = session.find.css("p", all=False)
    switch_to_parent_frame(session)
    with pytest.raises(StaleElementReferenceException):
        stale_element.text
예제 #10
0
def test_frame_id_webelement_stale_reference(session):
    session.url = inline(iframe("<p>foo"))
    frame = session.find.css("iframe", all=False)

    session.switch_frame(frame)

    response = switch_to_frame(session, frame)
    assert_error(response, "stale element reference")
예제 #11
0
def test_cross_origin_iframe(session, server_config):
    session.url = inline(iframe("", subdomain="www"))
    frame_element = session.find.css("iframe", all=False)

    response = switch_to_frame(session, frame_element)
    value = assert_success(response)
    assert document_location(session).startswith("http://www.{}".format(
        server_config["browser_host"]))
예제 #12
0
def test_stale_element_from_iframe(session):
    session.url = inline(iframe("<p>foo"))
    frame_element = session.find.css("iframe", all=False)
    session.switch_frame(frame_element)
    stale_element = session.find.css("p", all=False)
    switch_to_parent_frame(session)
    with pytest.raises(StaleElementReferenceException):
        stale_element.text
예제 #13
0
def test_cross_origin_iframe(session, server_config):
    session.url = inline(iframe("", domain="alt"))
    frame_element = session.find.css("iframe", all=False)

    response = switch_to_frame(session, frame_element)
    assert_success(response)

    parse_result = urlparse(document_location(session))
    assert parse_result.netloc != server_config["browser_host"]
예제 #14
0
파일: iframe.py 프로젝트: zachlewis2020/wpt
def test_origin(session, domain, url):
    top_level_doc = inline(iframe("<p>frame", domain=domain))

    session.url = top_level_doc
    frame = session.find.css("iframe", all=False)
    session.switch_frame(frame)
    session.find.css("p", all=False)

    response = get_current_url(session)
    assert_success(response, top_level_doc)
예제 #15
0
def test_origin(session, domain, url):
    session.url = inline("<title>foo</title>{}".format(
        iframe("<title>bar</title><p>frame", domain=domain)))

    frame = session.find.css("iframe", all=False)
    session.switch_frame(frame)
    session.find.css("p", all=False)

    response = get_title(session)
    assert_success(response, "foo")
예제 #16
0
def test_nested_cross_origin_iframe(session, server_config):
    frame2 = iframe("", subdomain="www.www")
    frame1 = iframe(frame2, subdomain="www")
    top_doc = inline(frame1, subdomain="")

    session.url = top_doc
    assert document_location(session).startswith("http://{}".format(
        server_config["browser_host"]))

    frame1_el = session.find.css("iframe", all=False)
    response = switch_to_frame(session, frame1_el)
    value = assert_success(response)
    assert document_location(session).startswith("http://www.{}".format(
        server_config["browser_host"]))

    frame2_el = session.find.css("iframe", all=False)
    response = switch_to_frame(session, frame2_el)
    value = assert_success(response)
    assert document_location(session).startswith("http://www.www.{}".format(
        server_config["browser_host"]))
예제 #17
0
파일: switch.py 프로젝트: hop11/gecko-dev
def test_switch_to_window_sets_top_level_context(session):
    session.url = inline(iframe("<p>foo"))

    frame = session.find.css("iframe", all=False)
    session.switch_frame(frame)
    session.find.css("p", all=False)

    response = switch_to_window(session, session.window_handle)
    assert_success(response)

    session.find.css("iframe", all=False)
예제 #18
0
파일: switch.py 프로젝트: hop11/gecko-dev
def test_frame_id_null(session):
    session.url = inline(iframe("{}<div>foo".format(iframe("<p>bar"))))

    frame1 = session.find.css("iframe", all=False)
    session.switch_frame(frame1)
    element1 = session.find.css("div", all=False)

    frame2 = session.find.css("iframe", all=False)
    session.switch_frame(frame2)
    element2 = session.find.css("p", all=False)

    # Switch to top-level browsing context
    response = switch_to_frame(session, None)
    assert_success(response)

    with pytest.raises(StaleElementReferenceException):
        element2.text
    with pytest.raises(StaleElementReferenceException):
        element1.text

    frame = session.find.css("iframe", all=False)
    assert_same_element(session, frame, frame1)
예제 #19
0
def test_nested_cross_origin_iframe(session, server_config):
    frame2 = iframe("", domain="alt", subdomain="www")
    frame1 = iframe(frame2)
    top_doc = inline(frame1, domain="alt")

    session.url = top_doc

    parse_result = urlparse(document_location(session))
    top_level_host = parse_result.netloc
    assert not top_level_host.startswith(server_config["browser_host"])

    frame1_element = session.find.css("iframe", all=False)
    response = switch_to_frame(session, frame1_element)
    assert_success(response)

    parse_result = urlparse(document_location(session))
    assert parse_result.netloc.startswith(server_config["browser_host"])

    frame2_el = session.find.css("iframe", all=False)
    response = switch_to_frame(session, frame2_el)
    assert_success(response)

    parse_result = urlparse(document_location(session))
    assert parse_result.netloc == "www.{}".format(top_level_host)
예제 #20
0
파일: iframe.py 프로젝트: eocanha/webkit
def test_source_origin(session, domain):
    session.url = inline("{0}{1}".format(REFERENCE_STYLE, REFERENCE_CONTENT))

    response = take_screenshot(session)
    reference_screenshot = assert_success(response)
    assert png_dimensions(reference_screenshot) == viewport_dimensions(session)

    iframe_content = "{0}{1}".format(INNER_IFRAME_STYLE, DEFAULT_CONTENT)
    session.url = inline("""{0}{1}""".format(
        OUTER_IFRAME_STYLE, iframe(iframe_content, domain=domain)))

    response = take_screenshot(session)
    screenshot = assert_success(response)
    assert png_dimensions(screenshot) == viewport_dimensions(session)

    assert screenshot == reference_screenshot
예제 #21
0
파일: iframe.py 프로젝트: eocanha/webkit
def test_always_captures_top_browsing_context(session):
    iframe_content = "{0}{1}".format(INNER_IFRAME_STYLE, DEFAULT_CONTENT)
    session.url = inline("""{0}{1}""".format(OUTER_IFRAME_STYLE, iframe(iframe_content)))

    response = take_screenshot(session)
    reference_screenshot = assert_success(response)
    assert png_dimensions(reference_screenshot) == viewport_dimensions(session)

    frame = session.find.css("iframe", all=False)
    session.switch_frame(frame)

    response = take_screenshot(session)
    screenshot = assert_success(response)

    assert png_dimensions(screenshot) == png_dimensions(reference_screenshot)
    assert screenshot == reference_screenshot
예제 #22
0
def test_source_origin(session, url, domain):
    session.url = inline("""{0}{1}""".format(DEFAULT_CSS_STYLE,
                                             DEFAULT_CONTENT))

    response = take_full_screenshot(session)
    reference_screenshot = assert_success(response)
    assert png_dimensions(reference_screenshot) == document_dimensions(session)

    iframe_content = "<style>body {{ margin: 0; }}</style>{}".format(
        DEFAULT_CONTENT)
    session.url = inline("""{0}{1}""".format(
        DEFAULT_CSS_STYLE, iframe(iframe_content, domain=domain)))

    response = take_full_screenshot(session)
    screenshot = assert_success(response)
    assert png_dimensions(screenshot) == document_dimensions(session)

    assert screenshot == reference_screenshot
예제 #23
0
def test_iframe_is_interactable(session):
    session.url = inline(iframe("""
        <body onkeypress="document.querySelector('input').value += event.key">
          <input>
        </body>
    """))

    body = session.find.css("body", all=False)
    frame = session.find.css("iframe", all=False)

    # By default the body has the focus
    assert session.active_element is body

    response = element_send_keys(session, frame, "foo")
    assert_success(response)
    assert session.active_element is frame

    # Any key events are immediately routed to the nested
    # browsing context's active document.
    session.switch_frame(frame)
    result = session.find.css("input", all=False)
    assert result.property("value") == "foo"
예제 #24
0
def test_iframe_is_interactable(session):
    session.url = inline(iframe("""
        <body onkeypress="document.getElementById('result').value += event.key">
          <input type="text" id="result"/>
        </body>
    """))

    body = session.find.css("body", all=False)
    frame = session.find.css("iframe", all=False)

    # By default the body has the focus
    assert_same_element(session, body, session.active_element)

    response = send_keys_to_element(session, frame, "foo")
    assert_success(response)
    assert_same_element(session, frame, session.active_element)

    # Any key events are immediately routed to the nested
    # browsing context's active document.
    session.switch_frame(frame)
    result = session.find.css("input", all=False)
    assert result.property("value") == "foo"
예제 #25
0
파일: iframe.py 프로젝트: eocanha/webkit
def test_source_origin(session, url, domain):
    # Create a reference element which looks exactly like the iframe
    session.url = inline("{0}{1}".format(REFERENCE_STYLE, REFERENCE_CONTENT))

    div = session.find.css("div", all=False)
    div_dimensions = element_dimensions(session, div)

    response = take_element_screenshot(session, div.id)
    reference_screenshot = assert_success(response)
    assert png_dimensions(reference_screenshot) == div_dimensions

    iframe_content = "{0}{1}".format(INNER_IFRAME_STYLE, DEFAULT_CONTENT)
    session.url = inline("""{0}{1}""".format(
        OUTER_IFRAME_STYLE, iframe(iframe_content, domain=domain)))

    frame_element = session.find.css("iframe", all=False)
    frame_dimensions = element_dimensions(session, frame_element)

    response = take_element_screenshot(session, frame_element.id)
    screenshot = assert_success(response)
    assert png_dimensions(screenshot) == frame_dimensions

    assert screenshot == reference_screenshot
예제 #26
0
def test_source_origin(session, url, domain):
    session.url = inline("""{0}{1}""".format(DEFAULT_CSS_STYLE,
                                             DEFAULT_CONTENT))
    element = session.find.css("div", all=False)
    rect = element_rect(session, element)

    response = take_element_screenshot(session, element.id)
    reference_screenshot = assert_success(response)
    assert png_dimensions(reference_screenshot) == (rect["width"],
                                                    rect["height"])

    iframe_content = "<style>body {{ margin: 0; }}</style>{}".format(
        DEFAULT_CONTENT)
    session.url = inline("""{0}{1}""".format(
        DEFAULT_CSS_STYLE, iframe(iframe_content, domain=domain)))
    frame_element = session.find.css("iframe", all=False)
    frame_rect = element_rect(session, frame_element)

    response = take_element_screenshot(session, frame_element.id)
    screenshot = assert_success(response)
    assert png_dimensions(screenshot) == (frame_rect["width"],
                                          frame_rect["height"])

    assert screenshot == reference_screenshot
예제 #27
0
def test_frame_id_number_index_out_of_bounds(session, index):
    session.url = inline(iframe("<p>foo"))

    response = switch_to_frame(session, index)
    assert_error(response, "no such frame")