在chrome API中,有两个功能在理论上指向同一个evet.
chrome.webNavigation.onCompleted并 chrome.tabs.onUpdated.addListener与changeinfo=complete.
这两者之间有什么区别,哪一个保证页面中的外翻已加载.我发现chrome.tabs.onUpdated.addListener即使很少有http请求存在,有时也会发生火灾.
我正在用Jest + Puppeteer取代CasperJS.将所有内容放在一个文件中效果很好:
beforeAll(async () => {
// get `page` and `browser` instances from puppeteer
});
describe('Test A', () => {
// testing
});
describe('Test B', () => {
// testing
});
afterAll(async () => {
// close the browser
});
Run Code Online (Sandbox Code Playgroud)
现在,我真的不想将所有内容保存在一个文件中.维护更难以运行部分测试(例如,只是'测试A').
我查看了Jest文档并阅读了有关setupScript的内容.它会很完美,但它会在每个测试文件之前运行.我不想要这个,因为puppeteer设置需要花费很多时间.无论我运行多少个测试文件,我都希望重复使用相同的浏览器实例并只支付一次设置成本.
所以,我想到了:
// setup puppeteer
await require('testA')(page, browser, config);
await require('testB')(page, browser, config);
// cleanup
Run Code Online (Sandbox Code Playgroud)
这解决了模块化问题,重用了相同的浏览器实例,但不允许我单独运行测试.
最后,我偶然发现了创建自定义testEnviroment的可能性.这听起来很棒但是没有很好的文档记录,所以我甚至不确定每个测试文件是创建env实例,还是每次运行Jest.稳定的API也是一个缺少一种setup方法,我可以设置puppeteer(我必须在构造函数中执行,不能是异步).
由于我是Jest的新手,我可能会遗漏一些明显的东西.在我深入研究之前,我会问这里.
我正在构建一个网页,我遇到了一些并发问题.基本上,我有三个脚本文件,我用来保存一些数据:
script1.js:
var myValue = 1;
Run Code Online (Sandbox Code Playgroud)
script2.js:
var myValue = 2;
Run Code Online (Sandbox Code Playgroud)
script3.js:
var myValue = 3;
Run Code Online (Sandbox Code Playgroud)
我有一个页面,mypage.html,基本上看起来像这样:
<html>
<script>
function get_number()
{
var script_file = GetQueryStringValue( "run" );
e = document.createElement('script');
e.type='text/javascript';
e.src = script_file + ".js"
head.appendChild( e );
document.write( myValue );
}
</script>
<body onload="get_number()">
<div onclick="get_number()">Click me!</div>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
这个页面的主要思想是你会这样查询它:
mypage.html?run=script1
它会告诉get_number()函数动态插入script1.jsmypage.htm.然后,我调用get_number()显示从脚本加载的值.
现在,我已经将上述内容简化为我认为的相关部分,显然我遗漏了很多东西.我的实际代码加载了大量的值并且更有趣......但是,我希望有人可以帮助我解决这个问题.
我发现在IE中,数字显示正确.
在Firefox,Chrome和Safari中,我收到一个myValue未定义的错误.但是,如果单击Click me我创建的div,则数字会正确显示.所以,我知道我正在加载javascript外部文件.但是,它只是没有及时加载我的get_number()功能正常工作onload.
现在,我稍微修改了我的文件,以便get_number函数看起来像这样:
function get_number() …Run Code Online (Sandbox Code Playgroud) 在测试我们的Express端点时,我们发现一些具有长查询字符串(/?x[0]=0&x[1]=1 ... &x[100]=100)的特定请求失败.应用程序正在响应HTTP 400(错误的请求).首先,我们认为查询太长,并且它被firewall/nginx阻止,或者我们正在遇到某种nodejs/express限制.然而,经过一些实验,我们发现/?x[21]=21在/?x[20]=20工作正常时失败了.这是为什么?