不理解你的问题,需要特殊的版本支持那你就安装特定的版本好了。
或者也可以导出 requerments.txt 文件之后一键安装。
请描述好你的问题,有条件可贴上代码方便排查
仅从 Log 日志中并没有看到明显的报错日志。
请考虑是否是因为你代码只写了打开,打开后代码立刻运行结束?
如上图,各个时间段关系大概是这样的,如果你要他稳定加载之后的时间,其实可以根据图中再计算一下,然后得出准确的一个稳定加载时间
实图展示仅仅是我根据命令输出值进行计算得到的一些数据,一会在帖子下面我会发其他参考链接,自己手动一下根据这些时间计算一下即可
更新回帖!时隔这么久我终于找到了问题所在
官方文档描述:
args is required for all calls and should be a string, or a sequence of program arguments. Providing a sequence of arguments is generally preferred, as it allows the module to take care of any required escaping and quoting of arguments (e.g. to permit spaces in file names). If passing a single string, either shell must be True (see below) or else the string must simply name the program to be executed without specifying any arguments.
If shell is True, the specified command will be executed through the shell. This can be useful if you are using Python primarily for the enhanced control flow it offers over most system shells and still want convenient access to other shell features such as shell pipes, filename wildcards, environment variable expansion, and expansion of ~ to a user’s home directory. However, note that Python itself offers implementations of many shell-like features (in particular, glob, fnmatch, os.walk(), os.path.expandvars(), os.path.expanduser(), and shutil).
文档大意:如果带上 shell=True ,那么会通过 shell 来启动进程。这意味着,一次 Popen 会启动两个进程,一个 shell 进程,一个命令进程。然后 Popen 返回的 pid 是 shell 进程的 pid,这会导致 Popen.kill() 等函数不起作用,进程还在正常运行,所以一定要使用参数列表的形式启动,不要通过命令行的形式,不要使用 shell=True 。
也算是无意之间看到大佬的这篇文档才了解为什么,链接附上,大佬文章里有更详细的解决与讲解:https://blog.csdn.net/u012849539/article/details/117457490
问题解决方案:
首先,把这个问题分为两个部分:接口响应耗时、页面渲染耗时(包括 onload,白屏时间,资源加载总时间等)
1、接口响应耗时部分,上面已经有人说了 f12 可行,这里不重复介绍
2、页面渲染耗时:
使用条件:只要你是在浏览器中都可行
使用方法:在 console 中输入 “window.performance.timing” 回车即可
字段解析:https://www.cnblogs.com/libin-1/p/6501951.html
实图展示:
想了解底层的这些时间具体怎么获取,可以了解下浏览器的 devtools-protocol 调试协议
已成功使用 jmeter 针对 docker 镜像服务开启压测
tidevice
我去看了大哥说的这个框架,貌似是跟我的场景不太符合,我这边使用 celery 主要是为了他的异步,对定时任务基本没有需求,硬用定时任务上异步的话暂时没有好的思路,可能不太符合了
好的哥,我先去简单看看,基本上只要满足可以实现异步就可以满足我的使用场景
上面描述太臭太长,换个描述:windows 系统中如何终止以 shell=True 参数启动的 subprocess.Popen 方法
环境需求:Android SDK;appium;python;一个开启了允许 webview 调试的 App;mixmproxy(代理抓包检测 h5 中接口,若不需要可以不要)
实现步骤:
1、启动 appium 服务
2、开启 mixmproxy 抓包、进入 h5 页面
3、使用 appium 切换到 webview 窗口中
4、在 webview 中执行 window.performance.timing 来获取 webview 页面加载性能
输出:
1、获取 webview 性能可以得到:DNS 连接耗时、重定向耗时、TCP 连接耗时、请求耗时、DOM 树加载耗时、白屏耗时、onload 耗时、domready 耗时、总耗时
2、根据 mixmproxy 可以得到:h5 页面中的所有接口情况,如:code、响应时间、资源大小和所有抓包数据
跟踪进度,先说一下已解决,方案采用的 performance,在 appium 中切换到 webview 然后使用 performance 获取页面性能,具体流程后续补充(如果使用 appium,那不需要 js 注入)
继续求助:
步骤:
1、初始化手机、启动 appium 服务
2、打开指定浏览器内核的 WebView(已经打开 debug 模式的套壳 APP、也使用手机 edge 浏览器打开尝试过)
3、访问指定的 url
4、使用 appium 方法 driver.execute_script(js) // 执行 js 代码注入
5、获取性能指标
问题步骤:4
问题描述:在第四步进行 js 注入时,出现报错:selenium.common.exceptions.WebDriverException: Message: Method is not implemented
问题分析:根据报错分析浏览器驱动问题,但是我电脑上驱动没有问题。要么是驱动需要跟手机上套壳 APP 内核/浏览器内核版本对应,要么是手机上浏览器内核驱动需要如何匹配一下
关于 js 注入:
1、编写了 appium 注入 js 代码的一段 python 代码,如下图 1
2、把 collector.js 放到了 tomcat 中并以 http 形式访问,url 也是 http 形式
感谢大佬最后一段话的建议,是我眼界受限了,其实我现在有一种感觉就是明明材料都找齐了但是好像又无法开展工作。听完最后一段话之后觉得,快速上手就好了!无非就是时间问题,感谢感谢。那我继续针对 webviewmonitor 开战研究
实时更进这些天的进度与设计思想:
暂时设计有四种模式并选择了模式三:
1、web 上打开这个链接
2、手机浏览器打开这个链接
3、app 套壳打开链接
利弊排除法分析:
1、四种方式,首先排除方案四,因为我这边还有一个需求就是对应用进行自动化稳定性测试,类似在应用里跑 monkey,而且方案四太重,总不能测 url 的时候输入一个 url 一个应用包
2、然后排除方案一的原因:
a、有的应用没法在 web 上使用,拿微信举个例子,人家会提示你请在手机上打开
b、如果我这个 h5 里面需要拍照,那就需要唤起手机系统的照相机权限,web 上直接歇逼
c、内核有一丝丝区别,web 上 chromedriver 内核或者其他,app 上的真实环境是用 webview 渲染的,虽然说 app 是 web 挪过去的,但是多少有点场景不同。会对内核的功能进行一些阉割或者增加
不太清楚你问的问题是什么,你是在问 selenium 吗?
兄弟,有个误点!
adb 命令无法真正改变充电状态,只是模拟!
可以了解一下智能控电 USBHUB 这一块东西(因为刚知道就过来回复了,没有牌子推荐,还是要从硬件 HUB 入手)
额。。。我需要了解的是 scrcpy 获取到的手机截屏怎么用 url 访问展示。scrcpy 跟 scrapy 比较相似但不是一个东西哈
使用 adb 命令改变充电状态:
adb shell dumpsys battery set status 2
1 充电 2 断电
你好,我说一下我的解决方法吧(仅支持安卓):
我自动化平台框架使用的是 Flask 框架,在框架中可以添加定时任务,设置的是每天九点充电,晚上十点断电。然后再将充电写入到初始化中,这样来解决长时间充电这个问题。晚上无人使用,就断电,晚上有人使用,就初始化充电继续使用。而且我改变的只是充电状态,与 USB 连接无关,USB 还是一直连接着的
上面地址是绿盟指定的标准,具体标准切合实际,然后参考它