Гузариш ба мундариҷа
Мавзӯи 6 аз 6

Пуркунии худкори форма

Ҳама чизро якҷоя мекунем: барнома худаш формаи бақайдгириро пур мекунад, мефиристад ва месанҷад, ки сайт чӣ ҷавоб дод.

Пур кардан аз рӯи луғат

data = {"name": "Анис", "email": "anya@mail.ru", "age": "15"}

for name, value in data.items():
    fields = driver.find_elements(By.NAME, name)
    if not fields:
        continue                           # чунин майдон нест — мегузарем
    fields[0].clear()
    fields[0].send_keys(value)
  • майдонҳоро аз рӯи name меҷӯянд — он аз синфҳо ва id устувортар аст, онро худи сайт ҳангоми фиристодан истифода мебарад;
  • майдонро пеш аз ворид кардан пок мекунанд — дар он метавонист қимат монда бошад;
  • find_elements ба ҷои find_element имкон медиҳад, ки майдони мавҷуднабударо ором гузарем.

Гузариндаҳо ва рӯйхатҳо

driver.find_element(By.CSS_SELECTOR, "input[name=gender][value=f]").click()
Select(driver.find_element(By.NAME, "plan")).select_by_visible_text("Премиум")

Фиристодан ва натиҷа

Баъди пахши тугма сайт метавонад гуногун ҷавоб диҳад — бо муваффақият ё бо хатоҳо. Ҳар кадоме аз вариантҳоро интизор мешаванд, баъд менигаранд, ки кадомаш рух дод:

WebDriverWait(driver, 5).until(
    lambda d: d.find_elements(By.ID, "success") or d.find_elements(By.CSS_SELECTOR, ".error")
)
if driver.find_elements(By.ID, "success"):
    print("Тайёр!")
else:
    print([e.text for e in driver.find_elements(By.CSS_SELECTOR, ".error")])

Масъулият

Танҳо чизеро худкор кунед, ки ба он ҳуқуқ доред: ҳисобҳои худ, сайтҳои худ, вазифаҳои корӣ. Бисёр сайтҳо дар қоидаҳо роботҳоро манъ мекунанд ва бо капча муҳофизат мешаванд; гузаштан аз чунин муҳофизат мумкин нест. Формаҳоро хеле зуд-зуд нафиристед — ин сарбории сервери бегона аст.

Минбаъд чӣ

  • Санҷиши сайтҳои худ: Selenium + pytest месанҷанд, ки баъди ҳар тағйирот бақайдгирӣ, сабад ва пардохт кор мекунанд;
  • Page Object — барои ҳар саҳифаи сайт синф бо методҳои login(), search(): тестҳо кӯтоҳтар ва фаҳмотар мешаванд;
  • Playwright — китобхонаи навтар бо ғояҳои монанд ва интизориҳои дарунсохт.

Хулоса

  • пур кардан аз рӯи луғат: find_elements(By.NAME, …), clear(), send_keys();
  • гузариндаҳо — пахш дар [name=…][value=…], рӯйхатҳо — Select;
  • баъди фиристодан — муваффақият ё хатоҳоро интизор шудан ва натиҷаро хондан;
  • худкор кардан — танҳо бо иҷозат.