python+appium自动化测试-学习过程中踩过的那些坑

一、创建工程虚拟环境问题

(一).工程环境创建

image.png

1.location为工程存储的位置

2.Vietualenv:编译器的虚拟环境

3.New environment using下的Location:虚拟环境存储的位置

4.New environment using下的Base interpreter:基础编译器,即系统安装的python

5.Inherit global site-packages:勾选上的话代表创建的新项目需要copy一份全局包到虚拟环境。

6.Make available to all projects:勾选上,表示,当在虚拟环境下安装包的时候,copy一份到全局。

注意:

全局包存放在python安装目录下的\Lib\site-packages子目录里。

虚拟环境包安装在关联的项目目录下面的${虚拟环境名}\Lib\site-packages子目录里

(二).Project Structure

image.png

介绍上图红色框框中的作用:标识文件

Sources:通过为此类别分配文件夹,您可以告诉IDE编译器此文件夹及其子文件夹包含应作为构建过程的一部分进行编译的源代码。

Excluded:(1) 不会索引该文件夹内的文件, 也就是不再显示indexing
(2)因为不再索引文件夹内的文件, 所以使用全局搜索功能时也不会检查该文件夹内的文件

Templates:模板设置

Resources:适用于您的应用程序中使用的资源文件(图像,各种配置XML和属性文件等)。

二、出现original error could not proxy command to remote server. original error error socket hang up

解决方法:

a.在控制台中输入一下两条命令,再重新安装uiautomator2即可

adb  uninstall io.appium.uiautomator2.server
adb  uninstall io.appium.uiautomator2.server.test

b.重启appium

三、出现Unresolved Attributed Reference,如下图:

image.png

发生原因:

在该类中定义的driver属性为WebDriver(WebDriver库属于Selenium框架),而以上代码中调用的open_notifications()和press_keycode()方法是属于webdriver库(webdriver库属于appium框架),所以需要在该类中导入webdriver类,并在类中将driver声明为webdriver

解决方法:

a.查看open_notifications()方法所在的包有没有在venv→Lib→site-packsges下

b.查看driver是否有定义,在类下定义driver的属性,如下图:

image.png

四、* 传参问题

# 通过ID定位(*表示参数数量不定,无*表示参数数量固定)
a:
    def find_element(self, locator):
        return self.driver.find_element(*locator)
b:
    def find_element_xpath(self, *locator):
        return self.driver.find_element_by_xpath(*locator)

如上例题:
*locator:表示传入的参数数量是不固定的,可以传一个或多个参数
locator:表示传入的参数数量固定为一个

五、Unicode的解码使用gbk解码方式

参数化读取自外部的yaml文件,获取yaml文件例子中,读取yaml文件会出现下图中的问题

编写如下:

search_context_data = yaml.safe_load(open(path, "r"))

会出现如下问题

image.png

问题分析:

错误的意思是:Unicode的解码(Decode)出现错误了,以gbk编码的方式去解码(该字符串变成Unicode),但是此处通过gbk的方式,却无法解码(can't decode).''illegal multibyte sequence"的意思是非法的多字节序列,也就是说无法解码了。

出现这样的错误,可能是要处理的字符串本身不是gbk编码,却是以gbk编码去解码。比如,字符串本身是utf-8的,但用gbk去解码,必然出错。

解决问题:

读取yaml文件时添加一行代码(utf-8)即可,如下:

search_context_data = yaml.safe_load(open(path, "r", encoding= "utf-8"))

六、日志文件输出乱码

使用python的logging模块记录日志,有时会遇到中文编码问题错误。

在logging.FileHandler(path) 中添加指定编码方式 encoding='utf-8' 即可,logging.FileHandler(path, encoding='utf-8') 。

上栗子:

# 借助handle将日志输出到文件中
fh = logging.FileHandler(filename, encoding='utf-8')
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,530评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 86,403评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,120评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,770评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,758评论 5 367
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,649评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,021评论 3 398
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,675评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,931评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,659评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,751评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,410评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,004评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,969评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,203评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,042评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,493评论 2 343