javascript-Testcafe LocalStorage问题

前端之家收集整理的这篇文章主要介绍了javascript-Testcafe LocalStorage问题 前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

大家!
我是TestCafe的新手,我需要一些想要实现的帮助.

我有一个React网站,我在上面放置了一个Facebook登录名.通常,当您进入页面并单击“使用Facebook登录”时,会打开一个弹出窗口并正常输入您的凭据.之后,您将被重定向页面,令牌被保存在localStorage变量中,供页面稍后使用.

但是,当我运行登录过程测试时,Testcafe而不是打开弹出窗口,而是在同一页面上打开Facebook表单,并且从不重定向到该页面.

另外,我尝试使用ClientFunction(以及Roles)在localstorage上设置一些虚拟令牌,但我的网站永远无法到达该令牌,因为testcafe似乎将此变量放在了称为Hammerhead的键上

因此,我的问题是,如何在测试中或手动输入此令牌,以便我的网站可以读取它并进行一些功能

到目前为止,这就是我所拥有的.

@H_301_16@/* global test,fixture */ import { WelcomePage } from './pages/welcome-page' import {ClientFunction,Role} from 'testcafe'; const welcomePage = new WelcomePage() const setLocalStorageItem = ClientFunction((prop,value) => { localStorage.setItem(prop,value); }); const facebookAccUser = Role(`https//mypage.net/`,async t => { await setLocalStorageItem('token','my-token'); },{ preserveUrl: true }); fixture`Check certain elements`.page(`https//mypage.net/`) test('Check element is there',async (t) => { await t .navigateTo(`https//mypage.net/`) .wait(4000) .useRole(facebookAccUser) .expect(cetainElementIfLoggedIn) .eql(certainValue) .wait(10000) })

任何帮助将不胜感激

谢谢你的时间.

最佳答案
当前,TestCafe不支持多个浏览器窗口.因此,无法通过Facebook弹出表单登录.
但是,有一种解决方法.请参考以下线程https://github.com/DevExpress/testcafe-hammerhead/issues/1428.

我的工作测试如下所示:

@H_301_16@import { Selector,ClientFunction } from 'testcafe'; const patchAuth = ClientFunction(() => { window['op' + 'en'] = function (url) { var iframe = document.createElement('iframe'); iframe.style.position = 'fixed'; iframe.style.left = '200px'; iframe.style.top = '150px'; iframe.style.width = '400px'; iframe.style.height = '300px'; iframe.style['z-index'] = '99999999'; iframe.src = url; iframe.id = 'auth-iframe'; document.body.appendChild(iframe); }; }); fixture `fixture` .page `https://www.soudfa.com/signup`; test('test',async t => { await patchAuth(); await t .click('button.facebook') .switchToIframe('#auth-iframe') .typeText('#email','****') .typeText('#pass','****') .click('#u_0_0') .wait(30e3); });

请记住,需要使用testcafe-hammerhead模块中的x-frame-options进行操作.

另外,我想提及的是,在多个浏览器窗口中进行测试是我们的优先任务之一,它是TestCafe Roadmap的一部分

猜你在找的JavaScript相关文章