webdriver
webdriver
Implementation of a W3C compliant Webdriver client in Crystal, inspired by Watir
Why Selenium + Crystal?
When doing e2e testing, it is often advantageous to perform arrangement on the server by interacting with databases and apis. This library captializes on crystal's strengths by delivering a Watir like solution to interact with w3c compliant browsers in your e2e tests.
webdriver is in beta, feature requests are welcome and appreciated.
Installation
-
Add the dependency to your
shard.yml
:dependencies: webdriver: gitlab: skinnyjames/webdriver
-
Run
shards install
Basic Usage
for more advanced usage, see the wiki and the api documentation
require "webdriver"
browser = Webdriver::Browser.start :chrome
browser.goto "https://www.google.com"
search = browser.text_field(title: /search/i)
search.set("Crystal lang webdriver")
search.blur
browser.input(aria_label: /Google Search/, index: 1).wait_while(&.click)
browser.quit
Page Object usage
This library exports a module that can be mixed into classes to make page objects.
The mixin exposes macros that create methods on the objects to interact with page elements
require "webdriver"
require "webdriver/page"
class GooglePage
include Webdriver::PageObject
textarea(:query, title: /search/i)
input(:submit, aria_label: /Google Search/, index: 1)
def search(term : String) : Nil
self.query = term
submit_element.wait_while(&.click)
end
end
browser = Webdriver::Browser.start(:chrome)
page = GooglePage.new(browser)
begin
browser.goto "https://www.google.com"
page.search("cats")
ensure
browser.quit
end
There is also a factory mixin for spec, to reduce boilerplate in instantiating pages.
include Webdriver::PageFactory
with_browser("https://google.com", :chrome) do |browser|
on(GooglePage, browser) do |page|
page.search("cats")
end
end
Development
currently in beta
Todo
Webdriver protocol
- session
- navigation
- windows
- window actions
- window sizing
- frames
- elements
- shadow dom
- document
- cookies
- actions
- user prompts
- screen capture
Browsers
- chrome
- firefox
Contributing
- Fork it (https://gitlab.com/skinnyjames/webdriver/-/forks/new)
- Create your feature branch (
git checkout -b my-new-feature
) - Commit your changes (
git commit -am 'Add some feature'
) - Push to the branch (
git push origin my-new-feature
) - Create a new Pull Request
Contributors
- Sean Gregory - creator and maintainer
webdriver
- 10
- 0
- 0
- 0
- 0
- over 1 year ago
- August 21, 2021
MIT License
Fri, 22 Nov 2024 10:12:03 GMT