from appium import webdriver from appium.options.ios import XCUITestOptions from appium.options.android import UiAutomator2Options def create_driver(remote_url: str, caps: dict, mobile_os: str): mobile_os = (mobile_os or "").lower() # Make a shallow copy of caps and remove non-capability keys filtered_caps = dict(caps) if caps is not None else {} filtered_caps.pop("appium_url", None) if mobile_os == "ios": options = XCUITestOptions().load_capabilities(filtered_caps) else: options = UiAutomator2Options().load_capabilities(filtered_caps) return webdriver.Remote(command_executor=remote_url, options=options)