Just proposal.
Current Appium ruby binding have many monkey patches for Selenium webdriver.
So, the library is affected by selenium-webdriver's changes such as Update selenium-webdriver related methods #558 .
To reduce the impact and enhance maintainability, I'd like to refine the implementations.
- refactor/rewrite the library such as selenium's other drivers
- ...?
for various drivers
- default(iOS or Android) inherit selenium
- bridge for Android, override default driver for some Android specific methods
- uiautomator1
- uiautomator2
- espresso
- ...
- bridge for iOS, override default driver for some iOS specific methods
- UIAutomation
- XCUITest
- EarlGrey, etc...
class Driver
include SearchContext
class << self
def for(os, driver, opts = {})
listener = opts.delete(:listener)
bridge = case os
when :android
case driver
when :uiautomator2
Android::UIAutomator2::Bridge.new(opts)
when :espresso
Android::Espresso::Bridge.new(opts)
else # default for android
Android::UIAutomato1::Bridge.new(opts)
when :ios
case driver
when :xcuitest
IOS::XCUITest::Bridge.new(opts)
when :earlgrey
IOS::EarlGrey::Bridge.new(opts)
else # default for ios
IOS::UIAutomation::Bridge.new(opts)
else
# Default::Bridge < :: Selenium::WebDriver::Driver::Remote::Bridge
Default::Bridge.new(ops) # default. Each driver inherit this default bridge
end
bridge = Support::EventFiringBridge.new(bridge, listener) if listener
new(bridge)
end
end
Just proposal.
Current Appium ruby binding have many monkey patches for Selenium webdriver.
So, the library is affected by selenium-webdriver's changes such as Update selenium-webdriver related methods #558 .
To reduce the impact and enhance maintainability, I'd like to refine the implementations.
for various drivers