require_relative 'search_context' module Appium module Core class Base class Driver < ::Selenium::WebDriver::Driver include ::Selenium::WebDriver::DriverExtensions::UploadsFiles include ::Selenium::WebDriver::DriverExtensions::TakesScreenshot include ::Selenium::WebDriver::DriverExtensions::HasSessionId include ::Selenium::WebDriver::DriverExtensions::Rotatable include ::Selenium::WebDriver::DriverExtensions::HasRemoteStatus include ::Selenium::WebDriver::DriverExtensions::HasWebStorage include ::Appium::Core::Base::SearchContext def initialize(opts = {}) listener = opts.delete(:listener) @bridge = ::Appium::Core::Base::Bridge.handshake(opts) if @bridge.dialect == :oss # MJSONWP extend ::Selenium::WebDriver::DriverExtensions::HasTouchScreen extend ::Selenium::WebDriver::DriverExtensions::HasLocation extend ::Selenium::WebDriver::DriverExtensions::HasNetworkConnection elsif @bridge.dialect == :w3c # TODO: Only for Appium. Ideally, we'd like to remove the below like selenium-webdriver extend ::Selenium::WebDriver::DriverExtensions::HasTouchScreen extend ::Selenium::WebDriver::DriverExtensions::HasLocation extend ::Selenium::WebDriver::DriverExtensions::HasNetworkConnection end super(@bridge, listener: listener) end # Get the dialect value # @return [:oss|:w3c] def dialect @bridge.dialect end # Get the device window's size. # @return [Selenium::WebDriver::Dimension] # # @example # size = @driver.window_size # size.width #=> Integer # size.height #=> Integer # def window_size manage.window.size end # Get the device window's size. # @return [String] # # @example # @driver.back # back to the previous view # def back navigate.back end end # class Driver end # class Base end # module Core end # module Appium