gpt4 book ai didi

javascript - 用 RequestHook 覆盖浏览器语言

转载 作者:行者123 更新时间:2023-11-29 22:53:21 25 4
gpt4 key购买 nike

我正在通过浏览器设置在支持多种语言的 Web 应用程序上编写测试。

我写了一个 RequestHook 覆盖了 Accept-Language header 。但是,这似乎不起作用。语言似乎总是 en-US(我猜是我的系统?)

import { Selector } from 'testcafe';
class LanguageRequestHook extends RequestHook {
constructor(language, requestFilterRules) {
super(requestFilterRules, {
includeHeaders: true,
includeBody: true});
this.language = language;
}
async onRequest(event) {
event.requestOptions.headers['Accept-Language'] = this.language;
}
async onResponse(responseEvent) {
//Nothing
}
}

const dutchLanguageHook = new LanguageRequestHook('nl-NL');

fixture('hook test').page('https://www.wikipedia.org/').requestHooks(dutchLanguageHook);

test('test dutch wiki', async t => {
await t.expect(Selector('.localized-slogan').innerText).eql('De vrije encyclopedie');
});

使用我的 RequestHook 我希望请求表明它需要荷兰语维基百科页面而不是英语版本。 RequestHook 确实在我的调试器中被调用。

最佳答案

您的代码看起来是正确的。确保您可以通过更改正在测试的网站上的“接受语言” header 来设置语言。您提供的示例不起作用,因为维基百科网站不支持通过更改“接受语言” header 设置的语言。您可以通过运行以下脚本来检查这一点:

const rp      = require('request-promise');
const cheerio = require('cheerio');

const options = {
url: 'https://www.wikipedia.org/',

headers: {
'Accept-Language': 'nl-NL'
}
};

rp(options)
.then(body => {
return cheerio.load(body);
})
.then($ => {
console.log($('.localized-slogan').text());
})
.catch(e => console.error(e));

关于javascript - 用 RequestHook 覆盖浏览器语言,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57039014/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com