第二章android利用QPython环境调用APPium

第二章、android配置QPython环境调用APPium

在第一章APPium基础,扩张移动端,下面第一章位置

第一章、APPium、android自动化

QPython环境搭建

1、android studio 配置python工程

build.gradle配置远程库

复制代码
 maven { url "https://chaquo.com/maven" } //添加行
  classpath 'com.chaquo.python:gradle:12.0.0'

在app的gradle配置(说明:pip是可以下载相关python关联的第三方库)

复制代码
plugins {
    id 'com.android.application'
    id 'com.chaquo.python'
}

android {
    compileSdkVersion 31
    buildToolsVersion "30.0.3"

    defaultConfig {
        applicationId "com.by.python_test"
        minSdkVersion 22
        targetSdkVersion 31
        versionCode 1
        versionName "1.0"

        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
        ndk {
            abiFilters "armeabi-v7a", "arm64-v8a"
        }
        python {
            pip {
                install "requests"
                install "Appium-Python-Client==2.11.0"
            }
        }
    }

    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }

对应工程调用代码com.chaquo.python的代码

复制代码
package com.by.python_test;

import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.app.ActivityCompat;
import androidx.core.content.ContextCompat;

import android.Manifest;
import android.content.pm.PackageManager;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;

import com.chaquo.python.PyObject;
import com.chaquo.python.Python;
import com.chaquo.python.android.AndroidPlatform;

public class MainActivity extends AppCompatActivity {
    Button pythonButton;

    Python python;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        if (ContextCompat.checkSelfPermission(this,
                        Manifest.permission.WRITE_EXTERNAL_STORAGE)!= PackageManager.PERMISSION_GRANTED||
                ContextCompat.checkSelfPermission(this,
                        Manifest.permission.INTERNET)!= PackageManager.PERMISSION_GRANTED) {
            ActivityCompat.requestPermissions(this,
                    new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE,
                            Manifest.permission.INTERNET}, 100);
        }


        pythonButton = findViewById(R.id.searchButton);


        if (! Python.isStarted()) {
            Python.start(new AndroidPlatform(this));
        }
        python = Python.getInstance();

        pythonButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                PyObject pyObject=python.getModule("main");
                pyObject.callAttr("open_app");

            }
        });
    }


    @Override
    public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
        super.onRequestPermissionsResult(requestCode, permissions, grantResults);
    }
}

python调用APPium

在对应python文件夹创建main.py文件

对应的代码

复制代码
from appium import webdriver
from appium.options.common.base import AppiumOptions
from appium.webdriver.common.mobileby import MobileBy
import time
import subprocess


def main():
    print("Hello, Python!")

def open_app():
    options = AppiumOptions()
    options.load_capabilities({
        "platformName": "Android",
        "appium:platformVersion": "13.0.0",
        "appium:deviceName": "Mate 30",
        "appium:appPackage": "cn.migudm.aipatinside",
        "appium:appActivity": "cn.migudm.aipatinside.mvp.ui.MainActivity",
        "appium:ensureWebviewsHavePages": False,
        "appium:nativeWebScreenshot": True,
        "appium:newCommandTimeout": 3600,
        "appium:connectHardwareKeyboard": True
    })

    driver = webdriver.Remote("http://192.168.31.104:4723/wd/hub", options=options)

对应运行工程测试效果

appium效果

相关推荐
jwn9993 小时前
Laravel 9.x重磅新特性解析
android
NeilNiu3 小时前
lm-Evaluation Harness使用
python
梦幻精灵_cq3 小时前
我的color()设计理念——终端颜色渲染状态机设定
python
南 阳3 小时前
Python从入门到精通day62
开发语言·python
絆人心3 小时前
Python 数据分析核心库:Pandas 与 NumPy 从入门到实战全指南(附电商用户分析完整代码)
python·数据挖掘·数据分析·numpy·pandas·数据处理·电商数据分析
木子予彤3 小时前
Android 性能诊断 V2:基于 Agent Skill 的原生 IDE 融合架构
android·ai编程
木子予彤3 小时前
基于 Perfetto 与 AI 的 Android 性能自动化诊断方案
android·ai编程
Dxy12393102163 小时前
Python如何对XML进行格式化
xml·python
兰.lan3 小时前
【黑马ai测试】黑马头条登录功能测试-发布功能测试-其他功能模块设计
软件测试·人工智能·笔记·python·功能测试·ai·单元测试
想吃砸到牛顿的苹果的籽3 小时前
rk3588部署yolov5需要用rknn_toolkit2,安装环境。
python·深度学习·yolo部署rk3588