Sobes.tech
Junior — Middle

Εξηγήστε τις διαφορές μεταξύ ρητών, υπαινικτικών προσδοκιών και του μηχανισμού αναμονής παύσης στον προγραμματισμό ή το σύστημα αυτοματοποίησης.

sobes.tech AI

Απάντηση από AI

Στον προγραμματισμό και την αυτοματοποίηση δοκιμών, υπάρχουν διαφορετικοί τύποι αναμονής που βοηθούν στην συγχρονισμό της εκτέλεσης των scripts με την κατάσταση της εφαρμογής:

  • Εκτενείς αναμονές (Explicit waits) — είναι αναμονές που ορίζονται ρητά στον κώδικα και κάνουν να περιμένει μια συγκεκριμένη συνθήκη (π.χ., την εμφάνιση ενός στοιχείου) για μια καθορισμένη χρονική περίοδο. Αν η συνθήκη εκπληρωθεί νωρίτερα, η εκτέλεση συνεχίζεται αμέσως.

  • Έμμεσες αναμονές (Implicit waits) — είναι μια παγκόσμια ρύθμιση για τον οδηγό, που τον κάνει να περιμένει κάποιο χρόνο κατά την αναζήτηση στοιχείων αν αυτά δεν βρεθούν αμέσως. Οι έμμεσες αναμονές εφαρμόζονται σε όλες τις λειτουργίες αναζήτησης στοιχείων.

  • Μηχανισμός αναμονής με παύση (Sleep) — είναι μια απλή καθυστέρηση στην εκτέλεση για ένα σταθερό χρόνο, ανεξάρτητα από την κατάσταση της εφαρμογής. Χρησιμοποιείται σπάνια, καθώς είναι αναποτελεσματική και μπορεί να επιβραδύνει τις δοκιμές.

Παράδειγμα σε Python με Selenium:

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
import time

driver = webdriver.Chrome()

# Έμμεση αναμονή
driver.implicitly_wait(10)  # περιμένει μέχρι 10 δευτερόλεπτα κατά την αναζήτηση στοιχείων

# Εκτενής αναμονή
wait = WebDriverWait(driver, 10)
element = wait.until(EC.presence_of_element_located((By.ID, 'myElement')))

# Παύση
time.sleep(5)  # απλά περιμένει 5 δευτερόλεπτα