第二章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效果

相关推荐
不知更鸟10 分钟前
Django 项目设置流程
后端·python·django
自动化代码美学1 小时前
【Python3.13】官网学习之控制流
开发语言·windows·python·学习
2501_916008893 小时前
手机抓包app大全:无需root的安卓抓包软件列表
android·ios·智能手机·小程序·uni-app·iphone·webview
百锦再4 小时前
第18章 高级特征
android·java·开发语言·后端·python·rust·django
源码之家4 小时前
基于Python房价预测系统 数据分析 Flask框架 爬虫 随机森林回归预测模型、链家二手房 可视化大屏 大数据毕业设计(附源码)✅
大数据·爬虫·python·随机森林·数据分析·spark·flask
SalvoGao4 小时前
Python学习 | 怎么理解epoch?
数据结构·人工智能·python·深度学习·学习
gcygeeker4 小时前
安卓 4.4.2 电视盒子 ADB 设置应用开机自启动
android·adb·电视盒子
小驰行动派5 小时前
安卓上的极简番茄钟 | 开源
android·开源
jzlhll1235 小时前
android抽屉DrawerLayout在2025的沉浸式兼容
android
楚疏笃5 小时前
纯Python 实现 Word 文档转换 Markdown
python·word