1. 程式人生 > >appium踩坑填坑實錄

appium踩坑填坑實錄

1. 

問題:

price_st1 = price_str.split('¥')————————>這個的返回值是["","199.00"]

報錯:UnicodeDecodeError: 'ascii' codec can't decode byte 0xc2 in position 0: ordinal not in range(128)
reload(sys)
sys.setdefaultencoding('utf-8')

price_str = '¥199.00'

解決方案:

在標頭檔案新增

import sys

2.

問題:
層級結構:
FrameLayout
       textview1
       textview2

關係描述:
FrameLayout是textview1和textview2的父佈局,通過FrameLayout定位textview1和textview2
點選FrameLayout跳頁,用textview1和textview2判斷FrameLayout的唯一性,防止重複點選
問題描述:
當FrameLayout顯示不完全的時候,可以點選FrameLayout跳頁,但是這時候是不能通過FrameLayout定位到textview1和textview2的,如果獲取不到textview1和textview2就會報錯
解決方案:
(思路:使用try程式碼去定位textview1和textview2,定位到textview1和textview2才去點選FrameLayout)
try:
    textview=通過FrameLayout定位textview1和textview2
    return textview
except:
    textview=None
    return textviewif  textview:
    FrameLayout.click()

3.

python中的for函式:
for  i  in ~~~:
~~~為序列,不能用int值,但是可以用range(start,stop,step)函式
python中的range函式:
range(start,stop,step)————————>[start,sop)
例如:range(0,8,2)————————>0,2,4,6

4.

問題:

self.driver.swipe(x, y, x, y1,)函式每次滑動之後停止的位置都不一樣。
解決方案:
self.driver.swipe(x, y, x, y1, 5000)——————>新增一個滑動執行時間

5.

問題:

在Android原生的模擬器上安裝Android的apk的時候遇到這樣的錯誤提示:

The APK failed to install.

Error:INSTALL_FALLED_NO_MATCHING_ABIS

錯誤的原因是:

在專案中使用了native libraries,而當前的cpu體系結構不支援該native libraries。

現在安卓模擬器的cpu/ABI一般有三種類型,INTEL X86,ARM,MIPS

解決方案:

電腦支援的話就換模擬器的cpu/ABI,不支援的話選擇其他的模擬器例如:夜神、海馬玩、genymotion,行不通的話就選root的真機吧,坑少。

6.

問題:
使用海馬玩模擬器的時候adb識別不出該模擬器
解決方案:執行命令:adb connect 127.0.0.1:26944。
備註:

海馬玩的埠號是:26944

夜神埠號是:62001

7.

問題:

List of devices attached

adb server version (31) doesn't match this client (39); killing...
error: could not install *smartsocket* listener: cannot bind to 127.0.0.1:5037: 通常每個套接字地址(協議/網路地址/埠)只允許使用一次。 (10048)This application has requested the Runtime to terminate it in an unusual way.
Please contact the application's support team for more information.
could not read ok from ADB Server
* failed to start daemon *
error: cannot connect to daemon
而且這個error一會兒出現一會兒又沒有,但是使用adb命令安裝應用的時候一直顯示waiting for device

問題原因:

socket 的埠被佔用了

解決方案:

很多手機助手會佔用這個埠,選擇把手機助手退出或者解除安裝,就能正常使用adb命令安裝應用了

8.

問題:

啟動工具uiautomatorviewer,點選第二個按鈕Device Screenshot時,出現Unable to connect to adb. Check if adb is installed correctly錯誤: 

解決辦法:

開啟uiautomatorviewer.bat,找到uiautomatorviewer.bat檔案最後一行

call "%java_exe%" "-Djava.ext.dirs=%javaextdirs%" "-Dcom.android.uiautomator.bindir=%prog_dir%" -jar %jarpath% %*

將其中的binddir=%prog_dir%修改為SDK的platform-tools所在路徑。

修改後的最後一行為:

call "%java_exe%" "-Djava.ext.dirs=%javaextdirs%" "-Dcom.android.uiautomator.bindir=你的platform-tools地址" -jar %jarpath% %*

再次啟動工具uiautomatorviewer。

待續。。。