用ui_automator 看到有webview,但是在代码中打印只有native,是怎么回事

来源:1-18 原生app和H5进行相互切换代码实战

慕后端4292073

2018-07-26

代码运行成功,和老师的一样

#!/usr/bin/env python
#coding:utf-8

import time
from appium import webdriver

def get_driver():
   capabilities = {
       "platformName": "Android",
       "deviceName": "127.0.0.1:62001",
       # "deviceName": "836f314e4d56544c",
       "app": r"C:\Users\YUNEEC\Desktop\mukewang_6220.apk",

       # "appWaitActivity": "cn.com.open.mooc.index.splash.GuideActivity"
       # "noReset": True
   }

   driver = webdriver.Remote('http://localhost:4723/wd/hub', capabilities)
   return driver


#获取屏幕的宽高

def get_size():
   size = driver.get_window_size()
   # print size
   width = size['width']
   height = size['height']
   return width,height

#向左滑动
def swipe_left():
   x1 = get_size()[0]/10*9
   y1 = get_size()[1]/2
   x = get_size()[0]/10
   driver.swipe(x1,y1,x,y1,2000)



#向右边滑动
def swipe_right():
   x1 = get_size()[0]/10
   y1 = get_size()[1]/2
   x = get_size()[0]/10*9
   driver.swipe(x1,y1,x,y1,2000)

#向上滑动
def swipe_up():
   #[100,200]direction
   x1 = get_size()[0]/2
   y1 = get_size()[1]/10*9
   y = get_size()[1]/10
   driver.swipe(x1,y1,x1,y,1000)

#向下滑动
def swipe_down():
   #[100,200]
   x1 = get_size()[0]/2
   y1 = get_size()[1]/10
   y = get_size()[1]/10*9
   driver.swipe(x1,y1,x1,y)

def swipe_on(direction):
   if direction == 'up':
       swipe_up()
   elif direction == 'down':
       swipe_down()
   elif direction =='left':
       swipe_left()
   else:
       swipe_right()


def go_login():
   time.sleep(2)
   elements = driver.find_elements_by_id('android:id/text1')
   elements[3].click()
   time.sleep(2)
   elements = driver.find_elements_by_class_name("android.widget.TextView")
   time.sleep(2)
   elements[1].click()
   time.sleep(2)
   element = driver.find_element_by_id("cn.com.open.mooc:id/tv_go_login")
   element.click()
   time.sleep(2)
   driver.find_element_by_id("cn.com.open.mooc:id/account_edit").send_keys("18721246326")
   time.sleep(1)
   driver.find_element_by_id("cn.com.open.mooc:id/password_edit").send_keys("123456")
   time.sleep(1)
   driver.find_element_by_id("cn.com.open.mooc:id/login").click()
   time.sleep(1)


def get_web_view():
   webview = driver.contexts
   print webview

   # print(len(elements))
   # for i in elements:
   #     time.sleep(5)
   #     print i
   #     i.click()



driver = get_driver()
time.sleep(5)
swipe_on('left')
time.sleep(1)
swipe_on('left')
time.sleep(1)
swipe_on('left')
time.sleep(1)
swipe_on("up")
time.sleep(1)

go_login()
time.sleep(10)
get_web_view()

time.sleep(10)
driver.quit()


-----------------------------------------------------------------------------

运行结果:[u'NATIVE_APP']


写回答

4回答

慕后端4292073

提问者

2018-07-31



请老师看下,是哪里错误

以下是剩余的appium log :

//img.mukewang.com/szimg/5b5fdc2b00012add17010899.jpg//img.mukewang.com/szimg/5b5fdc2e0001947817040410.jpg

0
0

慕后端4292073

提问者

2018-07-31

android 版本:4.4.2

模拟器版本: 6.2.0.3

//img.mukewang.com/szimg/5b5fdbd50001db0911740996.jpg//img.mukewang.com/szimg/5b5fdbd800010aa615210899.jpg//img.mukewang.com/szimg/5b5fdbdf0001061516920895.jpg

0
0

慕后端4292073

提问者

2018-07-27

我加了sleep,手工操作到了有h5的界面,等待代码执行的!
老师你最后一句啥意思,是说虚拟手机有问题,只有实体手机才可以检测到h5页面吗?

0
2
慕后端4292073
回复
Mushishi
老师,可否抽时间看下我这个问题
2018-08-02
共2条回复

Mushishi

2018-07-27

你需要走到H5页面然后再通过这个方法去打印才可以。但是还有个问题就是不是所有实体机器可以打印。

0
0

Python主讲移动端自动化测试框架Appium

APP自动化基础知识、po模型、关键字模型、服务自动化、持续集成

1508 学习 · 1333 问题

查看课程