feat: 添加 meiguodizhi 地址接口支持,优化账单地址获取逻辑,跳过 Google 地址推荐

This commit is contained in:
QLHazyCoder
2026-04-26 04:31:51 +08:00
parent f454105ff5
commit ef52ff806b
6 changed files with 593 additions and 14 deletions
+54
View File
@@ -199,3 +199,57 @@ return { isPayPalPaymentMethodActive };
paypalButton.getAttribute = (key) => (key === 'aria-selected' ? 'true' : (paypalButton.id && key === 'id' ? paypalButton.id : ''));
assert.equal(api.isPayPalPaymentMethodActive(), true);
});
test('selectRegionDropdown opens the state dropdown and clicks the matching option', async () => {
const bundle = [
'function throwIfStopped() {}',
'function sleep() { return Promise.resolve(); }',
extractFunction('isVisibleElement'),
extractFunction('normalizeText'),
extractFunction('getActionText'),
extractFunction('getRegionCandidates'),
extractFunction('matchesRegionOption'),
extractFunction('getRegionDropdownValue'),
extractFunction('getVisibleRegionOptions'),
extractFunction('selectRegionDropdown'),
].join('\n');
const state = { opened: false };
const clicks = [];
const stateDropdown = createElement({
tagName: 'DIV',
text: 'State New South Wales',
attrs: {
role: 'combobox',
'aria-haspopup': 'listbox',
},
});
const options = [
createElement({ tagName: 'DIV', text: 'New South Wales', attrs: { role: 'option' } }),
createElement({ tagName: 'DIV', text: 'Western Australia', attrs: { role: 'option' } }),
];
const documentMock = {
querySelectorAll: (selector) => {
if (!state.opened) return [];
if (selector === '[role="listbox"] [role="option"]' || selector === '[role="option"]') return options;
if (selector === 'li') return [];
return [];
},
};
const windowMock = {
getComputedStyle: () => ({ display: 'block', visibility: 'visible' }),
};
const api = new Function('window', 'document', 'Event', 'clicks', 'stateDropdown', 'state', `
function simulateClick(el) {
clicks.push(el);
if (el === stateDropdown) state.opened = true;
}
${bundle}
return { selectRegionDropdown };
`)(windowMock, documentMock, Event, clicks, stateDropdown, state);
await api.selectRegionDropdown(stateDropdown, 'Western Australia');
assert.deepEqual(clicks, [stateDropdown, options[1]]);
});