Appium中get_window_size()返回值无法用width/height访问报错咨询
解决Appium get_window_size()返回字典导致的AttributeError问题
这个问题我之前帮同事排查过,其实就是对Appium返回值的类型理解错了~
你写的代码里默认get_window_size()会返回一个带有width和height属性的对象,但实际在你的Appium客户端版本里,这个方法返回的是字典,键为'width'和'height',所以用.width这种属性访问的方式自然会触发AttributeError: 'dict' object has no attribute 'width'。
修正后的代码
只需要把属性访问改成字典的键访问即可:
size = self.driver.get_window_size() start_y = size['height'] * 0.5 end_y = size['height'] * 0.5 start_x = size['width'] * 0.8 end_x = size['width'] * 0.2 self.driver.swipe(start_x, start_y, end_x, end_y, 400)
兼容不同返回类型的健壮写法
如果担心不同Appium版本返回类型不一致(有些版本确实会返回对象),可以加个类型判断做兼容:
size = self.driver.get_window_size() # 同时兼容字典和对象两种返回格式 if isinstance(size, dict): screen_width = size['width'] screen_height = size['height'] else: screen_width = size.width screen_height = size.height start_y = screen_height * 0.5 end_y = screen_height * 0.5 start_x = screen_width * 0.8 end_x = screen_width * 0.2 self.driver.swipe(start_x, start_y, end_x, end_y, 400)
这样不管返回的是字典还是属性对象,代码都能正常运行啦。
内容的提问来源于stack exchange,提问作者Iiro Alhonen
相关产品推荐
相关产品推荐

