Example #1
0
def test_pen_pointer_properties(driver, pages):
    pages.load("pointerActionsPage.html")
    pointerArea = driver.find_element(By.CSS_SELECTOR, "#pointerArea")
    pointer_input = PointerInput(interaction.POINTER_PEN, "pen")
    actions = ActionBuilder(driver, mouse=pointer_input)
    center = _get_inview_center(pointerArea.rect, _get_viewport_rect(driver))
    actions.pointer_action.move_to(pointerArea) \
        .pointer_down(pressure=0.36, tilt_x=-72, tilt_y=9, twist=86) \
        .move_to(pointerArea, x=10, y=40) \
        .pointer_up() \
        .move_to(pointerArea, x=10, y=50)
    actions.perform()
    events = _get_events(driver)
    assert events[3]["type"] == "pointerdown"
    assert events[3]["pageX"] == pytest.approx(center["x"], abs=1.0)
    assert events[3]["pageY"] == pytest.approx(center["y"], abs=1.0)
    assert events[3]["target"] == "pointerArea"
    assert events[3]["pointerType"] == "pen"
    # The default value of width and height for mouse and pen inputs is 1
    assert round(events[3]["width"], 2) == 1
    assert round(events[3]["height"], 2) == 1
    assert round(events[3]["pressure"], 2) == 0.36
    assert events[3]["tiltX"] == -72
    assert events[3]["tiltY"] == 9
    assert events[3]["twist"] == 86
    assert events[6]["type"] == "pointermove"
    assert events[6]["target"] == "pointerArea"
    assert events[6]["pointerType"] == "pen"
    assert round(events[6]["width"], 2) == 1
    assert round(events[6]["height"], 2) == 1
    # The default value of pressure for all inputs is 0.5, other properties are 0
    assert round(events[6]["pressure"], 2) == 0.5
    assert events[6]["tiltX"] == 0
    assert events[6]["tiltY"] == 0
    assert events[6]["twist"] == 0
Example #2
0
 def tap_at(self, x, y):
     actions = ActionBuilder(self.driver)
     p = actions.add_pointer_input("touch", "finger")
     p_actions = PointerActions(p)
     p.create_pointer_move(duration=0, x=x, y=y, origin='viewport')
     p_actions.pointer_down()
     p_actions.pause(0.2)
     p_actions.pointer_up()
     actions.perform()
def drawVerticalLine (driver, origin, radius):
    line_draw = ActionBuilder(driver)
    finger = line_draw.add_pointer_input(POINTER_TOUCH, 'finger')
    print(f"end hline at {origin['x']} and {origin['y']-radius}")
    finger.create_pointer_move(duration=0, x=origin['x'], y=origin['y']-radius)
    finger.create_pointer_down(MouseButton.LEFT)
    print(f"end hline at {origin['x']} and {origin['y']+radius}")
    finger.create_pointer_move(duration=100, x=origin['x'], y=origin['y']+radius)
    finger.create_pointer_up(MouseButton.LEFT)
    line_draw.perform()
def drawCircle (driver, origin, radius, steps):
    firstPoint = get_point_on_circle(0, steps, origin, radius)
    circle_draw = ActionBuilder(driver)
    finger = circle_draw.add_pointer_input(POINTER_TOUCH, 'finger')
    finger.create_pointer_move(duration=0, x=firstPoint['x'], y=firstPoint['y'])
    finger.create_pointer_down(MouseButton.LEFT)
    for i in range(1, steps + 1):
        point = get_point_on_circle(i, steps, origin, radius)
        finger.create_pointer_move(duration=100, x=point['x'], y=point['y'])
    finger.create_pointer_up(MouseButton.LEFT)
    circle_draw.perform()
Example #5
0
def test_context_click(driver, pages):

    pages.load("javascriptPage.html")
    toContextClick = driver.find_element_by_id("doubleClickField")

    actions = ActionBuilder(driver)
    pointer = actions.pointer_action
    pointer.context_click(toContextClick)

    actions.perform()
    assert "ContextClicked" == toContextClick.get_attribute('value')
Example #6
0
def test_can_use_pointer_input_with_event_firing_webdriver(driver, pages):
    ef_driver = EventFiringWebDriver(driver, AbstractEventListener())
    pages.load("javascriptPage.html")
    to_click = ef_driver.find_element(By.ID, "clickField")

    actions = ActionBuilder(ef_driver)
    pointer = actions.pointer_action
    pointer.move_to(to_click).click()
    actions.perform()

    assert to_click.get_attribute('value') == 'Clicked'
Example #7
0
def test_context_click(driver, pages):

    pages.load("javascriptPage.html")
    toContextClick = driver.find_element(By.ID, "doubleClickField")

    actions = ActionBuilder(driver)
    pointer = actions.pointer_action
    pointer.context_click(toContextClick)

    actions.perform()
    assert "ContextClicked" == toContextClick.get_attribute('value')
Example #8
0
def test_move_and_click(driver, pages):
    pages.load("javascriptPage.html")
    toClick = driver.find_element_by_id("clickField")

    actions = ActionBuilder(driver)
    pointer = actions.pointer_action

    pointer.move_to(toClick) \
           .click()

    actions.perform()
    assert "Clicked" == toClick.get_attribute('value')
Example #9
0
def test_double_click(driver, pages):
    """Copied from org.openqa.selenium.interactions.TestBasicMouseInterface."""
    pages.load("javascriptPage.html")
    toDoubleClick = driver.find_element(By.ID, "doubleClickField")

    actions = ActionBuilder(driver)
    pointer = actions.pointer_action

    pointer.double_click(toDoubleClick)

    actions.perform()
    assert "DoubleClicked" == toDoubleClick.get_attribute('value')
Example #10
0
def test_can_use_key_input_with_event_firing_webdriver(driver, pages):
    ef_driver = EventFiringWebDriver(driver, AbstractEventListener())
    pages.load("javascriptPage.html")
    ef_driver.find_element(By.ID, "keyUp").click()

    actions = ActionBuilder(ef_driver)
    key = actions.key_action
    key.send_keys('Success')
    actions.perform()

    result = ef_driver.find_element(By.ID, "result")
    assert result.text == 'Success'
Example #11
0
def test_double_click(driver, pages):
    """Copied from org.openqa.selenium.interactions.TestBasicMouseInterface."""
    pages.load("javascriptPage.html")
    toDoubleClick = driver.find_element_by_id("doubleClickField")

    actions = ActionBuilder(driver)
    pointer = actions.pointer_action

    pointer.double_click(toDoubleClick)

    actions.perform()
    assert "DoubleClicked" == toDoubleClick.get_attribute('value')
Example #12
0
def test_move_and_click(driver, pages):
    pages.load("javascriptPage.html")
    toClick = driver.find_element(By.ID, "clickField")

    actions = ActionBuilder(driver)
    pointer = actions.pointer_action

    pointer.move_to(toClick) \
           .click()

    actions.perform()
    assert "Clicked" == toClick.get_attribute('value')
Example #13
0
def testSendingKeysToActiveElementWithModifier(driver, pages):
    pages.load("formPage.html")
    e = driver.find_element_by_id("working")
    e.click()

    actions = ActionBuilder(driver)
    key_action = actions.key_action
    key_action.key_down(Keys.SHIFT) \
        .send_keys("abc") \
        .key_up(Keys.SHIFT)

    actions.perform()

    assert "ABC" == e.get_attribute('value')
Example #14
0
def testSendingKeysToActiveElementWithModifier(driver, pages):
    pages.load("formPage.html")
    e = driver.find_element(By.ID, "working")
    e.click()

    actions = ActionBuilder(driver)
    key_action = actions.key_action
    key_action.key_down(Keys.SHIFT) \
        .send_keys("abc") \
        .key_up(Keys.SHIFT)

    actions.perform()

    assert "ABC" == e.get_attribute('value')
Example #15
0
def test_can_create_pause_action_on_pointer(driver, pages):
    # If we don't get an error and takes less than 3 seconds to run, we are good
    import datetime
    start = datetime.datetime.now()
    actions1 = ActionBuilder(driver)
    key_actions = actions1.pointer_action
    key_actions.pause(1)
    actions1.perform()
    finish = datetime.datetime.now()
    assert (finish - start).seconds <= 3

    # Add a filler step
    actions2 = ActionBuilder(driver)
    key_action = actions2.pointer_action
    key_action.pause()
    actions2.perform()
Example #16
0
def test_can_create_pause_action_on_pointer(driver, pages):
    # If we don't get an error and takes less than 3 seconds to run, we are good
    import datetime
    start = datetime.datetime.now()
    actions1 = ActionBuilder(driver)
    key_actions = actions1.pointer_action
    key_actions.pause(1)
    actions1.perform()
    finish = datetime.datetime.now()
    assert (finish - start).seconds <= 3

    # Add a filler step
    actions2 = ActionBuilder(driver)
    key_action = actions2.pointer_action
    key_action.pause()
    actions2.perform()
def test_can_scroll_mouse_wheel(driver, pages):
    pages.load("scrollingPage.html")
    driver.execute_script("document.scrollingElement.scrollTop = 0")
    scrollable = driver.find_element(By.CSS_SELECTOR, "#scrollable")

    wheel_input = WheelInput("wheel")
    actions = ActionBuilder(driver, wheel=wheel_input)
    actions.wheel_action.scroll(0, 0, 5, 10, 0, scrollable)

    actions.perform()
    events = _get_events(driver)
    assert len(events) == 1
    assert events[0]["type"] == "wheel"
    assert events[0]["deltaX"] >= 5
    assert events[0]["deltaY"] >= 10
    assert events[0]["deltaZ"] == 0
    assert events[0]["target"] == "scrollContent"
def test_can_create_pause_action_on_pointer(driver, pages):
    # If we don't get an error and takes less than 3 seconds to run, we are good
    # Disabled until pointer actions lands in marionette
    # import datetime
    # start = datetime.datetime.now()
    # actions1 = ActionBuilder(driver)
    # key_actions = actions1.pointer_action
    # key_actions.pause(1)
    # actions1.perform()
    # finish = datetime.datetime.now()
    # assert (finish - start).seconds < 3

    # Add a filler step
    actions2 = ActionBuilder(driver)
    key_action = actions2.pointer_action
    key_action.pause()
    actions2.perform()
Example #19
0
def _performDragAndDropWithMouse(driver, pages):
    """Copied from org.openqa.selenium.interactions.TestBasicMouseInterface."""
    pages.load("draggableLists.html")
    dragReporter = driver.find_element(By.ID, "dragging_reports")
    toDrag = driver.find_element(By.ID, "rightitem-3")
    dragInto = driver.find_element(By.ID, "sortable1")

    actions = ActionBuilder(driver)
    pointer = actions.pointer_action
    pointer.click_and_hold(toDrag) \
           .move_to(driver.find_element(By.ID, "leftitem-4")) \
           .move_to(dragInto) \
           .release()

    assert "Nothing happened." == dragReporter.text

    actions.perform()
    assert "Nothing happened. DragOut" in dragReporter.text
Example #20
0
def _performDragAndDropWithMouse(driver, pages):
    """Copied from org.openqa.selenium.interactions.TestBasicMouseInterface."""
    pages.load("draggableLists.html")
    dragReporter = driver.find_element_by_id("dragging_reports")
    toDrag = driver.find_element_by_id("rightitem-3")
    dragInto = driver.find_element_by_id("sortable1")

    actions = ActionBuilder(driver)
    pointer = actions.pointer_action
    pointer.click_and_hold(toDrag) \
           .move_to(driver.find_element_by_id("leftitem-4")) \
           .move_to(dragInto) \
           .release()

    assert "Nothing happened." == dragReporter.text

    actions.perform()
    assert "Nothing happened. DragOut" in dragReporter.text
Example #21
0
def test_touch_pointer_properties(driver, pages):
    pages.load("pointerActionsPage.html")
    pointerArea = driver.find_element(By.CSS_SELECTOR, "#pointerArea")
    center = _get_inview_center(pointerArea.rect, _get_viewport_rect(driver))
    touch_input = PointerInput(interaction.POINTER_TOUCH, "touch")
    touch_chain = ActionBuilder(driver, mouse=touch_input)
    touch_chain.pointer_action.move_to(pointerArea, x=50, y=25) \
        .pointer_down(width=23, height=31, pressure=0.78, tilt_x=21, tilt_y=-8, twist=355) \
        .move_to(pointerArea, x=60, y=35, width=39, height=35, pressure=0.91, tilt_x=-19, tilt_y=62, twist=345) \
        .pointer_up() \
        .move_to(pointerArea, x=80, y=50)
    touch_chain.perform()
    events = _get_events(driver)
    assert len(events) == 7
    event_types = [e["type"] for e in events]
    assert [
        "pointerover", "pointerenter", "pointerdown", "pointermove",
        "pointerup", "pointerout", "pointerleave"
    ] == event_types
    assert events[2]["type"] == "pointerdown"
    assert events[2]["pageX"] == pytest.approx(center["x"], abs=1.0)
    assert events[2]["pageY"] == pytest.approx(center["y"], abs=1.0)
    assert events[2]["target"] == "pointerArea"
    assert events[2]["pointerType"] == "touch"
    assert round(events[2]["width"], 2) == 23
    assert round(events[2]["height"], 2) == 31
    assert round(events[2]["pressure"], 2) == 0.78
    assert events[2]["tiltX"] == 21
    assert events[2]["tiltY"] == -8
    assert events[2]["twist"] == 355
    assert events[3]["type"] == "pointermove"
    assert events[3]["pageX"] == pytest.approx(center["x"] + 10, abs=1.0)
    assert events[3]["pageY"] == pytest.approx(center["y"] + 10, abs=1.0)
    assert events[3]["target"] == "pointerArea"
    assert events[3]["pointerType"] == "touch"
    assert round(events[3]["width"], 2) == 39
    assert round(events[3]["height"], 2) == 35
    assert round(events[3]["pressure"], 2) == 0.91
    assert events[3]["tiltX"] == -19
    assert events[3]["tiltY"] == 62
    assert events[3]["twist"] == 345
def testDragAndDrop(driver, pages):
    """Copied from org.openqa.selenium.interactions.TestBasicMouseInterface."""
    element_available_timeout = 15
    wait = WebDriverWait(driver, element_available_timeout)
    pages.load("droppableItems.html")
    wait.until(lambda dr: _isElementAvailable(driver, "draggable"))

    if not _isElementAvailable(driver, "draggable"):
        raise AssertionError("Could not find draggable element after 15 seconds.")

    toDrag = driver.find_element(By.ID, "draggable")
    dropInto = driver.find_element(By.ID, "droppable")
    actions = ActionBuilder(driver)
    pointer = actions.pointer_action
    pointer.click_and_hold(toDrag) \
           .move_to(dropInto)\
           .release()

    actions.perform()

    dropInto = driver.find_element(By.ID, "droppable")
    text = dropInto.find_element(By.TAG_NAME, "p").text
    assert "Dropped!" == text
Example #23
0
def testDragAndDrop(driver, pages):
    """Copied from org.openqa.selenium.interactions.TestBasicMouseInterface."""
    element_available_timeout = 15
    wait = WebDriverWait(driver, element_available_timeout)
    pages.load("droppableItems.html")
    wait.until(lambda dr: _isElementAvailable(driver, "draggable"))

    if not _isElementAvailable(driver, "draggable"):
        raise AssertionError("Could not find draggable element after 15 seconds.")

    toDrag = driver.find_element_by_id("draggable")
    dropInto = driver.find_element_by_id("droppable")
    actions = ActionBuilder(driver)
    pointer = actions.pointer_action
    pointer.click_and_hold(toDrag) \
           .move_to(dropInto)\
           .release()

    actions.perform()

    dropInto = driver.find_element_by_id("droppable")
    text = dropInto.find_element_by_tag_name("p").text
    assert "Dropped!" == text
Example #24
0
        EC.presence_of_element_located(
            (MobileBy.ACCESSIBILITY_ID, 'Vancouver, BC'))).click()
    stanley_location = wait.until(
        EC.presence_of_element_located(
            (MobileBy.ACCESSIBILITY_ID, 'Stanley Park'))).location
    print(f'stanley is at {stanley_location}')

    longPress = ActionBuilder(driver)
    finger = longPress.add_pointer_input(POINTER_TOUCH, 'finger')
    finger.create_pointer_move(duration=0,
                               x=stanley_location['x'],
                               y=stanley_location['y'])
    finger.create_pointer_down(MouseButton.LEFT)
    finger.create_pause(2)
    finger.create_pointer_up(MouseButton.LEFT)
    longPress.perform()

    wait.until(
        EC.presence_of_element_located((MobileBy.ACCESSIBILITY_ID, 'Preview')))

    dismissPress = ActionBuilder(driver)
    finger = dismissPress.add_pointer_input(POINTER_TOUCH, 'finger')
    finger.create_pointer_move(duration=0, x=100, y=100)
    finger.create_pointer_down(MouseButton.LEFT)
    finger.create_pause(1)
    finger.create_pointer_up(MouseButton.LEFT)
    dismissPress.perform()

    wait.until(
        EC.presence_of_element_located(
            (MobileBy.ACCESSIBILITY_ID, 'Settings')))
try:
    wait = WebDriverWait(driver, 10)
    wait.until(EC.presence_of_element_located(
        (MobileBy.ACCESSIBILITY_ID, 'Graphics')
    )).click()
    wait.until(EC.presence_of_element_located(
        (MobileBy.ACCESSIBILITY_ID, 'AlphaBitmap')
    ))
    
    scroll = ActionBuilder(driver)
    finger = scroll.add_pointer_input(POINTER_TOUCH, 'finger')
    finger.create_pointer_move(duration=0, x=100, y=500)
    finger.create_pointer_down(MouseButton.LEFT)
    finger.create_pointer_move(duration=250, x=0, y=-500, origin="pointer")
    finger.create_pointer_up(MouseButton.LEFT)
    scroll.perform()

    driver.find_element(MobileBy.ACCESSIBILITY_ID, 'FingerPaint').click()
    wait.until(EC.presence_of_element_located(
        (MobileBy.XPATH, '//android.widget.TextView[contains(@text,"Graphics/FingerPaint")]')
    ))
    window_dimensions = driver.get_window_rect()
    print(f"window size {window_dimensions}")
    window_center = dict()
    window_center['x'] = window_dimensions.get('width')/2
    window_center['y'] = window_dimensions.get('height')/2
    radius = (window_dimensions.get('width') / 2 ) * 0.8
    print(f"window center {window_center}")
    print(f"radius {radius}")
    drawCircle (driver, window_center, radius, 40)
    drawHorizontalLine (driver, window_center, radius)