Skip to content

Commit 525da14

Browse files
author
dmy.berezovskyi
committed
added Adnroid driver imp
1 parent 8fde585 commit 525da14

File tree

5 files changed

+54
-9
lines changed

5 files changed

+54
-9
lines changed

config/settings.yaml

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,22 @@
11
default:
2+
DEBUG: True
23
APPIUM_SERVER: "http://localhost:4723/wd/hub"
34

45
stage:
5-
APPIUM_SERVER: "http://stage:4723/wd/hub"
6-
ANDROID_CAPS:
6+
DEBUG: True
7+
APPIUM_SERVER: "http://stage-address:4723/wd/hub"
8+
ANDROID:
79
platformName: "Android"
810
deviceName: "emulator"
9-
app: "/path/to/app.apk"
11+
app: ""
12+
platformVersion: "15"
13+
automationName: "uiautomator2"
1014

1115
prod:
12-
APPIUM_SERVER: "http://prod:4723/wd/hub"
13-
IOS_CAPS:
16+
DEBUG: True
17+
APPIUM_SERVER: "http://prod-adress:4723/wd/hub"
18+
IOS:
1419
platformName: "iOS"
1520
deviceName: "iPhone 14"
1621
bundleId: "com.example.app"
22+
automationName: "XCUITest"

pyproject.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ dynaconf = "^3.2.10"
1818
requests = "^2.31"
1919
pytest-asyncio = "^0.24.0"
2020
pytest-html = "^4.1.1"
21+
Appium-Python-Client = "^4.5.1"
2122

2223
[tool.poetry.dev-dependencies]
2324
ruff = "^0.6.8"

src/drivers/android_driver.py

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
from pathlib import Path
2+
3+
from config import settings
4+
5+
6+
class AndroidCaps:
7+
@staticmethod
8+
def get_caps():
9+
"""Generate and return Android capabilities, with adding dynamic 'app' path."""
10+
caps = settings.ANDROID.to_dict()
11+
12+
if not caps:
13+
raise ValueError("❌ ANDROID capabilities not found in settings.yaml")
14+
15+
caps["app"] = str(Path(__file__).resolve().parents[2] / "data/apps/app.apk")
16+
17+
return caps

src/drivers/driver_factory.py

Lines changed: 16 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,17 @@
1+
from appium import webdriver
2+
3+
from config import settings
4+
from src.drivers.android_driver import AndroidCaps
5+
6+
17
class Driver:
2-
3-
@staticmethod
4-
def get_driver(platform: str):
5-
"""Get driver by platform"""
8+
@staticmethod
9+
def get_driver(platform: str):
10+
"""Get driver by platform, uses appropriate capabilities for Android or iOS."""
11+
if platform.lower() == "android":
12+
caps = AndroidCaps.get_caps()
13+
else:
14+
caps = settings.iOS.to_dict()
15+
16+
driver = webdriver.Remote(settings.APPIUM_SERVER, caps)
17+
return driver

src/drivers/ios_driver.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
from appium.webdriver import webdriver
2+
3+
from config import settings
4+
5+
6+
class iOSDriver:
7+
@staticmethod
8+
def get_driver(platform: str):
9+
return webdriver.Remote(settings.APPIUM_SERVER, caps)

0 commit comments

Comments
 (0)