Skip to content

Instantly share code, notes, and snippets.

@iqiancheng
Last active February 8, 2025 14:40
Show Gist options
  • Save iqiancheng/e2607b654441223c598aaf06cce42173 to your computer and use it in GitHub Desktop.
Save iqiancheng/e2607b654441223c598aaf06cce42173 to your computer and use it in GitHub Desktop.
自动遍历删除淘宝购物车失效的商品(自动点击确认删除)淘宝购物车批量删除脚本(带确认框处理)
// 定义一个异步函数来处理删除操作
async function clearCart() {
// 使用更通用的属性选择器来找到所有商品项
const cartItems = document.querySelectorAll('[class*="trade-cart-item-info"]');
let deletedCount = 0;
const totalItems = cartItems.length;
console.log(`找到 ${totalItems} 个商品项`);
for (const item of cartItems) {
try {
// 在每个商品项中找到删除按钮
const deleteButtons = Array.from(item.querySelectorAll('[class*="cartOperationItem--"]'))
.filter(button => button.textContent === '删除');
if (deleteButtons.length > 0) {
const deleteButton = deleteButtons[0];
// 点击删除按钮
deleteButton.click();
// 等待确认弹窗出现
await new Promise(resolve => setTimeout(resolve, 500));
// 查找确认弹窗中的删除按钮
const confirmDeleteButton = Array.from(document.querySelectorAll('.ant-btn-primary'))
.find(button => button.textContent.includes('删除'));
if (confirmDeleteButton) {
// 点击确认删除按钮
confirmDeleteButton.click();
deletedCount++;
console.log(`成功删除第 ${deletedCount} 个商品`);
// 等待删除操作完成
await new Promise(resolve => setTimeout(resolve, 1000));
} else {
console.log('未找到确认删除按钮');
}
}
} catch (error) {
console.error('删除商品时出错:', error);
}
}
console.log(`批量删除完成! 共删除 ${deletedCount} 个商品`);
}
// 执行清空购物车操作
clearCart().catch(error => {
console.error('执行清空购物车操作时出错:', error);
});
// 定义选择器
const SELECTORS = {
CART_ITEM: '[class*="trade-cart-item-info"]',
INVALID_MARKER: 'div[class^="invalid"]',
DELETE_BUTTON: '[class*="cartOperationItem--"]',
CONFIRM_DELETE: '.ant-btn-primary'
};
// 定义一个异步函数来处理删除操作
async function clearInvalidItems() {
// 查找所有商品项
const cartItems = document.querySelectorAll(SELECTORS.CART_ITEM);
let deletedCount = 0;
let invalidCount = 0;
const totalItems = cartItems.length;
console.log(`找到 ${totalItems} 个商品项`);
for (const item of cartItems) {
try {
// 检查商品是否失效
const invalidEl = item.querySelector(SELECTORS.INVALID_MARKER);
if (invalidEl) {
invalidCount++;
console.log(`发现第 ${invalidCount} 个失效商品,准备删除...`);
// 在每个商品项中找到删除按钮
const deleteButtons = Array.from(item.querySelectorAll(SELECTORS.DELETE_BUTTON))
.filter(button => button.textContent === '删除');
if (deleteButtons.length > 0) {
const deleteButton = deleteButtons[0];
// 点击删除按钮
deleteButton.click();
// 等待确认弹窗出现
await new Promise(resolve => setTimeout(resolve, 500));
// 查找确认弹窗中的删除按钮
const confirmDeleteButton = Array.from(document.querySelectorAll(SELECTORS.CONFIRM_DELETE))
.find(button => button.textContent.includes('删除'));
if (confirmDeleteButton) {
// 点击确认删除按钮
confirmDeleteButton.click();
deletedCount++;
console.log(`成功删除第 ${deletedCount} 个失效商品`);
// 等待删除操作完成
await new Promise(resolve => setTimeout(resolve, 1000));
} else {
console.log('未找到确认删除按钮');
}
}
}
} catch (error) {
console.error('删除商品时出错:', error);
}
}
console.log(`批量删除完成! 共发现 ${invalidCount} 个失效商品,成功删除 ${deletedCount} 个`);
}
// 执行清空失效商品操作
clearInvalidItems().catch(error => {
console.error('执行清空失效商品操作时出错:', error);
});
// 定义一个异步函数来处理删除操作
async function clearInvalidItems() {
// 使用更通用的属性选择器来找到所有商品项
const cartItems = document.querySelectorAll('[class*="trade-cart-item-info"]');
let deletedCount = 0;
let invalidCount = 0;
const totalItems = cartItems.length;
console.log(`找到 ${totalItems} 个商品项`);
for (const item of cartItems) {
try {
// 检查商品是否失效
const msgElement = item.querySelector('[class*="msgWrapper--"]');
const isInvalid = msgElement && (
msgElement.textContent.includes('宝贝已不能购买') ||
msgElement.textContent.includes('卖家账号出错') ||
msgElement.textContent.includes('宝贝已不能购买,请联系卖家')
);
if (isInvalid) {
invalidCount++;
console.log(`发现第 ${invalidCount} 个失效商品,准备删除...`);
// 在每个商品项中找到删除按钮
const deleteButtons = Array.from(item.querySelectorAll('[class*="cartOperationItem--"]'))
.filter(button => button.textContent === '删除');
if (deleteButtons.length > 0) {
const deleteButton = deleteButtons[0];
// 点击删除按钮
deleteButton.click();
// 等待确认弹窗出现
await new Promise(resolve => setTimeout(resolve, 500));
// 查找确认弹窗中的删除按钮
const confirmDeleteButton = Array.from(document.querySelectorAll('.ant-btn-primary'))
.find(button => button.textContent.includes('删除'));
if (confirmDeleteButton) {
// 点击确认删除按钮
confirmDeleteButton.click();
deletedCount++;
console.log(`成功删除第 ${deletedCount} 个失效商品`);
// 等待删除操作完成
await new Promise(resolve => setTimeout(resolve, 1000));
} else {
console.log('未找到确认删除按钮');
}
}
}
} catch (error) {
console.error('删除商品时出错:', error);
}
}
console.log(`批量删除完成! 共发现 ${invalidCount} 个失效商品,成功删除 ${deletedCount} 个`);
}
// 执行清空失效商品操作
clearInvalidItems().catch(error => {
console.error('执行清空失效商品操作时出错:', error);
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment