appium安卓app自動化,遇到搜索框無搜索按鈕元素時無法搜索的解決方案

如XX頭條,搜索框后面有“搜索”按鈕,這樣實現搜索操作較為方便。

但有些app沒有設置該搜索按鈕,初學者就要花點時間去學習怎么實現該功能了,如下圖。

這時候如果定位搜索框,再點擊操作,再輸入文本后,再使用driver.press_keycode(66),發現無法實現搜索功能,如圖,只實現了輸入文本功能。

目前學習到一種方法,如下:

1、手機下載搜狗輸入法

在手機應用商店下載一個搜狗輸入法,在電腦打開cmd窗口,輸入命令

adb shell ime list -s

如圖,會出現自己手機現有的輸入法

2、在pycharm編寫的腳本中,導入os庫

定義一個變量,如:

sougou='adb shell ime set com.sohu.inputmethod.sogou/.SogouIME'

3、利用os庫切換輸入法至搜狗輸入法,執行driver.press_keycode(66)

定位搜索框元素后,再點擊操作,再輸入文本操作,再通過os轉換輸入法,再執行driver.press_keycode(66),便可以執行搜索操作

小白代碼如下:

from appium import webdriver
import time
from selenium.webdriver.common.by import By
import os
# 定義參數
desired_caps = {'platformName': 'Android', # 被測手機是安卓'platformVersion': '11', # 手機安卓版本'deviceName': '安卓', # 設備名,安卓手機可以隨意填寫'appPackage': 'com.netease.cc', # 啟動APP Package名稱'appActivity': 'com.netease.cc.appstart.CCMain', # 啟動Activity名稱'unicodeKeyboard':True, # 使用自帶輸入法,輸入中文時填True'resetKeyboard': True, # 執行完程序恢復原來輸入法'noReset': True,       # 不要重置App'newCommandTimeout': 6000,'automationName' : 'UiAutomator2'
}
# 定義sougou變量
sougou='adb shell ime set com.sohu.inputmethod.sogou/.SogouIME'
# 連接Appium Server,初始化自動化環境
driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)
# 設置時間等待,避免找不到元素報錯
driver.implicitly_wait(10)
time.sleep(9)
# 點擊首頁
driver.find_element(by=By.XPATH, value='//android.widget.TextView[@text="首頁"]').click()
# 點擊搜索框,輸入主播昵稱
driver.find_element(by=By.ID, value='com.netease.cc:id/hot_word').click()
# 轉換為搜狗輸入法
os.system(sougou)
# 在搜索框輸入主播昵稱
driver.find_element(by=By.ID, value='com.netease.cc:id/et_search_content').send_keys('power1')
# 實現手機鍵盤自帶搜索操作
driver.press_keycode(66)
time.sleep(3)
# 結束
driver.quit()

4.如果切換鍵盤之后還是沒有反應,可以試試如下方法,我在實驗后是生效的

driver.execute_script("mobile:performEditorAction", {"action": "search"}) 

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/215122.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/215122.shtml
英文地址,請注明出處:http://en.pswp.cn/news/215122.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

SpringBootWeb請求響應之前言及狀態碼的詳細解析

SpringBootWeb請求響應 前言 在上一次的課程中,我們開發了springbootweb的入門程序。 基于SpringBoot的方式開發一個web應用,瀏覽器發起請求 /hello 后 ,給瀏覽器返回字符串 “Hello World ~”。 其實呢,是我們在瀏覽器發起請求…

【算法與數據結構】332、LeetCode重新安排行程

文章目錄 一、題目二、解法三、完整代碼 所有的LeetCode題解索引,可以看這篇文章——【算法和數據結構】LeetCode題解。 一、題目 二、解法 思路分析:本題比較屬于困難題目,難點在于完成機票、出發機場和到達機場之間的映射關系,再…

使用yum/dnf管理軟件包

本章主要介紹使用 yum 對軟件包進行管理。 yum 的介紹搭建yum源創建私有倉庫yum客戶端的配置yum的基本使用使用第三方yum源 使用rpm安裝包時經常會遇到一個問題就是包依賴,如下所示。 [rootrhel03 ~]# rpm -ivh /mnt/AppStream/Packages/httpd-2.4.37-41.modulee…

【三維重建】對極幾何

極幾何描述了同一場景或者物體的兩個視點圖像間的幾何關系 可以發現P在左右相機的投影點一定在各自的極線上,如果求出極線就能縮小求解對應點的范圍。 本質矩陣對規范化攝像機拍攝的兩個視點圖像間的極幾何關系進行代數描述 規范化相機指的是相機的內參…

人工智能_機器學習063_SVR支持向量機_回歸擬合天貓雙十一銷量方程---人工智能工作筆記0103

之前我們用線性回歸做過天貓雙十一銷量預測的數據,現在我們再來用SVR支持向量機來做一下 首先上面是給出了銷量,對應2009年到2019年的,銷售額 可以看到: X=np.arange(2009,2020)-2008 統一減去2008的話看起來數據比較簡單了 y=np.array([0.5,9.36,52,191,350,571,912,1207,1…

華為OD機試 - 結隊編程(Java JS Python C)

題目描述 某部門計劃通過結隊編程來進行項目開發, 已知該部門有 N 名員工,每個員工有獨一無二的職級,每三個員工形成一個小組進行結隊編程,結隊分組規則如下: 從部門中選出序號分別為 i、j、k 的3名員工,他們的職級分貝為 level[i],level[j],level[k], 結隊小組滿足…

使用perl的Tie::File 模塊刪除文件固定行

使用perl的Tie::File 模塊刪除文件固定行, 為了說明簡單代碼中處理的是固定第二行開始的3行長度。下面給出perl代碼: #! /usr/bin/perl use v5.14; use Tie::File;if (ARGV 0) {say "請輸入一個文件名 !!!";exit 1; }my $filePath $ARGV[0]; tie my ar…

java工程(ajax/axios/postman)向請求頭中添加消息

1、問題概述 在項目中我們經常會遇到需要向請求頭中添加消息的場景,然后后端通過request.getRequest()或者RequestHeader獲取請求頭中的消息。 下面提供幾種前端向請求頭添加消息的方式 2、創建一個springmvc工程用于測試 2.1、創建工程并引入相關包信息 sprin…

C++之STL算法(1)

STL容器算法主要由、、組成; ??algorithm主要有遍歷、比較、交換、查找、拷貝、修改等; 1.遍歷容器for_each for_each()函數用于完成容器遍歷,函數參數如下: for_each(_InIt _First, _InIt _Last, _Fn _Func) 形參&#xff1a…

深度學習 Day10——T10數據增強

🍨 本文為🔗365天深度學習訓練營 中的學習記錄博客🍖 原作者:K同學啊 | 接輔導、項目定制 文章目錄 前言一、我的環境二、代碼實現與執行結果1.引入庫2.設置GPU(如果使用的是CPU可以忽略這步)3.導入數據4.查…

4-Docker命令之docker update

1.docker update介紹 docker update命令是用于更新一個或多個docker容器的配置 2.docker update用法 docker update [參數] container [container......] [root@centos79 ~]# docker update --helpUsage: docker update [OPTIONS] CONTAINER [CONTAINER...]Update configu…

編寫函數計算一個或不特定多個數的乘積

編寫函數計算一個或不特定多個數的乘積 輸入樣例: 3 2 1 輸出樣例: 6.0000 def caculate(*t):r1for x in t:r*xreturn r s input().split() t [float(x) for x in s] print("%.4f" % caculate(*t))

Docker基礎概念解析:鏡像、容器、倉庫

當談到容器化技術時,Docker往往是第一個被提及的工具。Docker的基礎概念涵蓋了鏡像、容器和倉庫,它們是理解和使用Docker的關鍵要素。在這篇文章中,將深入探討這些概念,并提供更豐富的示例代碼,幫助大家更好地理解和應…

智能優化算法應用:基于混合蛙跳算法3D無線傳感器網絡(WSN)覆蓋優化 - 附代碼

智能優化算法應用:基于混合蛙跳算法3D無線傳感器網絡(WSN)覆蓋優化 - 附代碼 文章目錄 智能優化算法應用:基于混合蛙跳算法3D無線傳感器網絡(WSN)覆蓋優化 - 附代碼1.無線傳感網絡節點模型2.覆蓋數學模型及分析3.混合蛙跳算法4.實驗參數設定5.算法結果6.…

2023年華為HCIA認證H12-811題庫講解

在VRP平臺上,可以通過下面哪種方式返回到上一條歷史命令?( ) A、Ctr1U B、Ctr1P C、左光標 D、上光標 試題答案:BD 試題解析:在VRP系統中,ctrlU為自定義快捷鍵,ct…

路由和網絡周期

### 路由(Routing): 1. **路由的概念:** 路由是用于確定用戶在網站或應用程序中所處位置的機制。它可以將不同的 URL 映射到對應的頁面或視圖組件,使得用戶可以通過不同的 URL 訪問不同的內容。 2. **路由器&#xf…

DevEco Studio 3.1IDE環境配置(HarmonyOS 3.1)

DevEco Studio 3.1IDE環境配置(HarmonyOS 3.1) 一、安裝環境 操作系統: Windows 10 專業版 IDE:DevEco Studio 3.1 SDK:HarmonyOS 3.1 二、環境安裝 IDE下載地址:HUAWEI DevEco Studio和SDK下載和升級 | HarmonyOS開發者 IDE的安裝就是…

Android---Kotlin 學習002

聲明變量 在 Kotlin 中定義一個變量,通過關鍵字 var 開始。然后是變量名,在“:”后緊跟變量類型。 示例1:聲明一個 int 類型的變量 var num:Int 1 示例2:聲明一個 String 類型的變量 var str:String "Hello world&quo…

計算機網絡——期末考試復習資料

什么是計算機網絡 將地理位置不同的具有獨立功能的多臺計算機及其外部設備通過通信線路和通信設備連接起來;實現資源共享和數據傳遞的計算機的系統。 三種交換方式 報文交換:路由器轉發報文; 電路交換:建立一對一電路 分組交換&a…

2024 年 SEO 現狀

搜索引擎優化(SEO)一直以來都是網絡知名度和成功的基石。隨著我們踏上 2024 年的征程,SEO領域正在經歷重大變革,有些變革已經開始,這對企業、創作者和營銷人員來說既是挑戰也是機遇。 語音搜索 語音搜索曾是一個未來…