Microsoft'ning kuchli javobi Selenium'ga. Auto-wait, kam kod, ko'p brauzer. 2-3x tezroq. Yangi loyihalarda #1.
75 daqiqa
Python kod
5 ta interaktiv
Kirish
Playwright nima?
19-darsda Selenium WebDriver o'rgandik. U zo'r โ lekin 2004 yilda yaratilgan. 2020 yilda Microsoft yangi asbob chiqardi: Playwright. Zamonaviy, tez, aqlli.
Asosiy atama
Playwright โ Microsoft tomonidan 2020 yilda yaratilgan zamonaviy automation framework. Python, JavaScript, Java, C# bilan ishlaydi.
Oddiy qilib: Playwright โ Selenium'ning "o'g'li". Kamchiliklarni bartaraf etib yaratilgan. Ayniqsa auto-wait โ eng katta farqi.
๐ก Sodda misol
Eski telefon vs Smartphone
Selenium โ Nokia 3310. Ishonchli, ko'pchilik biladi, lekin eski. Playwright โ zamonaviy smartphone. Tez, aqlli, ko'p narsa o'zi qiladi. Ikkalasi ham qo'ng'iroq qiladi โ lekin smartphone ko'proq narsani qiladi!
Playwright afzalliklari
Auto-wait โ element yuklanishini o'zi kutadi. Wait yozish kerak emas!
Tez โ Selenium'dan 2-3x tezroq ishlaydi
Multi-browser โ Chrome, Firefox, Safari โ bitta kod bilan
Codegen โ harakatlaringizni yozib, kod chiqaradi
Trace Viewer โ test muvaffaqiyatsiz bo'lsa, video ko'rasiz
Ishonchli โ "flaky test" muammosi kam
Savol: Selenium o'rgandim, endi Playwright ham kerakmi?
Ha! Eski loyihalar Selenium'da. Yangi loyihalar Playwright'ga o'tyapti. Ikkalasini bilish โ Middle QA darajasi. Intervyu'da juda kuchli javob berish imkoniyati!
1-qism
Selenium vs Playwright
Asosiy farqlarni bilib olaylik. Ikkisi ham brauzer automation โ lekin yondashuvlari farq qiladi.
๐ Selenium
2004 ยท WebDriver Protocol
Eng mashhur, ko'p loyihada
Java, Python, JS, C# hammasi
Wait o'zingiz yozasiz
Sekinroq
Ko'p eski dokumentatsiya
๐ญ Playwright
2020 ยท Microsoft ยท CDP
Yangi loyihalarda ommabop
Python, JS, Java, C#
Auto-wait o'zi kutadi
2-3x tezroq
Codegen, Trace Viewer bor
Batafsil taqqoslash
Xususiyat
๐ Selenium
๐ญ Playwright
Chiqarilgan yil
2004
2020
Wait (kutish)
O'zingiz yozasiz
Auto-wait o'zi qiladi
Tezlik
Normal
2-3x tezroq
Flaky tests
Ko'p bo'ladi
Kam bo'ladi
Multi-browser
Har biri alohida driver
Bir kodda hammasi
Codegen (Record)
Selenium IDE (alohida)
O'zi bor
Debug (Trace)
Yo'q
Trace Viewer bor
O'rnatish
Driver alohida
Hammasi birgalikda
Eski loyihalarda
Ko'p uchraydi
Yangi loyihalarda
Qaysi birini tanlash?
Eski loyiha + Selenium mavjud โ Selenium davom. Yangi loyiha boshlayapsiz โ Playwright. Intervyu โ Ikkalasini bilish + "Yangi loyihada Playwright tavsiya qilaman" deyish.
2-qism
O'rnatish va birinchi skript
O'rnatish Selenium'dan oson โ hamma narsa bitta buyruqda keladi.
hello.pyfrom playwright.sync_api import sync_playwright
with sync_playwright() as p:
# Brauzer ochish
browser = p.chromium.launch(headless=False)
# Yangi sahifa ochish
page = browser.new_page()
# URL'ga o'tish
page.goto("https://google.com")
# Sahifa nomini olishprint(page.title()) # โ "Google"
browser.close()
Codegen โ kodsiz yozish (bonuse!)
Playwright'ning eng zo'r xususiyati: harakatlaringizni yozib, kod chiqaradi!
terminal# Codegen ishga tushirish
playwright codegen testshop.uz
Brauzer ochiladi โ siz harakat qilasiz, o'ng tomonda Python kodi paydo bo'ladi. Selenium IDE kabi, lekin to'g'ridan-to'g'ri Playwright kodi!
3-qism
Asosiy buyruqlar
Playwright buyruqlari Selenium'ga o'xshash โ lekin qisqaroq va tozaroq.
Asosiy harakatlar
commands.py# Sahifaga o'tish
page.goto("https://testshop.uz")
# Bosish โ CSS, text, role bilan
page.click("#login-btn")
page.click("text=Kirish")
page.get_by_role("button", name="Kirish").click()
# Matn yozish
page.fill("#email", "test@uzum.uz")
# Tekshirish (assert)
page.wait_for_url("**/dashboard")
assert page.is_visible("text=Welcome")
# Screenshot (otladka uchun)
page.screenshot(path="result.png")
# Brauzer yopish
browser.close()
Zamonaviy locator'lar
Playwright Selenium'dan kuchli locator'larga ega:
locators.py# CSS (Selenium'dagi kabi)
page.click("#login-btn")
# Matn bo'yicha โ juda qulay!
page.click("text=Kirish")
# Role bo'yicha โ eng professional
page.get_by_role("button", name="Yuborish").click()
# Label bo'yicha (form uchun)
page.get_by_label("Email").fill("test@test.com")
# Placeholder bo'yicha
page.get_by_placeholder("Email kiriting").fill("test@test.com")
To'liq Login testi
login_test.pyfrom playwright.sync_api import sync_playwright
deftest_login():
with sync_playwright() as p:
browser = p.chromium.launch(headless=False)
page = browser.new_page()
page.goto("https://testshop.uz/login")
# Email va parol โ Wait kerak emas, o'zi kutadi!
page.fill("#email", "test@uzum.uz")
page.fill("#password", "Pass123!")
page.click("#login-btn")
# Dashboard ochilishini kutish
page.wait_for_url("**/dashboard")
# Tekshirishassert page.is_visible("text=Welcome")
print("โ Login test PASSED")
browser.close()
test_login()
Selenium'dagi kabi โ lekin WebDriverWait yo'q. Playwright o'zi kutadi!
๐ฏ Bog'lang
Playwright buyrug'i va vazifasini bog'lang
Har buyruq nima qiladi?
Playwright buyruq
page.goto(url)
page.fill(sel, text)
page.click(sel)
page.screenshot()
page.is_visible(sel)
Vazifa
Ekran rasmini saqlash
Sahifaga o'tish
Element ko'rinishini tekshirish
Maydonga matn yozish
Elementni bosish
0 / 5 juft
4-qism
Auto-wait โ Playwright sehri
Selenium'dagi eng katta muammo: element yuklanmagan paytda kod ishlaydi va xato beradi. Playwright bu muammoni yo'q qildi.
Muammo: Nima bu "flaky test"?
Flaky test nima?
Flaky test โ ba'zan o'tadi, ba'zan o'tmaydi. Kod o'zgartirilmagan, lekin natija turli xil. Eng asosiy sabab: sahifa hali yuklanmagan, kod esa darhol element izlaydi.
Selenium'da muammo
selenium_problem.py
driver.get("https://testshop.uz/products")
# โ Sahifa hali yuklanmagan โ element topilmadi xatosi!
button = driver.find_element(By.ID, "add-to-cart")
button.click()
# โ To'g'ri: Wait qo'shish kerak edi
button = WebDriverWait(driver, 10).until(
EC.element_to_be_clickable((By.ID, "add-to-cart"))
)
button.click()
Playwright'da yechim: Auto-wait
playwright_solution.py
page.goto("https://testshop.uz/products")
# โ Playwright o'zi kutadi โ xato bo'lmaydi!
page.click("#add-to-cart")
# WebDriverWait yozish KERAK EMAS
# Playwright element tayyor bo'lgunicha o'zi kutadi (30 sek max)
Playwright har click(), fill() oldidan element ko'rinishini, bosish mumkinligini va harakatlanmayotganini o'zi tekshiradi.
๐ฎ Auto-wait Demo
Sahifa kech yuklanmoqda โ nima bo'ladi?
Selenium va Playwright'ning farqini simulyatsiya orqali ko'ring. "Test ishga tushirish" tugmasini bosing:
๐ Selenium (Wait yozilmagan)
Kutilmoqda...
๐ญ Playwright (Auto-wait)
Kutilmoqda...
5-qism
Yon-yonga taqqoslash
Xuddi shu test โ Selenium va Playwright'da. Farqni o'z ko'zingiz bilan ko'ring.
Login testi
๐ Selenium (Python)
from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC
playwright codegen testshop.uz โ Brauzer ochiladi. TestShop'da login harakatini bajaring. Kod oynasidan Python kodini ko'chiring va ishga tushiring.
3
Selenium skriptini Playwright'ga aylantiring
19-darsda yozgan Login skriptingizni Playwright'da qayta yozing. WebDriverWait'larni olib tashlang โ auto-wait ishlashini ko'ring.
๐ก Portfolio uchun
GitHub'da ikkita repo: selenium-tests va playwright-tests. Intervyu'da: "Ikkalasini ham bilaman, yangi loyihada Playwright tavsiya qilaman" โ bu Middle darajasidagi javob!
Intervyuga tayyorlov
Intervyu savollari
Playwright โ zamonaviy kompaniyalar intervyusida tez-tez so'raladigan mavzu.
๐ก Har savol ustiga bosing โ javobni ko'rasiz.
Q1Playwright nima va Selenium'dan farqi?+
Javob: "Playwright โ Microsoft tomonidan 2020 yilda yaratilgan zamonaviy automation framework."
Asosiy farqlar:
Auto-wait โ har buyruqdan oldin element tayyor bo'lishini o'zi kutadi. Selenium'da WebDriverWait kerak edi.
Tezlik โ 2-3x tezroq ishlaydi
Flaky tests โ Playwright'da kamroq bo'ladi
Codegen โ harakatlarni yozib, kod chiqaradi
Trace Viewer โ xato bo'lsa video ko'rasiz
Pro javob: "Eski loyihalarda Selenium keng tarqalgan. Yangi loyihalarda Playwright tavsiya qilaman โ kam kod, ishonchli, tez."
Q2Auto-wait nima va nima uchun muhim?+
Javob: "Auto-wait โ Playwright'ning eng katta afzalligi. Har buyruq (click, fill, vsh.) bajarilishidan oldin Playwright o'zi kutadi:"
Element sahifada ko'rinadimi?
Element bosish mumkinmi?
Element harakatlanmayaptimi?
Ahamiyati: Selenium'da bu tekshiruvlarni WebDriverWait bilan o'zingiz yozardingiz. Ko'p kod + ko'p imkoniyat unutish. Playwright bu muammoni yo'q qildi.
Natija: Flaky testlar kamayadi. Kod qisqaradi. Testlar ishonchli bo'ladi.
Q3Playwright'da locatorlar qanday?+
Javob: "Playwright'da Selenium'dan kuchli locatorlar bor:"
CSS โ page.click("#id") โ oddiy va tez
text= โ page.click("text=Kirish") โ matn bo'yicha
get_by_role โ page.get_by_role("button", name="Submit") โ eng professional
get_by_label โ form'lar uchun ideal
get_by_placeholder โ input maydoni uchun
Pro maslahat:get_by_role โ eng yaxshi tanlov. Accessibility'ni ham test qiladi. Veb standartlariga mos.
Q4Codegen nima va qanday ishlatasiz?+
Javob: "Codegen โ Playwright'ning yozib olish xususiyati. Selenium IDE'ga o'xshaydi, lekin bevosita Playwright kodi chiqaradi."
Foydasi: Yangi sahifada tez prototip yaratish. Locatorni bilmasangiz โ Codegen o'zi topadi.
Q5Trace Viewer nima?+
Javob: "Trace Viewer โ Playwright'ning debug uchun kuchli xususiyati. Test muvaffaqiyatsiz bo'lsa, qadam-baqadam video ko'rasiz."
Yoqish:
browser.new_context(record_video_dir="videos/")
yoki pytest --tracing=on
Ko'rish:playwright show-trace trace.zip
Foydasi: Xato qayerda bo'lganini aniq ko'rasiz. Screenshot, network, console โ hammasi bir joyda.
Q6Yangi loyihada Selenium yoki Playwright?+
Javob: "Qaror loyihaga bog'liq:"
Yangi loyiha โ Playwright. Auto-wait, tez, zamonaviy.
Eski Selenium loyiha โ Selenium davom. Migration qimmat.
Mobil test kerak โ Appium (Selenium asosida).
Jamoa Java biladi โ Selenium yoki Playwright (Java'da ham bor).
Pro javob: "Men ikkalasini ham bilaman. Yangi loyihada Playwright tavsiya qilaman โ kam kod, ishonchli testlar, tez ishlaydi. Eski loyiha bo'lsa, Selenium bilan davom etamiz."
Q7Playwright'da multi-browser testing qanday?+
Javob: "Playwright'ning kuchli tomoni โ bitta kod bilan Chrome, Firefox, Safari'da test qilish:"
for browser_type in [p.chromium, p.firefox, p.webkit]:
browser = browser_type.launch()
page = browser.new_page()
# ... test kodingiz
Selenium'da har brauzer uchun alohida Driver sozlash kerak edi. Playwright'da โ bitta kod, 3 ta brauzer.