千家信息网

「docker实战篇」python的docker爬虫技术-appium+python实战(18)

发表于:2024-11-23 作者:千家信息网编辑
千家信息网最后更新 2024年11月23日,原创文章,欢迎转载。转载请注明:转载自IT人故事会,谢谢!原文链接地址:「docker实战篇」python的docker爬虫技术-appium+python实战(18)上次通过appium进行了,录制
千家信息网最后更新 2024年11月23日「docker实战篇」python的docker爬虫技术-appium+python实战(18)

原创文章,欢迎转载。转载请注明:转载自IT人故事会,谢谢!
原文链接地址:「docker实战篇」python的docker爬虫技术-appium+python实战(18)

上次通过appium进行了,录制脚本的功能,而且还可以进行转换成python,java,js等等语言的,这次实战下,从登陆,到进入某个页面操作获取信息。
源码:https://github.com/limingios/dockerpython.git

流程代码

1.点击跳过导航页面,进入登录页面
2.输入用户名和密码,点击登录
3.进入页面点击同意,点击研迅
4.模拟手势,上移

  • 准备工作
    1. 安装【考研帮】

2.设置-应用-点击【考研帮】-清除数据

  1. 启动【考研帮】

  1. 启动直接adb中的uiautomatorviewer.bat 记得看看下载源码包里面的增强版

5.看到uiautomatorviewer 和 夜神模拟器

6.appium启动

  • 编写代码

#!/usr/bin/env python

-- coding: utf-8 --

@Time : 2019/1/22 20:15

@Author : Aries

@Site :

@File : yankao.py

@Software: PyCharm

#pip3 install Appium-Python-Client
import time
from appium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
cap = {
"platformName": "Android",
"platformVersion": "5.1.1",
"deviceName": "127.0.0.1:62001",
"appPackage": "com.tal.kaoyan",
"appActivity": "com.tal.kaoyan.ui.activity.SplashActivity",
"noReset": True
}

driver = webdriver.Remote("http://localhost:4723/wd/hub",cap)

def get_size():
x = driver.get_window_size()['width']
y = driver.get_window_size()['height']
return(x,y)

#导航点击跳过
try:
#是否跳过
if WebDriverWait(driver,3).until(lambda x:x.find_element_by_xpath("//android.widget.FrameLayout[1]/android.widget.LinearLayout[1]/android.widget.FrameLayout[1]/android.widget.LinearLayout[1]/android.widget.FrameLayout[1]/android.widget.TextView[1]")):
driver.find_element_by_xpath("//android.widget.FrameLayout[1]/android.widget.LinearLayout[1]/android.widget.FrameLayout[1]/android.widget.LinearLayout[1]/android.widget.FrameLayout[1]/android.widget.TextView[1]").click()
except:
pass

try:
if WebDriverWait(driver,3).until(lambda x:x.find_element_by_xpath("//android.widget.FrameLayout[1]/android.widget.LinearLayout[1]/android.widget.FrameLayout[1]/android.widget.LinearLayout[1]/android.widget.FrameLayout[1]/android.widget.ScrollView[1]/android.widget.LinearLayout[1]/android.widget.EditText[1]")):
driver.find_element_by_xpath("//android.widget.FrameLayout[1]/android.widget.LinearLayout[1]/android.widget.FrameLayout[1]/android.widget.LinearLayout[1]/android.widget.FrameLayout[1]/android.widget.ScrollView[1]/android.widget.LinearLayout[1]/android.widget.EditText[1]").send_keys("idig8")
driver.find_element_by_xpath("//android.widget.FrameLayout[1]/android.widget.LinearLayout[1]/android.widget.FrameLayout[1]/android.widget.LinearLayout[1]/android.widget.FrameLayout[1]/android.widget.ScrollView[1]/android.widget.LinearLayout[1]/android.widget.EditText[2]").send_keys("3989441")
driver.find_element_by_xpath("//android.widget.FrameLayout[1]/android.widget.LinearLayout[1]/android.widget.FrameLayout[1]/android.widget.LinearLayout[1]/android.widget.FrameLayout[1]/android.widget.ScrollView[1]/android.widget.LinearLayout[1]/android.widget.Button[1]").click()
except:
pass

#隐私协议
try:
#隐私协议
if WebDriverWait(driver,3).until(lambda x:x.find_element_by_xpath("//android.widget.TextView[@resource-id='com.tal.kaoyan:id/tv_agree']")):driver.find_element_by_xpath("//android.widget.TextView[@resource-id='com.tal.kaoyan:id/tv_agree']").click()
br/>driver.find_element_by_xpath("//android.widget.TextView[@resource-id='com.tal.kaoyan:id/tv_agree']").click()

except:
pass

#点击研讯
if WebDriverWait(driver,3).until(lambda x:x.find_element_by_xpath("//android.widget.FrameLayout[1]/android.widget.LinearLayout[1]/android.widget.FrameLayout[1]/android.widget.LinearLayout[1]/android.widget.FrameLayout[1]/android.support.v4.view.ViewPager[1]/android.widget.FrameLayout[1]/android.widget.LinearLayout[2]/android.widget.LinearLayout[1]/android.widget.LinearLayout[1]/android.widget.LinearLayout[1]/android.support.v4.view.ViewPager[1]/android.widget.FrameLayout[1]/android.widget.RelativeLayout[1]/android.support.v7.widget.RecyclerView[1]/android.widget.LinearLayout[1]/android.support.v7.widget.RecyclerView[1]/android.widget.RelativeLayout[3]/android.widget.LinearLayout[1]/android.widget.ImageView[1]")):
driver.find_element_by_xpath("//android.widget.FrameLayout[1]/android.widget.LinearLayout[1]/android.widget.FrameLayout[1]/android.widget.LinearLayout[1]/android.widget.FrameLayout[1]/android.support.v4.view.ViewPager[1]/android.widget.FrameLayout[1]/android.widget.LinearLayout[2]/android.widget.LinearLayout[1]/android.widget.LinearLayout[1]/android.widget.LinearLayout[1]/android.support.v4.view.ViewPager[1]/android.widget.FrameLayout[1]/android.widget.RelativeLayout[1]/android.support.v7.widget.RecyclerView[1]/android.widget.LinearLayout[1]/android.support.v7.widget.RecyclerView[1]/android.widget.RelativeLayout[3]/android.widget.LinearLayout[1]/android.widget.ImageView[1]").click()

l = get_size()x1 = int(l[0]*0.5)y1 = int(l[1]*0.75)y2 = int(l[1]*0.25)#滑动操作while True:    driver.swipe(x1,y1,x1,y2)    time.sleep(0.5)
注意点:1.xpath 通过uiautomatorviewer 点击查看![](https://upload-images.jianshu.io/upload_images/11223715-a88d201baa566c1b.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)2.python在运行过程中如果进行uiautomatorviewer加载会报错3.python在使用的过程中需要先引入    from appium import webdriver    from selenium.webdriver.support.ui import WebDriverWait4.前提是启动的appium:提示:The server is running![](https://upload-images.jianshu.io/upload_images/11223715-b173c522071c521b.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)5.里面有几个需要注意的套路:>appium服务的远程调用webdriver.Remote("http://localhost:4723/wd/hub",cap)>判断xpath是否存在if WebDriverWait(driver,3).until(lambda x:x.find_element_by_xpath("'路径")):>输入框复制 driver.find_element_by_xpath("路径").send_keys("填入数据")>按钮点击 driver.find_element_by_xpath("路径").click()>模拟手势上啦,先获取屏幕的宽高,然后通过driver.swipe(x1,y1,x1,y2) 从指定的(x1,y1)坐标到(x2,y2)def get_size():    x = driver.get_window_size()['width']    y = driver.get_window_size()['height']    return(x,y)l = get_size()x1 = int(l[0]*0.5)y1 = int(l[1]*0.75)y2 = int(l[1]*0.25)driver.swipe(x1,y1,x1,y2)PS:最后实现了如何从登陆到点击研迅,模拟手指,拉下加载的功能。
页面 实战 路径 代码 功能 手势 数据 源码 过程 隐私 导航 登录 登陆 输入 技术 爬虫 信息 前提 原创文章 原文 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 爱得威软件开发有限公司 大数据和软件开发哪个简单 网络安全法最新版全文 erp服务器断网后可以用吗 曹妃甸区数据网络技术售后保障 公共区域电子屏系统网络安全责任承诺书 服务器里双芯片的显卡 山西耐特安网络技术有限公司介绍 宝山区品质软件开发平台资质 网络安全风险评估原则 相城区电子网络技术怎么样 linux服务器脚本 培训软件开发软件 网络安全法 同性恋 TIS服务器我的世界的百科 数据库表格如何转为文本代码 关于数据库定位记录的卷子 二道区网络技术推荐咨询 山东系统软件开发哪家可靠 软件开发公司开户 网络安全保护工作的基本内容 2016网络安全100强 南京市互联网科技 sun的服务器 部队特招网络安全 河南警察学院网络安全与执法如何 国家电网机房网络安全 大连市网络安全宣传周问题 数据库自动化运维 数据库是不是所有的电脑都有
0