知识全聚集 .Net Core 技术突破 | 我用C#手把手教你玩微信自动化一

教程

01 | 模块化方案一

02 | 模块化方案二

03 | 简单说说工作单元

其他教程预览

分库分表项目实战教程

Git地址: https://github.com/MrChuJiu/EasyLogger

01 | 前言

02 | 简单的分库分表设计

03 | 控制反转搭配简单业务

04 | 强化设计方案

05 | 完善业务自动创建数据库

06 | 最终篇-通过AOP自动连接数据库-完成日志业务

介绍

本文主要讲的内容是 C# + Appium 自动化玩微信

Appium 是一个开源的自动化测试工具,支持 Android、iOS 平台上的原生应用,支持C#、 Java、Python、PHP 等多种语言。

Appium 封装了 Selenium,能够为用户提供所有常见的 JSON 格式的 Selenium 命令以及额外的移动设备相关的控制命令,比如:多点触控手势、屏幕朝向等。

环境搭建

本文章用到的所有软件安装包请联系QQ群: 867095512 看群公告

一台电脑win7 - win10

vs2019

JDK1.8

Appium

android-sdk

mumu 模拟器/你的安卓手机 (作者买不起 肾12 苹果党请使用模拟器)

JDK

计算机(右键)->属性->高级系统设置->高级->环境变量->新建环境变量 JAVA_HOME,如图所示:

系统变量->找到 Path 变量->编辑->在变量值的末尾添加 ;%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;

新建 CLASSPATH 变量,变量值为:.;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar

android-sdk

与 JDK 配置类似,新建环境变量 ANDROID_HOME,变量值为 android-sdk 位置,比如:D:\android-sdk-windows

Path 变量值的末尾添加 ;%ANDROID_HOME%\tools;%ANDROID_HOME%\build-tools\30.0.0-preview;%ANDROID_HOME%\platform-tools

Appium

Appium 安装完成启动后,点击编辑配置,配置 JDK 和 android-sdk,如图所示

mumu

mumu 模拟器下载完后,除了根据自己需要更改一下安装路径,其他选项默认即可安装,装完后打开点击应用中心,搜一下微信,搜到之后安装一下,微信安装完成后再用自己的微信号登录一下。

因为我们是通过安卓的 adb 连接虚拟机的,因此需要在控制台执行 adb connect 127.0.0.1:7555 命令,让 adb 连接上虚拟机。

执行了上面连接模拟器的命令后,我们可以在 cmd 控制台输入 adb devices 查看当前连接的虚拟机。

真机

拿起我的华为手机

在手机中依次执行(点击):设置->我的设备->全部参数->MIUI版本(多次点击,开启开发者模式)->返回设置列表->更多设置->开发者选项->开启开发者选项并分别开启:USB调试、USB安装、USB调试(安全设置)选项



如果你的手机是第一次链接电脑可能还需要安装一下驱动



adb检测

Path 变量值的末尾添加 D:\adb Adb的安装存放路径



使用

首先启动 Appium 和 mumu,因为之前我们已经配置了 Appium,此时我们直接点击 Appium的启动服务器按钮 即可,如下图所示:

启动之后如图所示:

现在我们可以先通过 C# 控制台程序来启动一下微信:

AppiumOptions appium = new AppiumOptions();
appium.AddAdditionalCapability("platformName", "Android"); // 操作系统
appium.AddAdditionalCapability("deviceName", "hdwifi"); // 设备 ID
appium.AddAdditionalCapability("platformVersion", "10.0.0"); // 设备版本号
appium.AddAdditionalCapability("appPackage", "com.tencent.mm"); // app 包名
appium.AddAdditionalCapability("appActivity", "com.tencent.mm.ui.LauncherUI"); // app 启动时主 Activity
appium.AddAdditionalCapability("noReset", true);// 是否保留 session 信息,可以避免重新登录
appium.AddAdditionalCapability("unicodeKeyboard", true); // 使用 unicodeKeyboard 的编码方式来发送字符串
appium.AddAdditionalCapability("resetKeyboard", true); // 将键盘给隐藏起来
Console.WriteLine("打开微信");
var driver = new AndroidDriver<AndroidElement>(new Uri("http://127.0.0.1:4723/wd/hub"), appium);
执行上述代码之后,如果发现 mumu 模拟器中的微信已经启动了,就说明基本环境已经调通了;如果执行代码后发现调不到 mumu 模拟器中的微信,先在 cmd 中执行一下 adb connect 127.0.0.1:7555 命令,再执行程序即可。
也可以打开Appium 点击这个按钮,输入JSON 启动项目 看看手机是否能够正常启动微信
{
"platformName": "Android",
"deviceName": "hdwifi",
"platformVersion": "10.0.0",
"appPackage": "com.tencent.mm",
"appActivity": "com.tencent.mm.ui.LauncherUI",
"noReset": true,
"unicodeKeyboard": true,
"resetKeyboard": true
}



微信如果成功打开了那么你就成功了,接下来我们来看如何自动化执行一些按钮和操作

(各位大佬别点击加我好吧!!!)

            Console.WriteLine("点击加号");
driver.FindElementsById("com.tencent.mm:id/ef9")[0].Click();
Console.WriteLine("点击添加好友");
driver.FindElementsById("com.tencent.mm:id/gam")[1].Click();
Console.WriteLine("输入框");
driver.FindElementsById("com.tencent.mm:id/fcn")[0].Click();
Console.WriteLine("输入内容");
driver.FindElementsById("com.tencent.mm:id/bhn")[0].SendKeys("hd377749229");
Console.WriteLine("点击搜索");
driver.FindElementsById("com.tencent.mm:id/ga1")[0].Click();

再来个自动发送消息给指定的好友

            Console.WriteLine("点击微信搜索框");
driver.FindElementsById("com.tencent.mm:id/f8y")[0].Click();
Console.WriteLine("在搜索框输入搜索信息");
driver.FindElementsById("com.tencent.mm:id/bhn")[0].SendKeys("hd377749229");
Console.WriteLine("点击搜索到的好友");
driver.FindElementsById("com.tencent.mm:id/tm")[0].Click();
Console.WriteLine("输入文字");
driver.FindElementsById("com.tencent.mm:id/al_")[0].SendKeys("hello C#");
Console.WriteLine("输入表情");
driver.FindElementsById("com.tencent.mm:id/anz")[0].Click();
driver.FindElementsById("com.tencent.mm:id/rv")[0].Click();
Console.WriteLine("点击发送按钮发送信息");
driver.FindElementsById("com.tencent.mm:id/anv")[0].Click();
driver.Quit();

上面的命令是不是已经惊艳到了你!!别慌我还有更骚的

我们通过点击左侧的 加号 就能获取到他的ID 然后就可以在代码中写下来,简直舒服的不行!



如果你能把这篇文章玩一下, 下一篇我还有更加刺激的,

比如自动发红包空款,自动收取蚂蚁森林能量,检测微信删除了我的人!!!

项目地址

知识全聚集系列: https://github.com/MrChuJiu/Easy.Core.Flow

结语

感觉在边缘摩擦的文章,如果你觉得本文有什么不合规的东西,请大佬通知我。

鸣谢

本次系列教程思路来自于:Python小二

Python的朋友看这里:https://www.cnblogs.com/ityard/p/13928363.html

知识全聚集 .Net Core 技术突破 | 我用C#手把手教你玩微信自动化一的更多相关文章

  1. 知识全聚集 .Net Core 技术突破 | 简单说说工作单元

    知识全聚集 .Net Core 技术突破 | 简单说说工作单元 教程 01 | 模块化方案一 02 | 模块化方案二 其他教程预览 分库分表项目实战教程 Git地址: https://github.c ...

  2. 知识全聚集 .Net Core 技术突破 | 如何实现一个模块化方案一

    简介 模块化的介绍一共2篇 这一篇我们实现一个功能非常简单的StartupModules模块化. 第二篇我们来实现一个ABP的模块化效果. 思考 其实来简单想一下模块化的实验思路,写个接口=>模 ...

  3. 知识全聚集 .Net Core 技术突破 丨ABP vNext 开始

    介绍 很久没有更新博客了,之前想更新但是发现博客园崩了,外加工作上的调换也比较忙,最近有了点时间我来继续更新下这个系列的文章. 今年3月份我带着我们研发组同事,将公司产品从老Abp重构到Abp vNe ...

  4. 手把手教你玩转CSS3 3D技术

    手把手教你玩转 CSS3 3D 技术   要玩转css3的3d,就必须了解几个词汇,便是透视(perspective).旋转(rotate)和移动(translate).透视即是以现实的视角来看屏幕上 ...

  5. 手把手教你玩转 CSS3 3D 技术

    css3的3d起步 要玩转css3的3d,就必须了解几个词汇,便是透视(perspective).旋转(rotate)和移动(translate).透视即是以现实的视角来看屏幕上的2D事物,从而展现3 ...

  6. 【HMS Core 6.0全球上线】Network Kit全链路网络加速技术,应用无惧网络拥塞

    HMS Core 6.0已于7月15日全球上线,本次版本向广大开发者开放了众多全新能力与技术.其中HMS Core Network Kit开放了全链路网络加速技术,助力开发者为用户提供低时延的畅快网络 ...

  7. In-Cell、On-Cell和OGS全贴合屏幕技术区别

    昨天刚发布的小米3用的是OGS全贴合屏幕技术,包括魅族MX3也是同样的技术,但是iPhone5是In-Cell屏幕技术,什么才是全贴合?它们之间到底有何区别?哪个好?小编今天就来普及一下全贴合屏幕技术 ...

  8. 基于Kubernetes 构建.NET Core技术中台

    今天下午在腾讯云+社区社区分享了<基于Kubernetes 构建.NET Core技术中台>,下面是演讲内容的文字实录. 我们为什么需要中台 我们现在处于企业信息化的新时代.为什么这样说呢 ...

  9. 2019亚太内容分发大会,阿里云获CDN领袖奖、技术突破奖

    近日,亚太CDN产业联盟主办的2019亚太内容分发大会在上海召开.本次大会以"5G分发"为主题,集结了CDN领域近千名行业领袖.专家参与.在会上,阿里云斩获“CDN领袖奖”.“技术 ...

随机推荐

  1. Trie树【字典树】浅谈

    最近随洛谷日报看了一下Trie树,来写一篇学习笔记. Trie树:支持字符串前缀查询等(目前我就学了这些qwq) 一般题型就是给定一个模式串,几个文本串,询问能够匹配前缀的文本串数量. 首先,来定义下 ...

  2. Docker镜像仓库Harbor部署

    一.Harbor组件 组件 功能 harbor-adminserver 配置管理中心 harbor-db Mysql数据库 harbor-jobservice 负责镜像复制 harbor-log 记录 ...

  3. php上传图片,网站代码

    1.php代码 2.表设置结构 3.jquery代码 4.显示网站的数据 6.上传图片 7.上传图片的php代码

  4. 手把手教你使用 Prometheus 监控 JVM

    概述 当你的 Java 业务容器化上 K8S 后,如果对其进行监控呢?Prometheus 社区开发了 JMX Exporter 来导出 JVM 的监控指标,以便使用 Prometheus 来采集监控 ...

  5. Python数据类型--元组(tuple)

    元组与列表非常相似,最大区别在于: (1)元组是不可修改的,定义之后就"固定"了. (2)元组在形式上是用()这样的圆括号括起来 (3)元组不能插入或删除元素 注:元素可修改与不可 ...

  6. 多测师讲解自动化--rf关键字--断言(下)_高级讲师肖sir

    断言: 1.1Page Should Contain Maximize Browser Window sleep 2 Comment Page Should Contain hao123 #断言当前页 ...

  7. 用Docker容器安装Jenkins

    先安装Docker 可以参考我的上一篇文章 链接 拉取Jenkins最新镜像,可跟版本号 不跟默认拉取最新镜像 docker pull jenkins/jenkins 创建JenKins的工作目录 m ...

  8. mysql 操作数据库

    创建数据库 CREATE {DATABASE | SCHEMA} [IF NOT EXISTS] db_name(数据库名字) #添加 IF NOT EXISTS,如果已有数据库,将会提醒,不会出现错 ...

  9. selenium基础 --获取内容

    from time import sleep from selenium import webdriver browser = webdriver.Chrome() url = "http: ...

  10. php+nginx 整合

    php编译 https://www.cnblogs.com/php-linux/p/12360858.html nginx编译 https://www.cnblogs.com/php-linux/p/ ...