存档

‘开发’ 分类的存档

如何自动打开Chrome的开发者工具(devtools)

2020年1月15日 没有评论

有时候为了调试方便,我们需要Chrome开始运行时就自动打开开发者工具(devtools)控制台。如何实现呢?

Chrome启动时支持众多选项,可在命令行中运行chrome可执行程序,后边添加–auto-open-devtools-for-tabs参数即可。即chrome.exe –auto-open-devtools-for-tabs

需要注意的是,此参数仅对首个chrome浏览器生效,如果已经打开了其他的chrome浏览器,需要先关闭。

或者,追加–user-data-dir=./即可。

即chrome.exe –auto-open-devtools-for-tabs –user-data-dir=./

分类: 开发, 资料 标签:

阿里云ECS程序开机启动失败原因及解决办法

2020年1月10日 没有评论
  1. 场景描述:
    • 程序a、b均部署在阿里云ecs上,需要开机启动。a需要获取ecs的ip地址,b有较多依赖项。
    • 将a、b启动脚本均配置在rc.local中
    • a存在获取不到ip地址的情况,b存在启动失败的情况
  2. 解决办法:
    • 不通过rc.local启动
    • 将a、b启动脚本配置在crontab中,前面加上@reboot即可:
      @reboot start_a.sh
    • 对于a,需要等待阿里云后台服务启动完成之后才运行。这个需要修改crond.service。如下,追加cloud-final.service即可
      cat /etc/systemd/system/multi-user.target.wants/crond.service
      
      [Unit]
      Description=Command Scheduler
      After=auditd.service systemd-user-sessions.service time-sync.target <span style="color: #0000ff;">cloud-final.service</span>
分类: Shell, 资料 标签: ,

公网弹性云虚拟主机中Selenium Grid节点通信配置方法

2019年12月16日 没有评论

通常我们的自动化测试系统是部署在公司内网的,用于日常的功能验证。这时,Selenium hub和node节点之间只需要绑定本地ip即可,即配置-host localIp。

但是如果在诸如阿里云ECS、亚马逊EC2等云虚拟主机中部署hub和node,并且需要通过公网地址通信,则发现这样配置是行不通的。

  • 弹性云虚拟主机通常不配备独立的公网网卡,而是绑定弹性公网ip,这类公网ip无法通过ifconfig查询到,若host指定这类ip,selenium会因无法绑定ip地址而不能运行。
  • 对于hub节点,可通过绑定所有地址来监听node请求:-host 0.0.0.0
  • 对于node节点,首先通过-hub指定hub节点的公网ip。然后显式配置remoteHost参数:-remoteHost http://nodePublicIp:port。这个remoteHost会在node向hub注册时发送给hub,告诉hub需要通过remoteHost来给node发送指令。可不指定-host,selenium自动绑定本地localIp。

如此,我们就可以在公网使用不同服务商提供的弹性主机,来进行自动化测试了。

js检测网页视频是否有流的两种方法

2019年10月12日 没有评论

当前web页面一般通过video标签来播放视频(点播或直播),我们在做音视频的自动化测试时,需要通过程序自动检测是否有视频流。

在具体的实践中,有两种方法可以实现视频流的检测:

  1. video标签的属性
    var video = document.getElementsByTagName('video');
    var isPalying = !(video.paused || video.ended || video.seeking || video.readyState < video.HAVE_FUTURE_DATA);
  2. 比较不同时刻的视频图像
    • 在页面上构造一个canvas,在其上绘制当前视频的图像
    • 通过getImageData获取图像的RGBA数据,简单计算(如求和)得到一个数值
    • 隔一段时间(如1秒)再依次获取若干图像的计算值
    • 通过比较这几个图像计算值是否相等,可以判断这段时间内是否有活动的视频流
  3. 可综合上述两种方法进行视频流的检测

方法2详细细节可加QQ群【KITE-WebRTC自动化测试】讨论。

shell脚本异步执行多任务并等待任务结束

2019年6月21日 没有评论

通常情况下,shell脚本中每条命令都是逐条按顺序执行的。如果想同时执行多条命令,并在所有命令完成后退出,这该如何实现?

我们可以在需要异步执行的命令后加&来实现后台运行,同时,使用wait来等待后台任务执行完成。

比如:

#!/bin/sh
i=0
while [ $i -lt 3 ];do
    long_time_task &
    let i++
done
wait
分类: Shell 标签:

FFmpeg多段视频拼接并实现淡入淡出效果

2019年6月21日 没有评论

假设有三段视频s1.mp4、s2.mp4、s3.mp4,长度均为10秒。

我们想要将这三段视频拼接起来,并且每两段视频之间有淡入淡出的效果。

以下为实现方法:

ffmpeg -i .\s1.mp4 -i .\s2.mp4 -i .\s3.mp4 –filter_complex “[0:v]fade=t=out:st=8:d=3:color=333333[v0];[1:v]fade=t=in:st=0:d=3:color=333333[v1_i];[v1_i]fade=t=out:st=8:d=3:color=333333[v1_o];[2:v]fade=t=in:st=0:d=3:color=333333[v2];[v0][v1_o][v2]concat=n=3:v=1:a=0[v3];[0:a][1:a][2:a]concat=n=3:v=0:a=1[a1]” –map “[v3]” –map “[a1]” -y out.mp4

这里,首先对每段视频使用fade滤镜,其中对s1设置最后3秒淡出,对s2设置开头3秒淡入和最后3秒淡出,对s3设置开头3秒淡入;然后分别对三段视频和三段原始音频进行拼接;最后将拼接的视频和音频合成为输出视频。

这里运用到FFmpeg以下相关概念:

  • filter_complex滤镜图
  • stream选择:[File:StreamType:StreamIndex]
  • stream映射:map
  • fade滤镜
  • concat滤镜
分类: 开发 标签: