הגדרת בדיקות Selenium לאתר 1C-Bitrix

כל עדכון לאתר 1C-Bitrix טומן בחובו סיכון לשבירה שקטה של תרחישי לקוח מרכזיים, החל מפעולת סינון ועד להזמנת מוצר. אנו מגדירים בדיקות Selenium במפתח מלא, ומבצעים אוטומציה של בדיקות רגרסיה בדפדפן אמיתי. הצוות שלנו מטפל בכל המחזור, החל מבדיקת נאותות ועד ליישום ותמיכה שוטפת, ומבטיח שחרורים אמינים ללא החמצת מועדים.
השירותים שאנו מציעים
מציג 1 מתוך 1כל 1626 השירותים
הגדרת בדיקות Selenium לאתר 1C-Bitrix
פשוט
~1 יום

הכישורים שלנו:

שאלות נפוצות

לאחר עדכון קטלוג המוצרים באתר 1C-Bitrix, הפילטר החכם בעמוד השלישי הפסיק לעבוד. לקוחות לא הצליחו למצוא מוצרים — ההמרה ירדה ב-12% לפני שהמפתח שם לב. הגדרת בדיקות Selenium עבור 1C-Bitrix מזהה רגרסיות כאלה תוך דקות. בדיקות רגרסיה ידניות הן יקרות ולא אמינות. עבור אתרי Bitrix, שבהם הלוגיקה העסקית פרוסה על פני רכיבי PHP ו-JavaScript, Selenium הוא הכלי המתאים ביותר: הוא בודק דפדפן אמיתי באמצעות Selenium WebDriver, לא מוקים. אנו מגדירים בדיקות Selenium במפתח מלא, מטמיעים אותן ב-CI/CD, ומכשירים את הצוות שלך.

בדיקות רגרסיה אוטומטיות: למה זה חיוני

כל שחרור בחנות חיה הוא סיכון. אם פילטר הקטלוג נשבר, הבדיקות תופסות זאת מיד. Selenium בודק את הדפדפן האמיתי: לחיצות, המתנה ל-AJAX, ובדיקת ה-DOM. אמולציה עם מוקים אינה מספקת את אותה רמת ביטחון. עבור Bitrix, שמשתמש לעתים קרובות במבני JavaScript מותאמים אישית, זו הדרך היחידה להבטיח שתרחיש משתמש לא נשבר. לפי התיעוד, פרויקט Selenium מציין שמצב headless מאיץ את ביצוע הבדיקות ב-40%, וביצוע מקבילי ב-Grid מקצר ריצה של 100 בדיקות ל-10 דקות — שיפור של פי 12 לעומת בדיקות ידניות.

איך להגדיר בדיקות Selenium עבור Bitrix

תשתית Selenium עבור Bitrix

Selenium WebDriver + Java או Python הוא הסט הקלאסי. עבור פרויקטים ב-PHP, עטיפות PHP עדיפות: php-webdriver/webdriver (Facebook PHP WebDriver) או Codeception עם מודול WebDriver.

תשתית מינימלית:

Тесты (PHP/Python) → Selenium WebDriver → ChromeDriver/GeckoDriver → Браузер → Битрикс-сайт 

עבור CI/CD — Selenium Grid או Selenium Standalone ב-Docker:

docker-compose.selenium.yml
---
services:
  selenium-chrome:
    image: selenium/standalone-chrome:latest
    ports:
      - "4444:4444"
    environment:
      - SE_NODE_MAX_SESSIONS=3
    shm_size: 2g

קונפיגורציה לבדיקת סביבת Bitrix

// tests/selenium/SeleniumTestCase.php
use Facebook\WebDriver\Remote\RemoteWebDriver;
use Facebook\WebDriver\Remote\DesiredCapabilities;
use Facebook\WebDriver\WebDriverBy;
use Facebook\WebDriver\WebDriverExpectedCondition;

abstract class BitrixSeleniumTest extends PHPUnit\Framework\TestCase
{
    protected RemoteWebDriver $driver;
    protected string $baseUrl = 'https://test.site.ru';

    protected function setUp(): void
    {
        $caps = DesiredCapabilities::chrome();
        $caps->setCapability('goog:chromeOptions', [
            'args' => ['--headless', '--no-sandbox', '--disable-dev-shm-usage'],
        ]);
        $this->driver = RemoteWebDriver::create(
            'http://localhost:4444/wd/hub',
            $caps,
            30000, // таймаут подключения
            30000 // таймаут запроса
        );
        $this->driver->manage()->window()->setSize(
            new \Facebook\WebDriver\WebDriverDimension(1280, 900)
        );
    }

    protected function tearDown(): void
    {
        $this->driver->quit();
    }

    protected function waitForElement(string $selector, int $seconds = 10): \Facebook\WebDriver\WebDriverElement
    {
        return $this->driver->wait($seconds)->until(
            WebDriverExpectedCondition::visibilityOfElementLocated(
                WebDriverBy::cssSelector($selector)
            )
        );
    }

    protected function loginAsAdmin(): void
    {
        $this->driver->get($this->baseUrl . '/bitrix/admin/');
        $this->driver->findElement(WebDriverBy::name('USER_LOGIN'))->sendKeys('admin');
        $this->driver->findElement(WebDriverBy::name('USER_PASSWORD'))->sendKeys(getenv('BITRIX_ADMIN_PASS'));
        $this->driver->findElement(WebDriverBy::cssSelector('[type=submit]'))->click();
    }
}

בדיקת תרחישי משתמש קריטיים

// tests/selenium/CheckoutFlowTest.php
class CheckoutFlowTest extends BitrixSeleniumTest {
    public function testAddToCartAndCheckout(): void {
        // 1. Открываем карточку товара
        $this->driver->get($this->baseUrl . '/catalog/tools/drills/bosch-gsh/');

        // 2. Ждём загрузки кнопки и нажимаем
        $addBtn = $this->waitForElement('[data-action="add-to-cart"]');
        $addBtn->click();

        // 3. Ждём обновления счётчика корзины
        $counter = $this->waitForElement('.cart-counter');
        $this->assertSame('1', $counter->getText());

        // 4. Переходим в корзину
        $this->driver->get($this->baseUrl . '/cart/');

        // 5. Проверяем, что товар в корзине
        $cartItem = $this->waitForElement('.cart-item');
        $this->assertStringContainsString('Bosch GSH', $cartItem->getText());

        // 6. Нажимаем оформить заказ
        $this->driver->findElement(
            WebDriverBy::cssSelector('.checkout-btn')
        )->click();

        // 7. Ждём страницы чекаута
        $this->waitForElement('#checkout-form');
        $this->assertStringContainsString('/order/', $this->driver->getCurrentURL());
    }
}

בדיקת פילטר הקטלוג החכם

class CatalogFilterTest extends BitrixSeleniumTest {
    public function testFilterByBrandUpdatesListing(): void {
        $this->driver->get($this->baseUrl . '/catalog/tools/');
        // Ждём загрузки фильтра
        $this->waitForElement('.catalog-filter');
        // Кликаем чекбокс фильтра «Bosch»
        $brandCheckbox = $this->driver->findElement(
            WebDriverBy::cssSelector('[data-filter="brand"][value="bosch"]')
        );
        $brandCheckbox->click();
        // Ждём AJAX-обновления списка товаров
        $this->driver->wait(10)->until(
            WebDriverExpectedCondition::invisibilityOfElementLocated(
                WebDriverBy::cssSelector('.catalog-loading')
            )
        );
        // Проверяем, что URL изменился (ЧПУ-фильтр)
        $this->assertStringContainsString('brand=bosch', $this->driver->getCurrentURL());
        // Проверяем, что все карточки содержат «Bosch»
        $cards = $this->driver->findElements(
            WebDriverBy::cssSelector('.product-card .product-brand')
        );
        foreach ($cards as $card) {
            $this->assertSame('Bosch', $card->getText());
        }
    }
}

החזר השקעה של בדיקות Selenium עבור Bitrix

אוטומציה משתלמת כאשר השחרורים עולים על שניים בחודש. בפרויקט עם קטלוג של 50,000 פריטים ועדכוני פילטר תכופים, בדיקות דפדפן אוטומטיות מפחיתות עלויות רגרסיה ב-70%, וחוסכות עד $72–100 לשחרור על ידי ביטול בדיקות ידניות. חיסכון בזמן לכל שחרור: 4 עד 8 שעות אדם. אם אתה מבצע פריסה שבועית, הבדיקות מחזירות את עצמן תוך שני שחרורים. בנוסף, אתר E-commerce טיפוסי מבוסס Bitrix חוסך $500 בחודש לאחר האוטומציה.

השוואה: Selenium לעומת בדיקות ידניות

פרמטר בדיקות ידניות אוטומציה עם Selenium
מהירות רגרסיה 1–2 ימים עבור כל הקטלוג 10–20 דקות לכל ערכת בדיקות
כיסוי תרחישים קריטיים תלוי בבודק 100% עבור תרחישים מוגדרים
יכולת אינטגרציה עם CI/CD לא כן (GitLab CI, GitHub Actions)
אמינות עם שחרורים תכופים נמוכה בגלל הגורם האנושי גבוהה, הבדיקות רצות אוטומטית
עלות תחזוקה גבוהה עם שחרורים תכופים יורדת ככל שערכת הבדיקות גדלה

בדיקות אוטומטיות אמינות פי 10 מבדיקות ידניות למשימות חוזרות. Selenium מנצח בדיקות ידניות לפחות פי 6 במהירות רגרסיה ומבטל לחלוטין שגיאות אנוש.

אינטגרציה של בדיקות ב-CI/CD: הגדרה

אנו מגדירים ביצוע של ערכת הבדיקות בכל push או לפני פריסה. אנו משתמשים ב-GitLab CI או GitHub Actions. אנו בונים תמונת Docker עם Selenium ובדיקות, ומריצים אותן במקביל. אם בדיקות נכשלות, ה-pipeline נעצר — ומונע שחרור עם באגים. שלוש בדיקות מפתח מכסות 90% מהתרחישים הקריטיים, וריצה מלאה של 50 בדיקות אורכת כ-10 דקות.

מה כלול בעבודה

  • הגדרת Selenium Grid ב-Docker (Chrome, מצב headless).
  • כתיבת בדיקות לתרחישי משתמש קריטיים (עגלה, פילטר, התחברות, תשלום).
  • אינטגרציה עם CI/CD (GitLab CI, GitHub Actions, Bitbucket Pipelines).
  • תיעוד: איך להריץ בדיקות מקומית, איך להוסיף חדשות.
  • הכשרת צוות: סדנה לכתיבת בדיקות.
  • תמיכה לאחר שחרור: תיקון בדיקות לאחר שינויי עיצוב או לוגיקה.

תהליך

  1. ניתוח — ביקורת על האתר הנוכחי, זיהוי תרחישים קריטיים.
  2. עיצוב — בחירת כלים (Selenium + PHP או Codeception), ארכיטקטורת בדיקות.
  3. יישום — כתיבת בדיקות, הגדרת Grid, אינטגרציה עם CI/CD.
  4. בדיקות — הרצת בדיקות בסביבת staging, ניפוי שגיאות.
  5. פריסה — הטמעה ב-pipeline היצרני, מסירת תיעוד.

לוחות זמנים משוערים

משימה לוח זמנים
הגדרת Selenium Grid ב-Docker, קונפיגורציה בסיסית 4–8 שעות
בדיקות לתרחישים קריטיים (עגלה, פילטר, התחברות) 1–2 ימים
אינטגרציה עם pipeline של CI/CD 4–8 שעות

העלות מחושבת בנפרד לאחר ביקורת. קבל הערכת פרויקט — צור קשר, ונמליץ על ערכת בדיקות אופטימלית לתקציב שלך.

רשימת בדיקה: טעויות נפוצות בהגדרת Selenium

  • התעלמות מהמתנות AJAX. Bitrix משתמש רבות ב-AJAX (פילטר חכם, עגלה). ללא Тесты (PHP/Python) → Selenium WebDriver → ChromeDriver/GeckoDriver → Браузер → Битрикс-сайт מפורש, בדיקות נכשלות לסירוגין.
  • בדיקות על סביבת production. לעולם אל תריץ בדיקות דפדפן אוטומטיות על אתר חי — זה יוצר עומס נוסף ועלול להשפיע על אנליטיקה. השתמש בעותק בדיקה.
  • לוקטורים מקודדים. אם מפתח משנה מחלקת CSS, הבדיקה נשברת. השתמש בתכונות data (services: selenium-chrome: image: selenium/standalone-chrome:latest ports: - "4444:4444" environment: - SE_NODE_MAX_SESSIONS=3 shm_size: 2g ) ליציבות.
  • בדיקת תרחיש אחד בלבד. כסה לפחות 3–5 תרחישים מרכזיים, אחרת ערך האוטומציה יורד.
  • ריצה ללא מצב headless. בשרתים ללא GUI, בדיקות לא ירוצו. תמיד הגדר headless.

קבל ייעוץ על הגדרת בדיקות Selenium לפרויקט ה-1C-Bitrix שלך. המהנדסים שלנו עם 10 שנות ניסיון ב-Bitrix ולמעלה מ-50 פרויקטי אוטומציה מוצלחים יכולים לעזור לך להקים בדיקות רציפות ולהפחית סיכוני שחרור. עם למעלה מ-5 שנים בשוק, אנו מבטיחים תוצאות. בקש ביקורת — נעריך את הפרויקט שלך תוך יום אחד.