appium 定位彈出框時報錯


今天在做APP自動化時,發現定位彈出框無法定位,無奈,百度去找.發現了一篇不錯的博客,故轉載過來,供大家參考.后續會驗證這個方法的可行性.

本博客轉自:http://blog.csdn.net/qq744746842/article/details/50284239

最近在嘗試做Care Android自動化的時候,發現popupwindow按鈕識別不到。類似於 這里寫圖片描述,UiAutomator仍然識別的是下一層的窗體。可能這個時候有些人就開始想,工具都識別不出來。看來這個就是注定搞不了。 實際上我們應該嘗試的去分析下原因

分析


剛才前面說了,UiAutomator仍然識別的是下一層的窗體 很有可能的原因是焦點仍然處於下一層窗體的原因,帶着這個問題我們自己來寫個popupwindow的一個demo來驗證這個問題就可以了。

這里就直接貼出popupwindow的代碼(網上很多)。

// 一個自定義的布局,作為顯示的內容 View contentView = LayoutInflater.from(mContext).inflate( R.layout.pop_window, null); // 設置按鈕的點擊事件 Button button = (Button) contentView.findViewById(R.id.button1); button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Toast.makeText(mContext, "button is pressed", Toast.LENGTH_SHORT).show(); } }); final PopupWindow popupWindow = new PopupWindow(contentView, ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT, true); popupWindow.setTouchable(true); popupWindow.setTouchInterceptor(new View.OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { Log.i("mengdd", "onTouch : "); return false; // 這里如果返回true的話,touch事件將被攔截 // 攔截后 PopupWindow的onTouchEvent不被調用,這樣點擊外部區域無法dismiss } }); // 如果不設置PopupWindow的背景,無論是點擊外部區域還是Back鍵都無法dismiss彈框 // 我覺得這里是API的一個bug popupWindow.setBackgroundDrawable(getResources().getDrawable( R.drawable.logo)); // 設置好參數之后再show popupWindow.showAsDropDown(view);

上面的實現只是做到通過點擊一個按鈕后,彈出一個pipwindow,我們來試試用Uiautomator來識別下。

這里寫圖片描述

確實是識別不出來。那下來我們在contentView 后面加一句,讓contenview處於焦點

View contentView = LayoutInflater.from(mContext).inflate( R.layout.pop_window, null); contentView.setFocusable(true);

運行程序,再來嘗試下識別看看。

這里寫圖片描述

好了識別成功了,說明就是一個焦點的問題導致的。所以只要讓開發哥哥們加上剛才前面那句代碼就可以了。

我這邊已通知開發改了,待后面驗證后,再繼續更新本博客.


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM