Files
050-tinder-auto-find-match/docs/wiki/Home-ms.md
Tirsvad a1b9e7caa6
TirSystem/git-workflows: OpenGrep / opengrep (push) Skipped
TirSystem/git-workflows: Publish wiki / publish-wiki (push) Skipped
TirSystem/git-workflows: Sync GitHub mirror metadata / sync-metadata (push) Skipped
TirSystem/git-workflows: Publish accepted milestones / publish (push) Skipped
TirSystem/git-workflows: Validate / validate (push) Skipped
TirSystem/git-workflows: Validate / validate (pull_request) Successful in 38s
TirSystem/git-workflows: OpenGrep / opengrep (pull_request) Successful in 3m59s
Flatten wiki to Home.md, Home-da.md and Home-ms.md for the wiki publisher
2026-11-03 10:45:46 +08:00

61 lines
2.5 KiB
Markdown

# Hari 50 - Tinder auto find match (Bahasa Malaysia)
[English](Home) · [Dansk](Home-da)
Matlamat: mengautomasikan log masuk dan "like" profil di TinDog menggunakan
Python dan Selenium. Etika dahulu: beritahu pasangan anda bahawa anda
menggunakan automasi, dan patuhi had harian (TinDog 20, Tinder percuma 100).
## Langkah 1 - Lihat laman web secara manual
![Laman utama](../screenshots/01-home.png)
**Apa yang kita pelajari:** sebelum menulis kod, klik sendiri dan catat elemen
yang perlu disasarkan. Locator yang baik datang daripada mengenali halaman.
## Langkah 2 - Pergi ke halaman log masuk
![Modal log masuk](../screenshots/02-login-modal.png)
**Apa yang kita pelajari:** `driver.get`, locator XPath (`locators.py`) dan
menunggu dengan `WebDriverWait` + `element_to_be_clickable` dan bukannya
`sleep` tetap. Ini mengelakkan `NoSuchElementException` pada halaman yang
perlahan.
## Langkah 3 - Tetingkap timbul Facebook
![Tetingkap Facebook](../screenshots/03-facebook-popup.png)
**Apa yang kita pelajari:** log masuk membuka tetingkap pelayar kedua. Kita
bertukar dengan `driver.window_handles` dan `switch_to.window`, mengisi borang,
kemudian kembali. Kelayakan disimpan dalam pemboleh ubah persekitaran, bukan
dalam kod.
## Langkah 4 - Tutup semua permintaan
Lokasi ([04](../screenshots/04-location.png)), pemberitahuan
([05](../screenshots/05-notifications.png)), kuki
([06](../screenshots/06-cookies.png)).
![Kuki](../screenshots/06-cookies.png)
**Apa yang kita pelajari:** tetingkap modal menghalang semua yang di
belakangnya. Kita klik ALLOW, NOT INTERESTED dan I ACCEPT, dan langkau yang
tidak muncul (`TimeoutException` dikendalikan dan dilog).
## Langkah 5 - Tekan Like
![Like](../screenshots/07-liking.png)
![Tetingkap padanan](../screenshots/08-match-popup.png)
**Apa yang kita pelajari:** pengecualian sebagai kawalan aliran untuk UI yang
tidak stabil: `NoSuchElementException` bermaksud "masih memuat, tunggu 2 saat
dan cuba lagi"; `ElementClickInterceptedException` bermaksud "tetingkap padanan
menghalang, klik BACK TO TINDER". Jeda antara "like" menjadikan bot kurang
ketara. Gelung berhenti pada had yang ditetapkan.
![Selesai](../screenshots/09-done.png)
## Pemodenan berbanding penyelesaian terdahulu
- Pakej `src/` dengan satu fungsi bagi setiap langkah dan bukannya satu kelas
dengan `sleep`.
- Penantian eksplisit; semua locator di satu tempat.
- Log masuk Facebook (seperti pelajaran) dan bukannya Google; tetapan dalam
dataclass `Settings`; ujian unit dengan pemacu palsu.
- Tiada `from constants import *`, tiada longgokan HTML.