Appium의 세련된 작동 방식
원본 스크립트
from time import sleep
from appium import webdriver
from selenium.common.exceptions import NoSuchElementException
caps = {
'platformName': 'Android',
'platformVersion': '6.0.1',
'deviceName': 'emulator-5554',
'appPackage': 'com.xiaomi.shop',
'appActivity': 'com.xiaomi.shop2.activity.MainActivity',
'automationName': 'uiautomator2'
}
dr = webdriver.Remote('http://127.0.0.1:4723/wd/hub', caps)
dr.implicitly_wait(10)
sleep(2)
#
try:
dr.find_element('xpath', '/hierarchy/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.ImageView')
dr.keyevent(4)
except:
print(' ')
dr.find_element_by_xpath('//*[@text=" "]').click()
dr.find_element_by_xpath('//*[@text=" "]').click()
dr.find_element_by_xpath('//*[@text=" 10 "]').click()
dr.find_element_by_xpath('//*[@text=" "]').click()
dr.find_element_by_xpath('//*[@text=" "]').click()
작업 패키지
from time import sleep
from appium import webdriver
from selenium.common.exceptions import NoSuchElementException
APPIUM_SERVER = 'http://127.0.0.1:4723/wd/hub'
AUTOMATION_NAME = 'uiautomator2'
class Device:
def __init__(self, device_name, version, platform='Android'):
print(f' {platform} {version} {device_name}')
self.driver = None
self.caps = dict(platformName=platform, platformVersion=version,
deviceName=device_name, automationName=AUTOMATION_NAME)
def launch_app(self, package, activity):
print(f' {package}/{activity}')
self.caps.update(appPackage=package, appActivity=activity)
self.driver = webdriver.Remote(APPIUM_SERVER, self.caps)
self.driver.implicitly_wait(10)
return self
def find(self, target):
# target id=kw , = , text=target
by, value = target.split('=') if '=' in target else 'text', target
if by == 'text':
by, value = 'xpath', f'//*[@text="{value}"]'
return self.driver.find_element(by, value)
def try_find(self, target):
try:
return self.find(target)
except NoSuchElementException:
print(f' {target} ')
def click(self, target):
print(f" {target}")
self.find(target).click()
return self # self
def input_to(self, target, text):
print(f" {target} {text}")
self.find(target).send_keys(text)
return self
def back(self):
print(' ')
self.driver.keyevent(4)
return self
def wait(self, secs=1):
sleep(secs)
return self
사용
mumu = Device(device_name='emulator-5554', version='6.0.1')
mumu.launch_app(package='com.xiaomi.shop', activity='com.xiaomi.shop2.activity.MainActivity').wait(2)
#
ads = mumu.try_find('xpath=/hierarchy/android.widget.FrameLayout/android.widget.FrameLayout/'
'android.widget.FrameLayout/android.widget.ImageView')
mumu.back()
#
mumu.click(' ').click(' ').click(' 10 ').click(' ').click(' ')
다음과 같이 출력을 실행합니다.
Android 6.0.1 emulator-5554
com.xiaomi.shop/com.xiaomi.shop2.activity.MainActivity
10
image
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.