如何单击文本与给定字符串 puppeteer 匹配的标签
How to click on an a tag who's text matches a given string puppeteer
我正在尝试为 supreme 网站编写一个采购机器人,作为自学 javascript 和 pupetteer 的一种方式。我无法找到一种方法来单击包含在函数中作为参数给出的文本的项目。这是我正在尝试的
'''
const puppeteer = require('puppeteer-extra');
const pluginStealth = require("puppeteer-extra-plugin-stealth");
puppeteer.use(pluginStealth());
const BASE_URL = "https://www.supremenewyork.com/shop/all";
const CHECKOUT_URL = "https://www.supremenewyork.com/checkout";
async function startBot(itemCategory) {
const browser = await puppeteer.launch({
args: ['--no-sandbox', '--disable-setuid-sandbox'],
headless: false
});
let page = await browser.newPage();
await page.goto(itemCategory);
return {page};
}
async function closeBrowser(browser) {
return browser.close();
}
async function addToCart(page, itemName) {
page.$$eval('a', as => as.find(a => a.innerText.match(itemName).click()));
}
async function checkout() {
const page = await startBot(categories['t_shirts']);
await addToCart(page, item_info['name']);
}
checkout();
'''
我得到的错误是:
TypeError: page.$x 不是函数
我这样做的方法正确吗?还是有更好的方法
这是 HTML
的简要概述
<div class="inner-article">
<a style="height:150px;" href="/shop/t-shirts/kw2h4jdue/dvor2fh76"><img width="150" height="150" src="//assets.supremenewyork.com/231423/vi/u13QfMEqLmM.jpg" alt="U13qfmeqlmm">
</a>
<h1>
<a class="name-link" href="/shop/t-shirts/kw2h4jdue/dvor2fh76">Knowledge Tee
</a>
</h1>
<p>
<a class="name-link" href="/shop/t-shirts/kw2h4jdue/dvor2fh76">Black
</a>
</p>
</div>
我想点击 class 那个文本是 'Knowledge Tee'
谢谢
page.$x
我认为应该是一个函数,所以那里出了点问题。
您还可以执行以下操作:
page.$$eval('a', as => as.find(a => a.innerText.match("Knowledge Tee").click()))
我正在尝试为 supreme 网站编写一个采购机器人,作为自学 javascript 和 pupetteer 的一种方式。我无法找到一种方法来单击包含在函数中作为参数给出的文本的项目。这是我正在尝试的
'''
const puppeteer = require('puppeteer-extra');
const pluginStealth = require("puppeteer-extra-plugin-stealth");
puppeteer.use(pluginStealth());
const BASE_URL = "https://www.supremenewyork.com/shop/all";
const CHECKOUT_URL = "https://www.supremenewyork.com/checkout";
async function startBot(itemCategory) {
const browser = await puppeteer.launch({
args: ['--no-sandbox', '--disable-setuid-sandbox'],
headless: false
});
let page = await browser.newPage();
await page.goto(itemCategory);
return {page};
}
async function closeBrowser(browser) {
return browser.close();
}
async function addToCart(page, itemName) {
page.$$eval('a', as => as.find(a => a.innerText.match(itemName).click()));
}
async function checkout() {
const page = await startBot(categories['t_shirts']);
await addToCart(page, item_info['name']);
}
checkout();
'''
我得到的错误是: TypeError: page.$x 不是函数
我这样做的方法正确吗?还是有更好的方法 这是 HTML
的简要概述<div class="inner-article">
<a style="height:150px;" href="/shop/t-shirts/kw2h4jdue/dvor2fh76"><img width="150" height="150" src="//assets.supremenewyork.com/231423/vi/u13QfMEqLmM.jpg" alt="U13qfmeqlmm">
</a>
<h1>
<a class="name-link" href="/shop/t-shirts/kw2h4jdue/dvor2fh76">Knowledge Tee
</a>
</h1>
<p>
<a class="name-link" href="/shop/t-shirts/kw2h4jdue/dvor2fh76">Black
</a>
</p>
</div>
我想点击 class 那个文本是 'Knowledge Tee'
谢谢
page.$x
我认为应该是一个函数,所以那里出了点问题。
您还可以执行以下操作:
page.$$eval('a', as => as.find(a => a.innerText.match("Knowledge Tee").click()))