持续更新系列。。
刚开始学时,一个小小的问题都可能要耗费很多时间,甚至是导致从入门到放弃的直接原因hhhhh 。所以写下此篇总结或许会帮到刚开始学习的你!~
1.运行adb device报错,解决办法
- 参考资料-使用adb命令连接模拟器,在5037端口未被占用情况下仍报端口错误_细数落叶的专栏-CSDN博客
-
将本机C:\WINDOWS\System32下的adb.exe文件复制到C:\Windows\SysWOW64下。
-
将本机C:\WINDOWS\System32下的AdbWinApi.dll文件复制到C:\Windows\SysWOW64下
2.提示 * daemon not running. starting it now on port 5037 *,解决办法
-
先查找5037是否被占用netstat -aon|findstr "5037"
-
关闭QQ音乐后,端口被释放
3.运行脚本时报错
-
下载了Android 6.0 sdk后解决该问题
4.使用Appium Inspector时一直无法启动appAppium+python自动化5-Appium Inspector - 上海-悠悠 - 博客园
-
点击启动按钮-放大镜按钮后,需要点击“refesh“后才会启动app
5.在脚本中增加swipe(800,800,400,800)后,执行脚本报错:selenium.common.exceptions.WebDriverException: Message: An unknown server-side error occurred while processing the command.
-
通过appium+python自动化24-滑动方法封装(swipe) - 上海-悠悠 - 博客园这个方法实现滑动后再执行脚本就没有报错了。。
-
def swipeUp(driver, t=500, n=1): '''向上滑动屏幕''' l = driver.get_window_size() x1 = l['width'] * 0.5 # x坐标 y1 = l['height'] * 0.75 # 起始y坐标 y2 = l['height'] * 0.20 # 终点y坐标 for i in range(n): driver.swipe(x1, y1, x1, y2, t) def swipeDown(driver, t=500, n=1): '''向下滑动屏幕''' l = driver.get_window_size() x1 = l['width'] * 0.5 # x坐标 y1 = l['height'] * 0.25 # 起始y坐标 y2 = l['height'] * 0.75 # 终点y坐标 for i in range(n): driver.swipe(x1, y1, x1, y2,t) def swipLeft(driver, t=500, n=1): '''向左滑动屏幕''' l = driver.get_window_size() x1 = l['width'] * 0.75 y1 = l['height'] * 0.5 x2 = l['width'] * 0.25 for i in range(n): driver.swipe(x1, y1, x2, y1, t) def swipRight(driver, t=500, n=1): '''向右滑动屏幕''' l = driver.get_window_size() x1 = l['width'] * 0.25 y1 = l['height'] * 0.5 x2 = l['width'] * 0.75 for i in range(n): driver.swipe(x1, y1, x2, y1, t)
6.如何获取屏幕大小
-
如下
-
# 获取屏幕的size size = driver.get_window_size() print(size) # 屏幕宽度width print(size['width']) # 屏幕高度width print(size['height'])
7.执行登陆脚本后,app黑屏闪退
-
使用调试版本的包即可正常登陆
-
ps.一个小小的引申:原则上应该要用debug的包,但native的操作,应该无所谓的,只有H5的才需要打开debug模式
8.打开本地文件os.system("F:\uploadFile.exe")报错:OSError: [Errno 22] Invalid argument:..........
-
转义的问题,换成如下输入方式解决问题
os.system("F:\\uploadFile.exe")
9.书写“from uiautomator import Device”出叹号提示
-
执行“ pip install uiautomator”解决
10.脚本执行不报错,但一直出警告信息“ResourceWarning: unclosed <socket.socket fd=144, family=AddressFamily.AF_INE”
-
书写以下代码解决
-
warnings.simplefilter("ignore", ResourceWarning)
11.打印的日志中文字符显示乱码
-
将file_handler = logging.FileHandler(log_name)代码改成如下解决
-
file_handler = logging.FileHandler(log_name,encoding='utf-8')
12.当elementid一样,text不一样时该怎么定位
-
用以下语句实现根据text来定位:find_element_by_android_uiautomator('new UiSelector().text(\"13795291583的空间\")')
-
driver.find_element_by_android_uiautomator('new UiSelector().text("Custom View")').click() #text driver.find_element_by_android_uiautomator('new UiSelector().textContains("View")').click() #textContains driver.find_element_by_android_uiautomator('new UiSelector().textStartsWith("Custom")').click() #textStartsWith driver.find_element_by_android_uiautomator('new UiSelector().textMatches("^Custom.*")').click() #textMatches
13.使用逍遥模拟器,执行脚本时报找不到
- 由于本机的adb版本和逍遥模拟器中的adb版本不一样导致的解决办法是将C:\Windows\System32中的adb.exe、AdbWinApi.dll、AdbWinUsbApi.dll复制到逍遥模拟器的安装目录中,然后删除原来的nox_adb.exe文件,将复制过来的adb.exe重命名为nox_adb.exe