软件版本信息:
Appium-Python-Client 2.6.0
Python 3.10
问题描述:
我把 appium 常用的方法进行的简单的封装,添加了一些自定义日志信息例如以下代码:
这样可以提供给功能测试人员使用我们工具在 xml 中调用当前的方法传入所需参数即可实现自动化.
@classmethod
def clickElementById(cls, serial: str, element: str):
"""
根据元素id查找元素并点击
:param serial: 执行操作的设备名称
:param element: 元素名
:return: status PASS or FAIL
"""
status = "FAIL"
driver = None
try:
driver = cls.__driver(serial)
el = driver.find_element(ID, element)
if el:
el.click()
status = "PASS"
print(f"Method {def_name()} execute success, return: {status}")
except NoSuchElementException as e:
print(f"Method {def_name()} throw exception as blow:")
print(f"Can't find element {element}")
except MaxRetryError as e:
# TODO: 是否可以在这里做appium server处理
print("Server has been destroyed,please restart!!!")
finally:
driver.quit()
return status
问题点:
每一次调用都存在重新 webdriver.Remote(url, caps) 一次,非常影响测试效率
直接调用:文章源自玩技e族-https://www.playezu.com/193043.html
import os
import time
from appium import webdriver
class GlobalMethods(object):
def __init__(self):
self.cmd = f"start appium -p 4726"
self.url = "http://127.0.0.1:4726/wd/hub"
self.__server()
def __server(self):
os.system(self.cmd)
def driver(self):
caps = dict()
caps['platformName'] = 'Android'
caps['automationName'] = 'UiAutomator2'
caps['udid'] = "R1J57L11c09345"
return webdriver.Remote(self.url, caps)
if __name__ == '__main__':
s_time = time.time()
app = GlobalMethods().driver()
app.press_keycode(3)
app.back()
c_time = time.time()
ss_time = c_time - s_time
print(ss_time)
print('%s 秒' % ss_time)
请问各位大佬有没有什么方式可以解决这样的问题? ps:我司目前大部分属于功能测试,所以提供出公共方法是有必要的文章源自玩技e族-https://www.playezu.com/193043.html
软件测试是文章源自玩技e族-https://www.playezu.com/193043.html 文章源自玩技e族-https://www.playezu.com/193043.html