如何使用Selenium实现Azure Media Player自动化测试
Selenium对接Azure Media Player自动化测试方案
完全可以直接通过Selenium + JavaScriptExecutor覆盖你提到的所有常规测试需求,绝大多数场景不需要额外引入其他插件。
控件自动化操作实现
AMP本身暴露了完整的原生JS API,所有播放器控件操作不需要模拟鼠标点击UI元素,直接通过JS调用API即可,稳定性远高于模拟UI交互:
- 常用操作直接调用AMP实例方法即可,Java环境下的示例代码:
JavascriptExecutor js = (JavascriptExecutor) driver; // 播放 js.executeScript("amp('your_amp_instance_id').play();"); // 暂停 js.executeScript("amp('your_amp_instance_id').pause();"); // 跳转到指定播放进度(单位:秒) js.executeScript("amp('your_amp_instance_id').currentTime(30);"); // 调整音量(取值范围0-1) js.executeScript("amp('your_amp_instance_id').volume(0.5);");
注意把代码里的
your_amp_instance_id替换成你页面中实际初始化的AMP实例ID即可
- 控件状态校验可以直接执行JS拿返回值做断言,不需要定位DOM元素:
// 校验当前是否处于播放状态 Boolean isPlaying = (Boolean) js.executeScript("return amp('your_amp_instance_id').paused() === false;"); // 获取当前播放进度做断言 Double currentTime = (Double) js.executeScript("return amp('your_amp_instance_id').currentTime();");
内容校验场景实现
- 文本类校验:包括错误提示、字幕内容、控件文案等,既可以用Selenium原生的元素定位方法获取DOM文本做断言,也可以直接通过JS读取AMP实例的配置、状态属性做校验,两种方式都能满足需求。
- 静态图像校验:包括播放器封面、暂停贴片、控件图标等内容,直接用Selenium自带的截图功能截取播放器对应元素区域,和基准图做像素对比即可。
- 视频帧校验:常规场景下先通过JS把播放器跳转到指定时间点,等待帧渲染完成后截取播放器区域做图像对比即可,不需要额外插件。只有当你需要做毫秒级帧精准匹配、或者需要脱离渲染层校验视频源本身的帧内容时,才需要额外引入ffmpeg这类工具做本地抽帧对比,这类场景在常规功能测试中极少用到。
实操注意点
- 不要优先选择模拟点击播放器控件的方式写用例:AMP的控件是动态渲染的,不同皮肤、不同播放状态下DOM结构会发生变化,直接调用API的方式维护成本低、执行稳定性高。
- 执行JS操作前加显式等待:判断页面对应的AMP实例已经初始化完成(即
typeof amp !== 'undefined'且对应ID的实例可正常调用方法),避免出现实例不存在的报错。
内容的提问来源于stack exchange,提问作者Madhu Velpuri
相关产品推荐
相关产品推荐

