毎日急いで地下鉄に通うと、特にソフトウェアの場合、誤ってチェックインするのを忘れてしまいますが、チェックインを忘れるという問題を解決する方法はありますか?今日は、Pythonを使用してタイミングと自動クロッキングを実現するアーティファクトをすべての人に推奨したいと思います。
1予備的なツールの準備
-
言うまでもなくPython
-
エミュレータをインストールするために会社のAndroid携帯電話またはコンピュータに24時間を置くことができます
-
ADBツール
古いルールでは、編集者、QQグループ:721195303に注意を払うためにパッケージ化されたソフトウェアが必要です。
2ADBのインストールと構成
ADBインストールパッケージのダウンロードに移動し、インストール後に環境変数Pathにディレクトリを追加します
2UIautomator2のインストール
# 安装 uiautomator2(PC端) pip3 install -U uiautomator2
3電話をコンピューターに接続します
3.1モバイル
携帯電話を使用している場合は、携帯電話の「開発者向けオプション」モードをオンにしてから、USBデバッグをオンにして、USBをコンピューターに挿入する必要があります。
コマンドライン入力
adb devices
電話が正常に接続されているかどうかを確認します
以下は成功を示しています
次に実行します
python3 -m uiautomator2 init
atx-agentを電話にインストールします
3.2シミュレータ
シミュレータを使用する場合は、シミュレータの設定でADB接続を開き、コマンドラインを入力しadb devices
て接続が成功するかどうかを確認します。シミュレータを使用する場合は、位置決め位置を会社の必要なパンチ範囲に変更する必要があります。手順は上記と同じです
4ウェビターのインストールと使用
weditorをインストールするためにより便利なコントロールをつかむために
pip install --pre weditor
コマンドライン入力
python -m weditor
ポップアップブラウザで操作する
3番目の手順で取得したデバイスのシリアル番号を入力ボックスに入力し、[接続]をクリックします。通常は緑色の葉が表示されるため、ここでアプリケーション制御情報を取得する必要があります。
5コード開発
import uiautomator2 as u2
import time
from apscheduler.schedulers.blocking import BlockingScheduler
d = u2.connect_usb('b11b0fbe')
def click_text(self,str,sq=0): #对于无法直接点击的控件写了个函数
path=d(text=str)[sq]
x,y=path.center()
d.click(x,y)
def click(card_ty):
d.app_start("com.alibaba.android.rimet") # 启动应用
time.sleep(5)
d(text="工作台").click()
time.sleep(3)
d(text="考勤打卡").click()
time.sleep(3)
d(scrollable=True).fling.toEnd()
click_text(d,card_ty,-1)
time.sleep(3)
d.screenshot("11.jpg")
d.push("11.jpg", "/sdcard/0/11.jpg")
d.app_stop("com.alibaba.android.rimet")
send_info()
def send_info(): #将打卡信息截图利用小号发送给自己大号
d.app_start("com.tencent.mm") # 启动应用
time.sleep(5)
click_text(d,"通讯录")
click_text(d,"打卡")
click_text(d,"发消息")
time.sleep(2)
d(description="更多功能按钮,已折叠").click()
time.sleep(2)
d.swipe(1000, 1450, 100, 1450)
time.sleep(2)
click_text(d,"文件")
time.sleep(2)
click_text(d,"微信文件",-1)
click_text(d,"手机存储")
click_text(d,"0")
d(resourceId="com.tencent.mm:id/cvh").click()
d(text="发送(1/9)").click()
d(text="给朋友留言").click()
d.send_keys("今日打卡记录,请注意查收", clear=True)
d(text="发送").click()
time.sleep(5)
d.app_stop("com.tencent.mm")
def job1():
click("上班打卡")
def job2():
click("下班打卡")
if __name__ == "__main__":
sched = BlockingScheduler() #设置定时任务,周一至周五 上午8.50自动打上班卡,下午6.10自动打下班卡
sched.add_job(job1, 'cron', day_of_week='mon-fri', hour='8',minute ='50')
sched.add_job(job2, 'cron', day_of_week='mon-fri', hour='18',minute ='10')
sched.start()
チェックイン部分のコードとWeChatから送信されたスクリーンショットでは、実際の状況に応じて手順を調整する必要があります。さらに、apschedulerライブラリの使用に慣れていない場合は、システムに付属のタスクスケジューラを使用することもできます。いくつかの手順の効果は次のとおりです。
企業のWeChatチェックインについても同じことが言えます。独自の調査を行うことができます。学習にのみ使用し、会社の規則や規制に異議を唱えないでください。