python自动化处理网页或手机应用 selenium&uiautomator

【Python】Selenium一直使用同一个浏览器,不重复开浏览器 在实际调试selenium自动化程序时,我们需要手动打开浏览器,进入到所需的页面,执行一些手动任务,如输入表单、输入验证码,登陆成功后,然后再开始运行自动化脚本。 这种情况下如何使用selenium来接管先前已打开的浏览器呢? 这里给出Google Chrome浏览器的解决方案。 我们可以利用Chrome DevTools协议。它允许客户检查和调试Chrome浏览器。 打开cmd,在命令行中输入命令: chrome.exe --remote-debugging-port=9222 --user-data-d 阅读详情

最近有需求模拟操作网页或者手机, 也算研究了有一段时间, 就在这儿整理一下结构, 具体细节其他帖子已经有很多了, 就不复述了.
一 : selenium
我个人的一些基础理解, 嫌麻烦可以直接跳过{
selenium本身相当于开了一个服务器, 服务器打开网页, 然后客户端给服务器发送交互来操作网页, 比如打开url, 点击等等. 本身selenium似乎是不局限于python的, 不过python感觉用起来方便一点.
selenium主要有两种用法, 一种是单进程直接作为服务器和客户端. 也就是相当于每次运行都打开一个新网页. 这种方法写起来方便, 但是调试起来其实挺麻烦. 如果有登录之类的操作, 每次调试都要重新登陆. 这里推荐使用第二种remote方式. 这种事分开服务器和客户端, 服务器打开网页, 然后把driver信息dump到文件, 然后客户端读取dump的文件, 载入driver, 这样的话调试的时候只要调试操作就行了, 不需要每次都打开浏览器, 转到url, 登录等等
}
环境准备:
我是win10, python3.7, java15
1:selenium-server-standalone-3.141.59.jar 去selenium官网下类似这种文件名的java包(当然要装个java环境了)
2:python需要安装 selenium 和 pickle(用来dump driver信息)
操作步骤:
1: 运行selenium-server-standalone-3.141.59.jar 这个 java 包, 例如
java -jar c:\tools\selenium-server-standalone-3.141.59.jar
成功的话应该能看到类似
在这里插入图片描述这样服务器就在运行了
2:然后用服务器单独生成一个driver, dump下来以备之后客户端反复调用, 这里直接上我测试的时候用的代码. 这里由于我是要监控两个交易所的数据, 所以代码不算是最简化的demo. 不过应该不会影响理解吧

import pickle
import selenium.webdriver

EXECUTOR = 'http://127.0.0.1:4444/wd/hub'
swap_list = ["DFS", "DOP"]
index = input(swap_list)
FILENAME = swap_list[int(index)]
opt = selenium.webdriver.chrome.options.Options()
#因为需要一些chrome的插件, 所以读了user_data
opt.add_argument("--user-data-dir="+r"C:/Users/XXXXXX/AppData/Local/Google/Chrome/User Data_"+FILENAME)

capabilities = opt.to_capabilities()
driver = selenium.webdriver.Remote(command_executor=EXECUTOR, desired_capabilities=capabilities)
fp = open(FILENAME, 'wb')
driver.set_window_size(1000, 3500)
if FILENAME == "DOP":
    driver.get('https://dolphinswap.io/market/7')
if FILENAME == "DFS":
    driver.get('https://apps.defis.network/market-list')
#把driver信息dump到文件
pickle.dump(driver, fp)

运行之后, 应该就会产生一个包含刚才生成的chrome浏览器的driver的信息的文件, 名为FILENAME(这里可以自己改)
3:客户端每次运行的时候读之前dump的driver信息, 之后就可以直接接着操作浏览器页面了
例如:

import pickle
FILENAME = 'DFS'
driver = pickle.load(open(FILENAME, 'rb'))
driver.refresh()

如无意外可以看到页面刷新, 之后操作driver就和原来一样就行

最后提一点初学操作比较容易出现的问题:
1:定位不到元素:
可能是因为html结构是动态生成的, 这里建议直接在浏览器查看器找到你要定位的元素, 然后右键, 复制xpath. 定位的时候直接用
driver.find_element_by_xpath("(刚复制的xpath)").click()
如果还找不到, 可能要看看是不是在浏览器另一个窗口或者一个页面有iframe等等
2:插件操作:
插件一般很可能是打开了另一个窗口, 想操作插件可以直接切换到新窗口
driver.switch_to.window(driver.window_handles[0])
来按照页面正常操作, 操作完切回来就行
至于如何触发点击打开插件, 这个当时研究了一下好像不好搞, 有帖子说直接下插件源码自己调之类的, 嫌麻烦就没搞这么多了

二: uiautomator
现在很多应用都往手机上走, 可能手机的功能比PC网页端还全, 所以最好能直接操作手机操作. uiautomator原理应该和selenium差不多, 都是服务器管理网页, 客户端发请求操作网页, 只不过现在整个手机相当于一个网页
环境准备:
我还是win10, python3.7, uiautomator2
1:adb, 这个是个安卓的测试软件吧, 可以在电脑上管理安卓手机之类的?
2:python里面安装 uiautomator2
3:雷电模拟器
虽然可以直接连真机, 但是毕竟不是很方便, 所以最好用模拟器实现. 找了一圈似乎就雷电模拟器有桥接功能. 或者就直接安装android官方那个, 不过我也不是为了写安卓app, 图方便就用这模拟器了
操作步骤:
这方面相关的帖子很多, 我就点到为止了
1: adb devices
查看是否识别到了设备
2: python -m uiautomator2 init
给设备装ATX, 相当于服务器
3: python -m weditor
可以打开一个模拟页面, 方便定位元素
然后

import uiautomator2 as u2
driver = u2.connect('192.168.50.99')#地址可以在设备上的ATX里面查看
driver.drag(0.202, 0.679, 0.9, 0.679, 0.1)#然后操作driver就行,具体接口可以看相关文档

总结:
总体来说还是selenium操作网页更流畅, uiautomator可能因为我的测试手机和模拟器配置都比较低, 跑起来卡卡的. 另外uiautomator好像也可以操作IOS系统?如果可以就可以各种挂机玩游戏了, 哈哈
希望本帖能帮到想做自动化的朋友们, 能让你们少走点弯路就不枉我留贴了
如果细节有问题可以私聊, 看到的话尽量回答

UI自动化测试框架对比(二) 简单阐述当前常用的测试框架。 1、Selenium           Selenium就是一套专门用于自动化Web浏览器的工具。 而已!  主要是用于自动化Web应用程序进行测试,但肯定不仅限于此。 无聊的基于Web的管理任务也可以(也应该!)也是自动化的。     Selenium有一些最大的浏览器供应商的支持,他们已经采取步骤使Selenium成为其浏览器的本地部分。 阅读详情

相关推荐

冗余位技术在SAR ADC中的动态误差恢复机制解析

本文深入解析了冗余位技术在SAR ADC中的动态误差恢复机制,详细介绍了其基本概念、动态误差产生原因及冗余位的容错空间设计、时序松弛策略和数字校正算法。通过实际电路设计案例和数学建模,展示了冗余位技术如何显著提升ADC的精度和能效比,同时探讨了未来发展方向。

weixin_28335283的博客 975

自动化测试(uiautomator2、selenium、接口自动化)和测试工具(详细)

接口工具和接口自动化一、接口测试工具1. jmeter2. postman3. android studio二、自动化测试工具1. app UI自动化测试框架2. web页面自动化测试框架3. 接口自动化测试框架 一、接口测试工具 1. jmeter jmeter 是一个非常流行的性能测试工具,优点 开源、小巧、易于安装。 2. postman postman常用于开发中,可将请求的链接直接复制,然后构造自己所想要的入参进而形成想要的链接地址。 3. android studio android

暖暖的博客 2639

使用protege推理小例子---关系链

使用protege推理小例子---关系链关系链推理 SubPropertityChain在Protege中使用关系链推理1、创建Person类2、创建对象关系3、添加实例4、进行推理5、推理结果 关系链推理 SubPropertityChain 关系链简单的说就是将多个关系表达式串联起来,如下图 1-1 图1-1 小明的父亲是大明,大明的父亲是老明。这就是一个由两组关系连接的关系链,根据关系链可以推理出,小明和老明之间的关系是爷孙关系。 在Protege中使用关系链推理 1、创建Person类 在Entit

weixin_45237780的博客 4458

【移动端测试】uiautomator2 如何支持混合应用测试

只需要多加 4 行代码,就能让 uiautomator2 支持混合应用测试。

分享软件测试技术和学习方法 2101

线性代数笔记【空间曲面】

二次曲面 曲面可以看成是一个动点或一条动曲线按照一定条件或规律运动产生的轨迹 曲面的方程即是该动点的坐标所满足的方程 空间解析几何中,一般会涉及到由曲面写方程和由方程看曲面两种类型问题 曲面与曲面方程 球面方程 球面:空间内与定点的距离等于定长的点的集合 这一定点叫球心,定长叫半径 标准方程 (x−x0)2+(y−y0)2+(z−z0)2=r2(x-x_0)^2+(y-y_0)^2+(z-z_0)^2=r^2(x−x0​)2+(y−y0​)2+(z−z0​)2=r2 球心P0(x0,y0,z0)P_0(

qq_40500005的博客 3246

QDMA工程搭建/windows驱动编译与性能测试

请注意,根据您的目标操作系统,您可能需要在windows启动配置中启用测试签名的驱动程序,以便启用此驱动程序的安装。右键单击设备,选择更新驱动程序软件,然后选择构建的QDMA驱动程序的文件夹(通常为。创建一个新工程,在IP Catalog中搜索QDMA,双击创建qdma ip核。驱动程序安装安装驱动程序最简单的方法是通过Windows的“设备管理器”。如果系统提示未经验证的驱动程序发布者,请选择无论如何安装此驱动程序软件。本节主要介绍QDMA驱动在Windows系统的源文件、编译和安装过程。

qq_28455081的博客 2287

Selenium教程04:鼠标+键盘网页的模拟操作

5.键盘操作,键盘对应的方法在Keys类中。Keys 类几乎提供了键盘上的所有按键方法,我们可以使用 send_keys + Keys 实现输出键盘上的组合按键如 “Ctrl + C”、“Ctrl + V” 等。3.move_to_element()鼠标悬停,当你把鼠标放在,百度更多位置时,就会出现更多的功能,这就是一个悬停的效果,选择里面的翻译进行点击操作。2.模拟鼠标拖动操作,该操作有两个必要参数,source:鼠标拖动的元素,target:鼠标拖至并释放的目标元素。百度搜索李白的示例键盘用法。

我的Python教程 2788

Altium Designer许可证冲突?手把手教你用Windows防火墙彻底禁止AD联网(附详细截图)

本文详细介绍了如何通过Windows防火墙精准管控Altium Designer的网络权限,解决许可证冲突问题。通过配置入站和出站规则,彻底阻断AD的联网行为,提升软件运行效率。适用于需要稳定使用Altium Designer的工程师,附有详细截图和高级验证方法。

weixin_38170137的博客 423

python uiautomator2详细使用方法

sssssss

pirate5211的博客 8004

FRM模型五:Brinson业绩归因

利用Brinson对基金组合业绩进行归因分析。

stonesssssss的博客 3006

DrMOS电路仿真

将驱动电路与功率MOS集成化后既是DrMOS。把驱动芯片以及上下桥MOSFET封装在一起,这样每一相供电就有了单独的驱动芯片,并且这种高度整合的MOSFET可以通过更高的电流、发热比传统的MOSFET也小很多且更节能 自举升压同步BUCK高低侧栅驱动电路原理及仿真 ...

Srambler的博客 5039

uiautomator2 安装使用教程

uiautomator2 安装使用教程

qq_42778518的博客 3059

视觉Transformer实战 | Token-to-Token Vision Transformer(T2T-ViT)详解与实现

Vision Transformer (ViT) 在计算机视觉领域取得了巨大成功,但标准的 ViT 存在一些局限性,如需要大规模预训练数据、对局部结构建模不足等。Token-to-Token ViT (T2T-ViT) 通过引入渐进式分词过程改进了原始 ViT,使其能够在中小型数据集上取得更好的性能。本节将详细介绍 T2T-ViT 的技术原理,并使用 PyTorch 从零开始实现 T2T-ViT。

盼小辉丶的博客 4万+

python+Selenium自动化操作Chrome模拟手机浏览器

mobileEmulation除了可以通过deviceName指定设备之外,还可以通过deviceMetrics指定设备指标,一般设备指标包含width: 设备宽度height: 设备高度piexelRatio: 设备像素密度userAgent:设备浏览器标识当然如果只需要测试不同分辨率的话也可以只设置width和height值。

测试-八戒 2681

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

利用 python+ selenium Chrome做手机端的自动化时,python代码如何设置手机模式

** 利用 python+ selenium Chrome做手机端的自动化时,python代码如何设置为手机模式 ** from selenium import webdriver #设置手机模式 class set_up(): def set_up(self): #mobileEmulation 移动仿真 self.mobileEmulation={‘deviceName’:‘iPhone 6/7/8’} #色差 self.options=webdriver.ChromeOptions() self.op

qq_43426281的博客 1632

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

十分钟弄懂最快的APP自动化工具uiautomator2(入门到精通)

前言 相信很多使用appium做过APP自动化的人都深有感触: appium运行慢、时间长 uiautomatorviewer定位元素时得关掉appium server 在低版本的appium上获取toast需要切换automationName 现在有一款自动化测试工具uiautomator2,它几乎完美的避免了以上的问题。简单易学,对新手足够友好。本次我们介绍一下这款工具,让你在十分钟之内能迅速掌握它 一、介绍 uiautomator2是uiautomator的升级版,uiautomator是

weixin_67553250的博客 3万+

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

Python uiautomator2 selenium 报错 adbutils.errors.AdbError: unknown host service

cmd 运行 adb 命令是正常的,但是使用 Python的adbutils 执行adb命令时就报adbutil。我原先的 adbutils 版本是 2.8.0 ,后来我给他重新安装成了 1.0.0 版本,所有问题都解决了。如果你以上方案都试了,还有一个可能尝试一下,就是 adb server 的版本和 adbutils 不兼容。你需要根据你的情况来选择合适的 adbutils版本。

u013471211的博客 1582

页面访问模拟

数据结构的应用

ga_zhou的博客 626

selenium如何开启手机模式

在Python中使用Selenium进行网页自动化测试或爬取时,如果你想模拟手机模式(即移动端浏览器模式),可以通过设置用户代理(User-Agent)和使用移动端的视口(Viewport)来实现。

得塔云的博客 2834

web ui自动化之模拟页面滑动 - 使用js

我们浏览web网站时,经常需要进行滑动页面操作。在Selenium自动化测试过程中,可以通过execute_script 执行js语句实现页面滑动。常见的滑动场景分为四种:滑动至底部、滑动至顶部、滑动至具体位置、滑动至目标元素可见。可以在浏览器–F12–切换到控制台,输入js代码,试验是否达到预期,在写进python代码中 代码如下(示例): 2.向上滑动至元素可见 代码如下(示例): 二、滑动页面至底部/顶部 1.滑动到页面底部 代码如下(示例): 2.滑动到页面顶部 代码如下(示例): 三、滑动页面指定

XiYang的博客 5040

Python实现自动化网页操作

python语言,selenium实现自动化网页操作

weixin_50249477的博客 1万+

【Python】Selenium根据网页页面长度,模拟向下滚动鼠标,直到网页底部的操作

分享几种在Python中根据页面长度模拟滚动鼠标的操作方法。

Meggie35的博客 2278

推荐一款模拟浏览器自动化操作神器!Mechanize

Mechanize是Python中的一个库,它被设计用来自动化网页浏览和数据提取任务。通过模拟真实浏览器的行为,如填写表单、点击链接、处理Cookie等,Mechanize使得开发者可以用脚本来自动执行这些通常需要人工操作的任务。这个库特别适合于那些需要与网站交互,比如自动登录或者爬取需要通过表单提交才能访问的内容的情况。

测试开发技术 799

前端如何通过代码模拟用户操作以及puppeteer的使用

经过一段时间的尝试后,我写下这篇文章,先说结论。前端是通过获取DOM元素后,执行如点击,获取焦点,设置滚动条高度等操作,总体而言,大部分场景够用,但是和其他爬虫或者类似按键精灵的软件是没法比的。核心差距在于,我们不能通过获取页面坐标,让鼠标主动去点击,也就是说js是被动的,它是通过监听用户的一系列操作去执行某些事,而不是我们通过代码去主动的做事。那么,对于前端模拟用户操作,我有三板斧,下文会详细说明。接下来我要好好介绍一下,puppeteer。为什么我要写它呢?...

接着奏乐接着舞的博客 4571

python 模拟人操作页面

selenium4 的一些使用心得

weixin_44980106的博客 1176

网页交互模拟:模拟用户输入、点击、选择、滚动等交互操作

Selenium是一个开源的自动化测试工具,支持多种编程语言(如Java、Python、C#等)和浏览器(如Chrome、Firefox、Edge等)。它通过WebDriver API与浏览器通信,能够模拟几乎所有用户在浏览器内部的行为。Selenium WebDriver是其核心组件,可以执行如点击、输入、滚动等操作,并验证页面上的元素状态。示例代码:使用Selenium在网页中输入文字# 创建一个Chrome浏览器实例# 打开目标网页# 找到输入框并输入文字。

这家伙很懒,什么都没有留下 3529
上一篇: postgresql 监控表的改动 添加log
下一篇: ubuntu 20.04.1 LTS配置eos
BraidTim
博客等级 码龄14年 24粉丝 12原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值