This module is Webdriver for Selenium(Selenium-hub).
Overview
Preparation
Start Selenium-hub before run program.
If you want to use docker-compse, save docker-compose.yaml to your working directory.
version: '3' services: selenium-hub: image: selenium/hub:3.141.59-20210830 container_name: selenium-hub ports: - 4444:4444 environment: - GRID_MAX_SESSION=10 firefox: &node image: selenium/node-firefox:3.141.59-20210830 container_name: selenium-firefox shm_size: 2gb depends_on: - selenium-hub environment: - HUB_HOST=selenium-hub - HUB_PORT=4444 - NODE_MAX_SESSION=5 chrome: <<: *node image: selenium/node-chrome:3.141.59-20210830 container_name: selenium-chrome
And start docker-compose.
docker-compose up --build
or
docker-compose start
Create session
Using Chrome. (default)
import selenimum proc main() = let driver = newSeleniumWebDriver() session = driver.newSession() defer: session.deleteSession() # ... control Selenium ... main()
Use Firefox.
Set capabilities(JsonNode) to newSession proc.
import selenimum, json proc main() = let driver = newSeleniumWebDriver() capabilities = %*{ "desiredCapabilities": { "browserName": "firefox" }, "requiredCapabilities": {} } session = driver.newSession(capabilities=capabilities) defer: session.deleteSession() # ... control Selenium ... main()
Navigate to web site
session.navigateTo("https://example.com/") # navigate to example.com
Find element
let h1 = session.findElement(query="h1") echo "h1 text:", h1.getText() # h1 text: Example Domain
Click element
let link = session.findElement(query="a") link.click() # move to https://www.iana.org/domains/reserved sleep(300) echo "page title: ", session.getTitle() # page title: IANA — IANA-managed Reserved Domains
Take screenshot
session.saveScreenshot("./example.png")
Usage
Examples:
import selenimum, os proc main() = selenium "http://selenium-hub:4444/wd/hub": chrome: navigateTo "https://example.com/" echo "page title: ", getTitle() ## Output: ## page title: Example Domain echo "h1 text:", getText("h1") ## Output: ## h1 text: Example Domain click "a" sleep(300) echo "page title: ", getTitle() ## Output: ## page title: IANA — IANA-managed Reserved Domains main()
Exports
-
getPageSource, takeScreenshot, refresh, getCurrentUrl, back, navigateTo, navigateTo, saveScreenshot, getTitle, forward, selenimum/browse, getNamedCookie, deleteCookie, %, isEmpty, getAllCookies, selenimum/cookie, setCookie, deleteAllCookies, Cookie, findElementById, post, clearValue, findElementsByTagName, getAttributeValue, findElementsBySelector, findElementById, findElementByTagName, findElements, findElementsBySelector, click, Element, findElementByTagName, setValue, findElementByXPath, findElement, setValue, findElementBySelector, getText, value=, findElements, findElementBySelector, findElementsByTagName, get, getTagName, findElementByXPath, click, value[]=, findElementsByXPath, selenimum/element, findElement, getText, findElementsByXPath, selenimum/errors, checkHttpResponse, SeleniumWebDriverException, SeleniumNotFoundException, SeleniumProtocolException, SeleniumServerException, selenimum/frame, selenimum/rect, Rect, selenimum/script, executeScript, defaultCapabilities, selenimum/session, Timeouts, post, SeleniumSession, newSession, delete, get, getTimeouts, deleteSession, SeleniumWebDriver, post, delete, SeleniumStatus, status, selenimum/webdriver, newSeleniumWebDriver, get, getWindowRect, selenimum/window, firefox, getCurrentUrl, clearValue, navigateTo, screenshot, elements, chrome, click, refresh, getPageSource, back, getText, findElement, selenium, getTitle, forward, selenimum/selenimum_macros, setValue