python 爬虫开发从入门到实践 读书笔记(三)

栏目: Python · 发布时间: 5年前

内容简介:下载网址到网页的最底部, 在 "Command line tools only" 下载系统对应的 sdk打开手机的开发者模式, usb 调试, usb 安装

android 原生 app 爬虫 uiautomator

安装环境 JRE

# mac
brew update
brew cask install java
# 或
brew tap caskroom/versions
brew cask instal java8
# ubuntu
apt-get update
apt-get install default-jre

安装 android sdk

下载网址 https://developer.android.google.cn/studio/

到网页的最底部, 在 "Command line tools only" 下载系统对应的 sdk

bin/sdkmanager "platform-tools"
# 或者安装代理
bin/sdkmanager "platform-tools" --proxy=http --proxy-host=代理IP --proxy-port=代理端口

设置环境变量

platform-tools
tools
# 添加目录里对应的文件夹

设置开发者模式

打开手机的开发者模式, usb 调试, usb 安装

调试

uiautomatorviewer
# 会打开一个窗口, 点击左上角的手机图标, 就会在电脑上看到手机界面

使用 python 调试手机

使用 python 调试手机, uiautomatorviewer 不能同时运行, 利用"一键优化" 或 关机重启, 杀掉 python 安装的两个进程

pip install uiautomator
>>> from uiautomator import Device
>>> devide = Device()
>>> print(device.dump())
# 第一次运行, 会在手机上安装两个没有图标的程序, 点击允许安装

打开微信

>>>from uiautomator import Device

>>>device = Device()
>>>device(text="微信").click()
# 显示所有连接电脑的手机
adb device -l
>>>device = Dvice('串号')
from uiautomator import Device
device = Device()
print(device.dump()) # 以xml 形式输入当前手机屏幕的布局信息

device(packageName='com.android.systemui')
device(className='android.widget.FrameLayout')
device(resourceId='com.android.systemui:id/clock')
device(text='短信')
device(index='3', resourceId='com.android.systemui:id/mobile_combo')

获得屏幕文字

device.dump()
title = device(resourceId='id名').text
# 如果有多个
title = device(resourceId='id名')
for t in title:
    print(t.text)

滚动屏幕

device(scrollable=True)
# 上滚一屏
device(scrollable=True).scroll.vert.forward()
# 下滚一屏
device(scrollable=True).scroll.vert.backward()
# 右滚一屏
device(scrollable=True).scroll.horiz.forward()
# 左滚一屏
device(scrollable=True).scroll.horiz.backward()

滑动屏幕

# 起始x坐标, 
device.swipe(400, 600, 0, 600)

点击屏幕

所有的坐标位置, 可以在 uiautomatorviewer 里显示

# 短按, 长按
device(text="微信").click()
device(text="微信").long_click()
device.click(230, 567)
device.long_click(230, 567)

输入文字

device(resourceId="ID").set_text("输入的文字")

判断元素是否存在

input_box = device(resourceId='ID')
if input_box.exists:
    input_box.set_text('输入文字')
else:
    print('不存在')

等待加载

input_box = device(resourceId='ID')
if input_box.wait.exists(timeout=20000):
    input_box.set_text('输入文字')
else:
    print('不存在')

点亮屏幕

# 点亮屏幕
device.wakeup()
# 关闭屏幕
device.sleep()

if device.screen == 'on':
    print('当前屏幕为点亮状态')
elif device.screen == 'off':
    print('当前屏幕为关闭状态')

操作实体键

  • power 电源键
  • back 返回
  • menu 菜单键
  • volume_up 音量增大
  • volume_down 音量减小
  • home 返回左面
device.press.power()
device.press.volume_up()

watcher

满足3个条件, 激活 watcher

  • 找不到元素, 即将报错
  • 当屏幕上出现文本 "文字1"
  • 当屏幕上出现文本 "文字2"
from uiautomator import Device

device = Device()
device.watcher('注册 watcher 名字').when(text="文字1").when(text="文字2").press.back()

...
# 下面为执行的代码

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Ajax修炼之道

Ajax修炼之道

(美)哥特兰、高伯瑞斯、艾米亚 / 徐锋,胡冰 / 电子工业出版社 / 2006-4 / 29.8

Ajax将静态Web页面转变为充满交互的应用。现在您不需要牺牲Web应用程序部署的简单性,就可以将“胖”客户端应用程序部署到客户端。不过对于很多人业说,Ajax看起来很难。这就是我们撰写本书的原因。作为实践的指导,本书揭开了Ajax神秘的面纱,教您如何以简单的方式使用Ajax。本书内容覆盖了DHTML、Javascript和闻名已久的XmlHttp Request回调技术的基础知识。您将了解如何将......一起来看看 《Ajax修炼之道》 这本书的介绍吧!

RGB转16进制工具
RGB转16进制工具

RGB HEX 互转工具

在线进制转换器
在线进制转换器

各进制数互转换器

HTML 编码/解码
HTML 编码/解码

HTML 编码/解码