使用Laravel Dusk管理浏览器权限

2skhul33  于 2022-11-26  发布在  其他
关注(0)|答案(1)|浏览(107)

完全是拉拉维尔黄昏菜鸟(今天开始使用)。我想在我正在开发的Web应用程序上测试一个“复制链接”,在测试过程中,当我试图访问剪贴板内容时,遇到了浏览器权限问题。当然,这种默认行为是有道理的,因为谷歌Chrome会提示用户并请求访问剪贴板的权限。然而,我还没有找到告诉Dusk启用特定权限的方法。我发现下面的Cypress示例可能是执行此操作的适当方法,但我不知道是否有Dusk的等效方法。

cy.wrap(Cypress.automation('remote:debugger:protocol', {
  command: 'Browser.grantPermissions',
  params: {
    permissions: ['clipboardReadWrite', 'clipboardSanitizedWrite'],
    origin: window.location.origin,
  },
}))

提前感谢!

3zwjbxry

3zwjbxry1#

您可以将此函数添加到DuskTestCase类中。

use Facebook\WebDriver\Chrome\ChromeDevToolsDriver;
//

protected function grantPermission(Browser $browser, $permissions)
{
    try {
        $driver = $browser->driver;
        $devtools = new ChromeDevToolsDriver($driver);

        $result = $devtools->execute('Browser.grantPermissions', [
            "permissions" => $permissions,
        ]);

        return $result;
    } catch (\Exception) {
        return null;
    }
}

并在像这样的真实的测试用例中全局使用它

public function testClipboard()
{
    $this->browse(function (Browser $browser) {
       $this->grantPermission($browser, ["clipboardReadWrite", "clipboardSanitizedWrite"]);

       // Your test flow and assertion
    });
}

希望我的回答能有所帮助。

相关问题