如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"})