Global Side Menu Width
Placeholder

אוטומציה של Chrome במחשב

מסיבות של אבטחת מידע אני לא יכול להציג לכם את כל הפרויקט.., אבל אני רוצה להציג לכם כיוון איך כתוב אצלי פרויקט אוניברסלי בשפת Python אשר מאפשר לכתוב במהירות בדיקות אוטומציה ל-Chrome מחדש.

אז בהתחלה יש ייבוא של כל הדברים שאני צריך(זה קיים בכל פרויקט אוטומציה – לא משנה איזה אתר).

בהגדרות (settings) מוגדרים אצלי פרמטרים ייחודיים לאתר ולסביבה( כגון Chrome, אתר qawork.com..)

# Import Allure decorators for report grouping.
import allure
# Import pytest to mark this test with environment labels.
import pytest
# Import Select for working with real HTML <select> dropdowns.
from selenium.webdriver.support.select import Select

# Import shared URLs and environment settings.
from wulfauto.config.settings import settings
# Import Allure helpers for readable steps and text attachments.
from wulfauto.core.allure_utils import allure_step, attach_text
# Import explicit wait helpers used before actions.
from wulfauto.core.waits import clickable, text_present, visible

ואז אני מתחיל להשתמש בהגדרות (כגון לפתוח את ה-url שאני צריך)

def test_desktop_chrome_core_actions(desktop_chrome, by):
    """Teach the most common Selenium actions for a desktop Chrome website."""
    # Open the demo website in Desktop Chrome.
    desktop_chrome.get(settings.base_url)
    # Attach the opened URL to the Allure report.
    attach_text("Opened URL", desktop_chrome.current_url)

ואז למעשה תופסים את האלמנטים על בסיס (CSS או מה שיש…) ומבצעים את הפעולות שצריך!

# Start an Allure step for the first click flow.
    with allure_step("Click a button and wait for status text"):
        # Desktop web tests usually use stable CSS selectors such as data-testid.
        clickable(desktop_chrome, (by.CSS_SELECTOR, "[data-testid='hero-cta']")).click()
        # Wait until the status text proves the click worked.
        text_present(desktop_chrome, (by.CSS_SELECTOR, "[data-testid='practice-status']"), "Practice started")

להלן מספר פקודות חשובות ביותר באוטומציה של Chrome:

ממתין עד שאלמנט יהיה לחיץ

clickable(desktop_chrome, (by.CSS_SELECTOR, "[data-testid='hero-cta']")).click()

ממתין עד שיופיע טקסט

        text_present(desktop_chrome, (by.CSS_SELECTOR, "[data-testid='practice-status']"), "Practice started")

ממתין עד שהאלמנט יוצג ויזואלית

        visible(desktop_chrome, (by.CSS_SELECTOR, "[data-testid='name-input']")).send_keys("Desktop Chrome")

בלי להמתין – מחפשים אלמנט מיד

        desktop_chrome.find_element(by.CSS_SELECTOR, "[data-testid='email-input']").send_keys("[email protected]")

Select עבור תפריטי dropdown<בחירה> ב-HTML.

        Select(desktop_chrome.find_element(by.CSS_SELECTOR, "[data-testid='plan-select']")).select_by_visible_text("Pro")

אפשר גם למצוא אלמנט ואז להגדיר עבורו פרמטר

        terms = desktop_chrome.find_element(by.CSS_SELECTOR, "[data-testid='terms-checkbox']")

ואז ניתן לבצע פעולות עם האלמנט הזה כמו:

 if not terms.is_selected():
            terms.click()

גם כאן יש שימוש בפרמטר בשם: submit אבל יותר חשוב להדגיש שימוש בגלילה(scroll) עד הכפתור submit:

# Scroll to make clicks stable when the element is lower on the page.
        submit = desktop_chrome.find_element(by.CSS_SELECTOR, "[data-testid='submit-order']")
        # Move the submit button into the visible area of the browser.
        desktop_chrome.execute_script("arguments[0].scrollIntoView({block: 'center'});", submit)
      

בדוגמה הזאת: יש גלילה עד האלמנט ואז בדיקה שהטקסט ״Deep scroll target״ נמצא בתוך האלמנט.
אם הוא לא נמצא, אז התוכנה לא תרוץ יותר(Assert)

  # JavaScript scroll is useful for elements outside the current viewport.
        deep_card = desktop_chrome.find_element(by.CSS_SELECTOR, "[data-testid='deep-card']")
        # Scroll the deep card into view before checking it.
        desktop_chrome.execute_script("arguments[0].scrollIntoView({block: 'center'});", deep_card)
        # Assert verifies that the expected card is now visible/readable.
        assert "Deep scroll target" in deep_card.text