Bosh sahifa Wiki Selenium

Selenium

Selenium — web browserlarni dasturiy boshqarish va web applicationlarni avtomatik test qilish uchun ishlatiladigan vositalar oilasi. U browser ochish, sahifaga o‘tish, element topish, click qilish, form to‘ldirish va natijani tekshirish imkonini beradi. Selenium turli dasturlash tillari va browserlar bilan ishlashi mumkin.

Selenium ko‘pincha E2E, regression va cross-browser testlarda qo‘llanadi.

WebDriver

Seleniumning markaziy qismi WebDriver standardiga tayanadi.

Test kodi browser driver yoki browserning automation endpointi bilan aloqa qiladi.

Buyruqlar:

  • navigate;
  • find element;
  • click;
  • type;
  • execute script;
  • screenshot;
  • cookie;
  • window.

Browser real rendering engine bilan ishlaydi.

Browser driver

Tarixan har browser uchun alohida driver binary ishlatilgan:

  • ChromeDriver;
  • GeckoDriver;
  • SafariDriver;
  • EdgeDriver.

Driver versioni browser bilan mos bo‘lishi kerak.

Zamonaviy tooling driver managementni avtomatlashtirishi mumkin.

Language binding

Selenium API bir nechta tillarda mavjud:

  • Java;
  • Python;
  • JavaScript;
  • C#;
  • Ruby;
  • Kotlin orqali Java API.

Jamoa application stackiga mos tilni tanlashi mumkin.

Browser behavior tilga bog‘liq bo‘lmasligi kerak.

Session

Har test yoki test guruhi WebDriver session yaratadi.

Session:

holatini saqlaydi.

Test tugagach quit bilan session yopiladi.

Faqat window’ni close qilish driver processini qoldirishi mumkin.

Locator

Element topish usullari:

  • ID;
  • CSS selector;
  • XPath;
  • name;
  • link text;
  • tag.

Stabil semantic yoki test uchun maxsus atribut afzal.

DOM hierarchy’ga bog‘langan uzun XPath refactor paytida tez buziladi.

WebElement

Topilgan DOM element WebElement sifatida ifodalanadi.

Unga:

  • click;
  • send keys;
  • text;
  • attribute;
  • displayed;
  • enabled

operationlari qo‘llanadi.

DOM qayta render bo‘lsa oldingi reference stale bo‘lishi mumkin.

Stale element

Element topilgandan keyin DOMdan olib tashlanib, o‘rniga yangi node yaratilsa StaleElementReference xatosi yuz beradi.

Yechim ko‘pincha elementni qayta topish.

Stale xatoni ko‘r-ko‘rona ko‘p retry qilish applicationdagi doimiy rerender muammosini yashirishi mumkin.

Explicit wait

Ma’lum condition bajarilishini kutadi:

  • element visible;
  • clickable;
  • URL;
  • title;
  • text;
  • frame;
  • alert.

Timeout ichida polling qilinadi.

Fixed sleepdan tezroq va barqarorroq.

Implicit wait

Element topish operationlariga global kutish muddati beradi.

Explicit wait bilan aralashtirilganda kutilmagan uzun timeoutlar yuz berishi mumkin.

Ko‘p jamoa explicit waitni nazoratliroq deb tanlaydi.

Page Object

Sahifa elementlari va actionlari alohida classda saqlanadi.

Masalan:

LoginPage.login(email, password)

Test business ssenariyni o‘qiydi.

Page object ichida assertionlarni haddan tashqari yashirish test maqsadini noaniq qilishi mumkin.

Grid

Selenium Grid testlarni bir nechta machine, browser va platformada parallel bajaradi.

Asosiy tushunchalar:

Cloud browser providerlar ham remote WebDriver endpoint beradi.

Remote WebDriver

Test local browser emas, boshqa serverdagi browserga ulanadi.

Capability orqali browser, version va OS tanlanadi.

Network latency har commandga ta’sir qiladi.

Juda ko‘p mayda browser command testni sekinlashtiradi.

Headless mode

Browser UI oynasiz ishlaydi.

CI server uchun qulay va kamroq grafik resurs talab qiladi.

Headless va headed behavior zamonaviy browserlarda yaqin, ammo rendering, permission yoki window size farqi tekshiriladi.

Frame va iframe

Iframe ichidagi elementni topishdan oldin driver contextni frame’ga o‘tkazadi.

Keyin default contentga qaytiladi.

Nested frame’lar context stackni murakkablashtiradi.

Cross-origin iframe ichidagi browser security qoidalari saqlanadi.

Window va tab

Yangi tab yoki popup alohida window handle oladi.

Test oldingi va yangi handle farqini topib, kerakli oynaga switch qiladi.

Tab tartibiga qattiq tayanish mo‘rt.

Yopilgandan keyin mavjud handle’ga qaytiladi.

Alert

JavaScript alert, confirm va prompt DOM elementi emas.

WebDriver alert API orqali ularni accept, dismiss yoki text bilan boshqaradi.

Alert ochiq paytda oddiy DOM commandlari xato berishi mumkin.

File upload

input[type=file] elementiga local file path yuboriladi.

Remote Gridda fayl remote node’ga uzatilishi kerak.

Native OS file dialogni keyboard automation bilan boshqarishdan ko‘ra input API barqarorroq.

Screenshot va log

Failure paytida screenshot, page source, browser console va networkga oid qo‘shimcha log olinadi.

WebDriver classic API network interceptionni cheklangan darajada beradi.

Browser DevTools integratsiyasi yoki proxy qo‘shilishi mumkin.

Parallel test

Har parallel test alohida WebDriver session va test data oladi.

Shared user yoki account conflict yaratadi.

Grid capacity va application environment maksimal concurrency’ga mos bo‘ladi.

Parallelizm oshsa backendning o‘zi load testga aylanib ketishi mumkin.

Selenium va zamonaviy tool’lar

Playwright va Cypress automatic wait, network control va zamonaviy API bilan boshqa yondashuv beradi.

Selenium esa uzoq tarix, keng til va browser ekotizimiga ega.

Tanlov jamoa, legacy suite, browser matrix va infrastructurega bog‘liq.

Capability

Remote session browser name, version, platform, proxy va boshqa capabilitylar bilan yaratiladi. Grid mos node tanlaydi. Noto‘g‘ri yoki qo‘llanmaydigan capability jim e’tiborsiz qolmasligi uchun session ma’lumoti reportda tekshiriladi.

Accessibility locator

Role va accessible name asosidagi selector user interfeysining semantik sifatini ham yaxshilaydi. Faqat test IDga tayanish accessibility muammosini ko‘rsatmaydi.

Bog‘liq tushunchalar

Selenium, WebDriver, Browser automation, Selenium Grid, WebElement, Explicit wait, Page Object, Cross-browser testing, E2E testing, Remote WebDriver