2

我一直在使用 chrome(会议客户端)中的 web 应用程序,它使用 webRTC(需要麦克风和摄像头访问),同时尝试使用本地安装的 chrome 浏览器执行测试。

Testcafe 触发的 Chrome 实例不允许麦克风和摄像头的访问。有没有办法像我们对 Selenium 和 Protractor 那样传递 chrome 功能?

提供了一些浏览器堆栈插件的替代方案,但是我们正在考虑为本地安装的浏览器实现它,我们可以在其中启用麦克风和摄像头访问。

尝试的解决方法:厌倦了使用 chrome 浏览器相关参数(例如--use-fake-ui-for-media-stream --use-fake-device-for-media-stream. (不成功)

测试代码:

import {Selector, t} from 'testcafe';

fixture(`Test Page`)
    .page('XXXXXXXXXXXXXX');

test('Validating Sanity of WebApp', async t => {
    await t
    .click(Selector('#create_meeting_btn1'));
});

命令行触发代码:

testcafe chrome test.js

4

1 回答 1

2

Chrome 不允许getUserMedia从不安全的来源调用 API。您需要通过 HTTPS 运行 TestCafe。请参阅此评论中的分步说明,如下所述。

  1. localhost启动 TestCafe 时指定为主机名:

    testcafe --hostname localhost ...
    
  2. 在您的操作系统中获取有效的 SSL 证书或将自签名证书注册为有效,并在 TestCafe 中启用 HTTPS 模式:

    testcafe --ssl pfx=/path/to/cert.pfx ...
    

我已经尝试了以下示例,它对我有用--hostname localhost

fixture `WebRTC`
    .page`https://webrtc.github.io/samples/src/content/getusermedia/canvas/`;

test(`test`, async t => t.wait(30000));
于 2019-10-15T14:35:24.507 回答