Skip to content

Files

Latest commit

35f7697 · Nov 3, 2021

History

History
66 lines (50 loc) · 1.61 KB

webdriver.md

File metadata and controls

66 lines (50 loc) · 1.61 KB

Title: WebDriver support

WebDriver support

Cog allows remote testing through the WebDriver interface. With Selenium python bindings, you can use the selenium.webdriver.remote.WebDriver class to run the tests on the target device directly from a host computer.

Requirements

  • cog and WPEWebDriver installed on the target devices.
  • Selenium python bindings on the computer with the test scripts.

Launching the WebDriver

For example, on a meta-webkit RPi3 image:

$ export WAYLAND_DISPLAY=wayland-0
$ export XDG_RUNTIME_DIR=/run/user/0
# host=all to allow requests from other machines
$ WPEWebDriver --port=8088 --host=all

Connecting to the driver

In the python script:

from selenium import webdriver

def capabilities():
    return {
        "wpe:browserOptions": {
            "binary": "/usr/bin/cog",
            "args": ["--automation", "--platform=wl"],
        }
    }

driver = webdriver.Remote(
    command_executor="http://YOUR_DEVICE_IP:8088",
    desired_capabilities=capabilities(),
)

Using the driver

from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
from selenium.webdriver.common.actions.action_builder import ActionBuilder

driver.get("https://lichess.org/analysis")
board = WebDriverWait(driver, 10).until(
    EC.presence_of_element_located((By.CLASS_NAME, "cg-wrap"))
)

square_size = board.size["height"] / 8
# ...
actions = ActionBuilder(driver)
pointer = actions.pointer_action
pointer.move_to(board, x, y)
pointer.click()
actions.perform()