Last active
July 15, 2022 04:20
-
-
Save rerorero/5393cc24f6bc5cb944519bee4f7e3ff6 to your computer and use it in GitHub Desktop.
Selenium memo
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Appium:Core.for(caps) -> Appium::Core::Driver.for() -> Driver::initialize | |
- new Selenium::WebDriver::Remote::Capabilities | |
- capabilitiesに応じてBrdige.forを実行 | |
- ex: iosなら ::Appium::Core::Ios::Xcuitest::Bridge.for self 中ではselfにmoduleをextendしている | |
- Appium::Core::Ios::Xcuitest::Device をextend | |
- add_endpoint_methodで拡張している | |
- hide_keyboard | |
- background_app | |
- start_performance_record | |
- get_performance_record | |
- start_recording_screen | |
start_driver() | |
- http_client作成, idempotency headerを生成するオプションがある | |
- @driver = ::Appium::Core::Base::Driver.new() ここでもnewしている | |
Appium::Core::Driver(このメソッドの所属クラス)は素のクラスでAppium::Core::Base::DriverがSelenium::WebDriver::Driverを継承している | |
Appium::Core::DriverはSelenium Driverのラッパーというかfactory class的な存在。 | |
Appium::Core::Base::Driverはいろいろincludeしている | |
include ::Selenium::WebDriver::DriverExtensions::UploadsFiles | |
include ::Selenium::WebDriver::DriverExtensions::HasSessionId | |
include ::Selenium::WebDriver::DriverExtensions::HasWebStorage | |
include ::Appium::Core::Base::Rotatable | |
include ::Appium::Core::Base::SearchContext | |
include ::Appium::Core::Base::TakesScreenshot | |
include ::Appium::Core::Base::HasRemoteStatus | |
include ::Appium::Core::Base::HasLocation | |
include ::Appium::Core::Base::HasNetworkConnection | |
include ::Appium::Core::Waitable | |
Selenium::WebDriver::Deriver::initialize() | |
- create_bridge() Appium::Core::Base::Driverでoverrideしている | |
Appium::Core::Base::Bridge::new() capabilitiesやhttp clientなどが渡ってくる | |
bridgeはhttp clientを持っていてremoteにアクセスする。bridge.executeでBridge::COMMANDSに定義されているコマンド(API)を呼び出す | |
bridge.create_session() | |
bridge.execute(:new_session)でサーバーに問い合わせsession id生成 | |
@bridgeに設定 | |
- DirectConnectionsが設定されている場合intemediate serverを回避して直接繋げられるらしい。普通アクセスできるんだろうか・・? | |
https://appiumpro.com/editions/86-connecting-directly-to-appium-hosts-in-distributed-environments | |
- session idをファイルに書く | |
- @driverを返す |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Appium::Core::DriverはWebDriver | |
CommandExecutorを持っていてそのラッパーでもある。 | |
CommandExecutorはremote serverにHTTPをコマンドとして送信する | |
- execute() | |
CommandExecutorで指定のcommandをremote serverに贈り実行する | |
- execute_script() | |
渡されたjavascriptを同期的に実行 | |
W3C_EXECUTE_SCRIPT_ASYNC コマンドを実行 | |
JavaにはexecuteDriverScriptというまとめて送るやつがあるらしい | |
https://www.headspin.io/course-material/speeding-up-appium-tests-in-distributed-environments |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment