← Ana Səhifəyə qayıt
// hər kəs üçün açıqdır

Automation QA Lab

Selenium ilə automation əsasları — nəzəriyyə + real element playground.

🌐

Selenium WebDriver

Brauzeri proqram vasitəsilə idarə edən açıq mənbəli alət. Chrome, Firefox, Safari, Edge dəstəkləyir.

WebDriver driver = new ChromeDriver();
driver.get("https://anarabbas.az");
driver.quit();
🎯

Locator Strategiyaları

Element tapmağın 6 əsas üsulu. Prioritet: ID → Name → CSS → XPath.

driver.findElement(By.id("username"));
driver.findElement(By.cssSelector("#btn"));
driver.findElement(By.xpath("//input[@id='x']"));

Wait Strategiyaları

Element yüklənməsini gözləmək üçün 3 üsul. Explicit Wait ən çox tövsiyə edilir.

// Explicit Wait
WebDriverWait wait = new WebDriverWait(driver, 10);
wait.until(ExpectedConditions
  .visibilityOfElementLocated(By.id("el")));
🏗️

Page Object Model

Hər səhifəni ayrı class-da saxlayan dizayn pattern. Test kodu clean, maintenance asandır.

public class LoginPage {
  @FindBy(id = "username")
  WebElement usernameField;

  public void login(String user) {
    usernameField.sendKeys(user);
  }
}
🤸

Actions Sinifi

Hover, drag&drop, double click, right click kimi mürəkkəb mouse əməliyyatları üçün.

Actions actions = new Actions(driver);
// Hover
actions.moveToElement(element).perform();
// Drag & Drop
actions.dragAndDrop(src, target).perform();

JavaScriptExecutor

Selenium ilə çatmayan elementlər üçün birbaşa JS icra etmə. Scroll, click, dəyər set etmə.

JavascriptExecutor js =
  (JavascriptExecutor) driver;
// Scroll to element
js.executeScript("arguments[0].scrollIntoView()", el);
// Click
js.executeScript("arguments[0].click()", el);
⚙️ Automation QA — Hər kəs üçün açıqdır

Interactive Element Playground

Sol menyudan element kateqoriyasını seçin, sağda məşq edin. Hər elementin locator-u göstərilir.

Text Box & Input Fields

Müxtəlif input tipləri ilə məşq edin. Hər sahənin ID-si göstərilir.
Full Name #fullName
Email #userEmail
Phone #phone
Password #passField
Current Address #currentAddress
Date #datePicker
XPath: //input[@id='fullName']
CSS: #fullName  |  Selenium: driver.findElement(By.id("fullName")).sendKeys("text")

Buttons

Müxtəlif button tipləri, disabled state, click event-ləri.
CSS: #clickBtn
Selenium: driver.findElement(By.id("clickBtn")).click()

Checkbox & Radio Button

Checkbox seçimləri və radio qrup elementi.

Checkboxes:

Radio Buttons:

CSS: #cb1
Selenium: if(!driver.findElement(By.id("cb1")).isSelected()) el.click()

Select & Dropdown

Native <select> və custom dropdown elementləri. Selenium Select sinifi.
Framework seçin #frameworkSelect
Multi-select #multiSelect
Custom Dropdown #customDropdown
Seçin...
🐛 Bug Tracking
📋 Test Management
🔄 CI/CD Pipeline
📊 Test Reporting
CSS: #frameworkSelect
Selenium: new Select(driver.findElement(By.id("frameworkSelect"))).selectByVisibleText("Selenium")

Web Table

Table element-lərini tapın, sıra/sütun dəyərləri ilə işləyin.
AdSoyadEmailMaaşStatus
AnarAbbasanar@abb.az₼3500Active
NigarƏliyevanigar@test.az₼2800Pending
TuralHüseynovtural@test.az₼4200Active
LeylaMəmmədovaleyla@test.az₼3100Inactive
CSS: #webTable tbody tr:nth-child(1) td:nth-child(1)
XPath: //table[@id='webTable']//tr[1]/td[1]

Sliders & Progress

Range slider elementləri ilə məşq edin.
Temperature #tempSlider 50°C
Volume #volumeSlider 75%
Progress Bar #sliderProgressBar 30%
CSS: #tempSlider
Selenium: js.executeScript("arguments[0].value=80; arguments[0].dispatchEvent(new Event('input'))", slider)

Alerts & Modals

Modal pəncərə, alert və confirm dialog elementləri.
CSS: #openModal  |  Modal overlay: .modal-overlay
Alert: driver.switchTo().alert().accept()  |  Dismiss: .dismiss()

Drag & Drop

Sürükle-bırak elementlər ilə məşq edin.

Bu elementləri aşağıdakı zonaya sürükləyin:

🐛 Bug #1
📝 Test Case
✅ Pass
❌ Fail
Bura sürükləyin ↓
Source: #drag1  |  Target: #dropZone
Selenium: new Actions(driver).dragAndDrop(source, target).perform()

iFrame

iFrame içindəki elementlərə keçid. Selenium-da switchTo() tələb olunur.
iFrame: #demoFrame
Selenium: driver.switchTo().frame("demoFrame") → element tap → driver.switchTo().defaultContent()

Upload & Download

Fayl yükləmə və endirilməsi. Selenium-da sendKeys() ilə fayl yolu göndərilir.

Upload

Fayl seçin #fileUpload
Multi-file upload #multiUpload

Download

CSS: #fileUpload  |  Type: file
Upload: driver.findElement(By.id("fileUpload")).sendKeys("/path/to/file.txt")

Browser Windows

Yeni tab, yeni pəncərə, mesaj pəncərəsi. Selenium: driver.getWindowHandles()
CSS: #btnNewTab  |  ID: btnNewTab
Selenium: Set<String> handles = driver.getWindowHandles(); driver.switchTo().window(handles.toArray()[1])

Date Picker

Tarix seçici elementlər. Selenium-da sendKeys() və ya JS executor ilə doldurulur.
Select Date #datePickerMonthYearInput
Date And Time #dateAndTimePickerInput
CSS: #datePickerMonthYearInput  |  Type: date
Selenium: driver.findElement(By.id("datePickerMonthYearInput")).sendKeys("04/20/2026")

Progress Bar

Proqres çubuğu. Selenium-da getAttribute("aria-valuenow") ilə dəyər oxunur.
Progress Bar #progressBar
0%
CSS: #progressBar  |  Attribute: aria-valuenow
Selenium: driver.findElement(By.id("progressBar")).getAttribute("aria-valuenow") → "75"

Dynamic Elements

Hər yükləmədə dəyişən ID-lər. Dinamik element tapma.

Bu elementin ID-si hər dəfə dəyişir:

ID: btn_a7f3k2

Sabit attribute ilə tapın:

Gecikmiş element (3 saniyə):

CSS: [data-testid="delayed-element"]
Selenium: wait.until(ExpectedConditions.visibilityOfElementLocated(By.cssSelector("[data-testid='delayed-element']")))

Dynamic Properties

Elementlər müəyyən müddətdən sonra aktivləşir, görünür və ya rəng dəyişir.

Bu text-in random ID-si var (hər yükləmədə dəyişir):

This text has random Id

ID:

5 saniyə sonra aktiv olan düymə:

5 saniyə sonra görünən düymə:

5 saniyə sonra rəng dəyişən düymə:

CSS: #enableAfter  |  ID: enableAfter
Selenium: wait.until(ExpectedConditions.elementToBeClickable(By.id("enableAfter")))