weditor:是Python版本的Android和iOS查看元素神器,安装命令:pip3 install weditor 启动命令:python3 -m weditor
今天试了一下iOS查看元素的工具weditor,一直提示"no session created ever",这是为什么呢,简直百思不得其解。
(我的解决办法就是咋weditor调用session的地方,手动传入bundle_id)
然后就看weditor的源码
第一步:判断设备
第二步:获取ios客户端信息,需要session
第三步:查看session方法
def connect_device(platform, device_url): """ Returns: deviceId (string) """ device_id = platform + ":" + device_url if platform == 'android': d = _AndroidDevice(device_url) elif platform == 'ios': # ios d = _AppleDevice(device_url) else: d = _GameDevice(device_url or "localhost") cached_devices[device_id] = d return device_id
# 第二步
class _AppleDevice(DeviceMeta):
def __init__(self, device_url):
# 本质也是通过wda调用的
import wda
c = wda.Client(device_url)
self._client = c
# 划重点,这里需要获取session的信息,然而session是接收参数的,这里没有传参
# self.__scale = c.session().scale
self.__scale = c.session(bundle_id="com.xxx.xxxx").scale
def screenshot(self):
return self._client.screenshot(format='pillow')
def dump_hierarchy(self):
return uidumplib.get_ios_hierarchy(self._client, self.__scale)
@property
def device(self):
return self._client.session()
# 第三步
def session(self,
bundle_id=None, # 这里的bundle_id 就是要查看元素的bundle_id,至于weditor有没有传就不知道了
arguments=None,
environment=None,
alert_action=None):pass