由于输入框控件是android.view.View,不是android.widget.EditText,所以只能点击,不能sendkeys发送内容,可以用
driver.press_keycode(num)操作手机键盘输入内容。指令num为数字, keycode 3:首页(Home key)
keycode 4:返回键(Back key)
keycode 5:电话键(Call key)
keycode 6:结束通话键(End Call key)
keycode 7-16:数字0-9
keycode 17:*
keycode 18:#
keycode 19-23:上、下、左、右、中间
keycode 24-25:音量上、下
keycode 26:电源键(Power key)
keycode 27:相机键(Camera key)
keycode 28:清除键(Clear key)
keycode 29-54:字母A-Z
keycode 55:,
keycode 56:.
keycode 61:Tab键(Tab key)
keycode 62:空格键(Space key)
keycode 66:回车键(Enter key)
keycode 67:退格键(Backspace key)
keycode 68:`
keycode 69:-
keycode 70:=
keycode 71:[
keycode 72:]
keycode 73:\
keycode 74:;
keycode 75:'
keycode 76:/
keycode 77:@
keycode 81:+
keycode 82:菜单键(Menu key)
keycode 84:搜索键(Search key)
keycode 164:静音键(Volume Mute key)
desired_caps = {} desired_caps['platformName'] = 'Android' #设备系统 desired_caps['platformVersion'] = '8.1.0' desired_caps['deviceName'] = '' #设备名称 desired_caps['appPackage'] = 'mark.via' #apk包名使用的是via浏览器 desired_caps['unicodeKeyboard']= True #使用unicode编码方式发送字符串 desired_caps['appActivity'] = '.ui.activity.BrowserActivity' #apk的launcherActivitydriver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', desired_caps)
dicts = {'0': 7,'1':8,'2':9,'3':10,'4':11,'5':12,'6':13,'7':14,'8':15,'9':16, 'a':29,'b':30,'c':31,'d':32,'e':33,'f':34,'g':35,'h':36,'i':37,'j':38,'k':39,'l':40,'m':41,'n':42,'o':43,'p':44,'q':45,'r':46,'s':47,'t':48,'u':49,'v':50,'w':51,'x':52,'y':53,'z':54, ',':55,'.':56,'`':68,'[':71,']':72,'\\':73,';':74,"'":75, '*':17,'#':18,'-':69,'=':70,'/':76,'@':77,'+':81,'(':162,')':163 }
def test_something(): url='https://accounts.google.com/signin/v2/identifier?flowName=GlifWebSignIn&flowEntry=ServiceLogin' print('test_something click ------ ') time.sleep(2) #打开浏览器点击弹窗 try: el1 = driver.find_element_by_id("mark.via:id/b0") el1.click() el2 = driver.find_element_by_id("android:id/button1") el2.click() el3 = driver.find_element_by_id("android:id/button1") el3.click() time.sleep(5) el4 = driver.find_element_by_accessibility_id("主页") el4.click() time.sleep(5) except: pass #输入URL搜索 el5 = driver.find_element_by_xpath( "/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.RelativeLayout/android.widget.FrameLayout[2]/android.widget.FrameLayout/android.webkit.WebView/android.webkit.WebView/android.view.View[2]/android.view.View[2]/android.view.View/android.widget.EditText") el5.send_keys(url) el5.click() el6 = driver.find_element_by_xpath( "/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.RelativeLayout/android.widget.FrameLayout[2]/android.widget.FrameLayout/android.webkit.WebView/android.webkit.WebView/android.view.View[2]/android.view.View[2]/android.widget.Button") el6.click() time.sleep(6) #点击账号输入框 el8 = driver.find_element_by_xpath( "/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.RelativeLayout/android.widget.FrameLayout[2]/android.widget.FrameLayout/android.webkit.WebView/android.webkit.WebView/android.view.View[1]/android.view.View[3]/android.view.View/android.view.View[1]/android.view.View[2]/android.view.View") el8.click() time.sleep(0.1) username = 'WeSSAbj@gmail.com' for i in username: if dicts.get(i): print(dicts.get(i)) driver.press_keycode(dicts[i]) #小写字母 else: driver.press_keycode(dicts[i.lower()],64,59) #大写字母 time.sleep(0.01) time.sleep(1) driver.keyevent(66) #点击密码输入框 time.sleep(0.1) password = 'pvzx56147' for j in password: if dicts.get(j): driver.press_keycode(dicts[j]) else: driver.press_keycode(dicts[j.lower()],64,59) time.sleep(0.01) time.sleep(2) driver.keyevent(66)
更多按键参考https://blog.csdn.net/miaomiao12345678/article/details/76400202,https://blog.csdn.net/caiyong_/article/details/85055403