-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathlike-tweet.js
67 lines (44 loc) · 1.97 KB
/
like-tweet.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
import puppeteer from 'puppeteer';
const TWEET_URL = '';
const USERNAME = '';
const PASSWORD = '';
(async () => {
const browser = await puppeteer.launch({ headless: false });
const page = await browser.newPage();
try {
console.log('Connexion à Twitter/X...');
await page.goto('https://x.com/login', { waitUntil: 'networkidle2' });
await page.waitForSelector('input[name="text"]', { visible: true });
await page.type('input[name="text"]', USERNAME);
await page.evaluate(() => {
const buttons = Array.from(document.querySelectorAll('button[role="button"]'));
const nextButton = buttons.find(button => button.innerText.includes('Next'));
if (nextButton) nextButton.click();
});
await page.waitForSelector('input[name="password"]', { visible: true });
await page.type('input[name="password"]', PASSWORD);
await page.waitForSelector('button[data-testid="LoginForm_Login_Button"]', { visible: true });
await page.click('button[data-testid="LoginForm_Login_Button"]');
await page.waitForNavigation({ waitUntil: 'networkidle2' });
console.log('Connexion réussie.');
console.log('Accès au tweet...');
await page.goto(TWEET_URL, { waitUntil: 'networkidle2' });
console.log('Attente du bouton "Like"...');
await page.waitForSelector('button[data-testid="like"]', { visible: true });
const isLiked = await page.$eval('button[data-testid="like"]', (likeButton) => {
return likeButton.getAttribute('aria-label').includes('Like') === false;
});
if (!isLiked) {
console.log('Le tweet n\'est pas encore liké. Liking...');
await page.click('button[data-testid="like"]');
console.log('Tweet liké avec succès.');
} else {
console.log('Le tweet est déjà liké.');
}
} catch (error) {
console.error('Une erreur est survenue :', error);
await page.screenshot({ path: 'error.png' });
} finally {
await browser.close();
}
})();