appium自动化三

appium手机web页面自动化

1、原生app:所有控件都是一种技术开发,笔记Android都是java开发的,IOS都是object-c开发的

大家手机上的计算器,就是原生app

2、混合app:原生app无法满足内容快速变更的需求,所以需要结合能快速发展现内容的web技术。两种技术混合在了一起(appium+web),所以称之为混合,比如淘宝、美团,展示商品的web页面 ,他是把web元素嵌套在原生应用当中

这部分内容包含在webview下面

3、web应用:手机网页

appium+web应用测试

一、手机web页面在电脑浏览器测试

  • 如何获取手机页面链接

可以通过fiddler抓包工具

  • 什么是手机web页面,就是手机浏览器页面

手机应用页面,复制应用页面链接,复制到电脑浏览器,可以在电脑打开

from selenium import webdriver


#以开发者模式打开  让自动化像手动打开的一样处于开发者模式

op=webdriver.ChroeOptions() #selenium以开发者模式打开应用
op=add_experimental_option("mobileEmulation",{"deviceName":"iPhone X"}) #手机型号


driver=webdriver.Chrome(options=op) #启动浏览器
driver.get("http://120.55.190.222:38080/#/pages/index/user") #请求网页数据













二、appium测试手机浏览器

手机端浏览器定位方式和selenium一样

 json格式化

有时候写入appium服务数据不正确,查看半天也知道什么原因,可以使用json格式化,帮我我们快速判断问题

json地址:JSON在线解析及格式化验证 - JSON.cn

获取手机浏览器版本

可以在网址栏中输入chrome://version 查看谷歌浏览器版本

然后在电脑端下载和手机端浏览器相同的版本驱动,然后修改驱动名称,复制驱动地址粘贴到chromedriverExecutable这里

from appium import webdriver

#设置设备,应用参数

caps={


    "platformName":"Android",
    "platformVersion":"9",
    "deviceName":"emulator-5554",
    "appPacKge":"com.taobao.idlefish",
    #输入浏览器类型
    "browserName":"Chrome", 
    #要在电脑上装一个与手机里边的浏览器相对应的版本驱动
    #要注意,会和电脑上的浏览器的版本驱动重名,所以需要对电脑端的驱动进行重命名
    #驱动配置方法,和selenium一样        
    "chromedriverExecutable":"浏览器驱动地址"
   
    "unicodeKeyboard":"True", 
    "resetkeyboard":"True",
    "noReset":"True",
    "newCommandTimeout":6000,
    "automationName":"UiAutomator2"    

}


driver=webdriver.Remote("http://127.0.0.1:4723/wb/hub",caps) #启动应用


driver.get("网址")#打开网址





三、混合app

什么是混合app

混合app就是框架原生app框架 加 web-app应用

怎么看app原生框架,手机断网更新数据,所有数据会清空,剩下的就是app原生架构


 

from appium import webdriver


caps={

    "platformName":"Android",
    "platformVersion":"9",
    "deviceName":"emulator-5554",
    "appPacKge":"com.taobao.idlefish", #获取包名
    "appActivity":"com.taobao.fleamarket.home.activity.InitActivity",#获取Activity类名
    "unicodeKeyboard":"True", 
    "resetkeyboard":"True",
    "noReset":"True",
    "newCommandTimeout":6000,
    "automationName":"UiAutomator2"    

}

driver=webdriver.Remote("http://127.0.0.1:4723/wb/hub",caps) #启动应用

#混合应用定位方式
"""
原生应用使用appium方式定位
web应用,就是html数据,使用selenium方式定位,web应用相当于内嵌网页,需要切换到web

"""

#定位web页面

#打印网页数据
print(driver.contexts)

#切进web页面
driver.switch_to.context("WEBVIEW_com.example.haiwen.myhybirdapp")

#下面就可以执行web定位语法了





appium常见问题及解决方案

1、由于目标计算机积极拒绝,无法链接

        原因:appium服务为启动

        解决:启动aooium服务后。等待[welcome to appim xxx]提示语句出现

2、会话冲突:failed to start an appiun seddion requested a new session but one  was

in progress

        原因:之前的会话没有关闭

        解决:重启appium服务或重启手机

3、为安装java环境

        安装jdk,如果以安装,检查环境变量

4、adb检测不到设置

        1、电脑是否安装手机去驱动(win10/11不需要),电脑下载手机助手,等手机助手装好驱动,装好以后卸载手机助手,因为手机助手会占用adb端口

        2、打开手机设置,进入开发者选项,打开us调试功能

        3、重新插拔数据线,如手机提示仅充电,选传文件若提示是覅u允许这台设备调试没,选择永远允许

        4、换数据线,

5、程序无法自动打开appium settings

        自己手动打开appiumsettings        

6、Java.long  PERMISSION DENIAL:WRITING TO SETTINGS(权限不足)

        小米:开启usb调试(安全设置)掺入sim卡

        oppo:开发者选项 禁止权限监控--开启状态

7、appium could ont sign with default certifcate(通常是权限不足)

        原因:通常出现载win7上

        解决:appium图标以管理员方式运行

        

        

        

        

Appium是一个开源的自动化测试工具,用于自动化移动应用。它支持iOS、Android和Windows应用程序的原生、移动Web和混合应用。W3C动作(Actions)是Appium中的一个重要概念,它允许开发者模拟复杂的用户交互操作,如手势、触摸、拖拽等。 在使用Java编写Appium脚本时,可以通过Appium提供的W3C Actions API来实现复杂的人机交互。以下是一个简单的例子来说明如何在Java中使用W3C动作: ```java import io.appium.java_client.MultiTouchAction; import io.appium.java_client.TouchAction; import io.appium.java_client.android.AndroidDriver; import io.appium.java_client.touch.offset.PointOption; import org.openqa.selenium.Rectangle; import org.openqa.selenium.WebElement; import org.openqa.selenium.remote.DesiredCapabilities; import java.net.URL; // 假设已经初始化了AndroidDriver实例 driver // 创建一个TouchAction对象,用于执行动作 TouchAction touchAction = new TouchAction(driver); // 定位一个元素,例如一个按钮 WebElement button = driver.findElementById("button_id"); // 获取元素的位置 Rectangle rect = button.getRect(); // 执行一个简单的点击动作 touchAction.press(PointOption.point(rect.getX() + rect.getWidth() / 2, rect.getY() + rect.getHeight() / 2)) .release() .perform(); // 执行一个更复杂的动作,比如滑动操作 MultiTouchAction multiTouchAction = new MultiTouchAction(driver); multiTouchAction.add(new TouchAction(driver) .press(PointOption.point(rect.getX() + 10, rect.getY() + 10)) .moveTo(PointOption.point(rect.getX() + 10, rect.getY() + rect.getHeight() - 10)) .release()) .perform(); ``` 以上代码段展示了如何使用Appium的W3C动作API在Android设备上进行简单的点击和滑动操作。这些操作都是通过`TouchAction`类和`MultiTouchAction`类提供的方法来实现的。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值