python+appium 测试混合应用,脚本编写及注意事项

前期准备

1、电脑appium环境已经搭建好

2、电脑下载chrome浏览器,并可以访问谷歌

3、查看手机或模拟器自带浏览器version,adb shell pm dump com.android.webview | grep version

4、下载对应版本webview的driver驱动,具体查看官网说明https://github.com/appium/appium/blob/master/docs/en/writing-running-appium/web/chromedriver.md

脚本编写

1、配置编写

def setup(self):
    des_caps = {}
    des_caps['platformName'] = 'Android'
    des_caps['platformVersion'] = '6.0'
    des_caps['deviceName'] = 'emulator-7555'
    des_caps['noReset'] = True
    des_caps['appPackage'] = 'com.xxxxx.android'
    des_caps['appActivity'] = '.xxxx.MainActivity'
    des_caps['chromedriverChromeMappingFile'] = r'E:\xuexi\aiphone\test_phone\mapping.json'
    self.driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', des_caps)

2、页面动作

 def test_create_account(self):
     self.driver.find_element(By.XPATH, '//*[@text="交易"]').click()
     print(self.driver.contexts)
     # 切换上下文,原生-webview
     self.driver.switch_to.context((self.driver.contexts)[-1])
     old_handles = self.driver.window_handles
     self.driver.find_element(MobileBy.XPATH, '//*[@id="Layout_app_3V4"]/div/div/ul/li[1]/div[2]').click()
     new_handles = self.driver.window_handles
     # 获取句柄
     for curr_handles in new_handles:
     if curr_handles in old_handles:
        pass
     else:
        handles = curr_handles
        self.driver.switch_to.window(handles)
     input_locator = (MobileBy.ID, 'phone-number')
     # 显示等待
     WebDriverWait(self.driver, 10).until(expected_conditions.element_to_be_clickable(input_locator))
     self.driver.find_element(MobileBy.ID, 'phone-number').send_keys('134444444444')
    

注意事项

1、从原始应用切换到webview后,要对webview操作应先切换contexts

2、webview之间切换时同selenium一样有句柄的概念也要注意切换

3、切换到新的句柄后要添加显示等待否则会报错

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值