selenium максимально расширяет возможности браузера и Selenium для автоматического тестирования веб-интерфейса.
selenium максимально расширяет возможности браузера и Selenium для автоматического тестирования веб-интерфейса.

Скриншот плана этой статьи:

  1. Введение в автоматизированное тестирование 1. Базовое введение 1.1 Автоматизация

Концепция: Процесс автоматического достижения заданных целей с помощью машинного оборудования вместо ручного труда.

преимущество:

  1.2 Автоматизированное тестирование

программное обеспечениетест:Убедитесь, что система соответствует указанным требованиям.、Поймите разницу между ожидаемыми результатами и фактическими результатами.

Автоматическое тестирование программного обеспечения: процесс, позволяющий программам заменять людей для проверки функций системы

 Сценарии применения:

преимущество:

 Недоразумение:

 Категория: автоматизация пользовательского интерфейса, автоматизация интерфейса, тестирование производительности, модульное тестирование.

Автоматизация пользовательского интерфейса: Интернет, мобильные устройства

Веб-сторона:

 На каком этапе начинается автоматизированное веб-тестирование?

 Категория веб-автоматического тестирования - тестирование черного ящика (функциональное тестирование)

 Мобильный терминал: приложения APP, мини-программы, страницы H5.

  2. Строительство окружающей среды

 Базовая среда для автоматизации пользовательского интерфейса включает в себя:

  3. Инструменты тестирования 4. Процесс тестирования 5. Структура тестирования 6. Базовый код (предполагаемая концепция)

Базовый код веб-автоматизации

ˆ """ Базовый код веб-автоматизации """

Язык кода:javascript
копировать
    # 1、Модуль импорта
    from [selenium][2] import webdriver
    from time import sleep
    # 2. Создайте экземпляр объекта браузера: имя класса ()
    # Создайте экземпляр объекта Google Chrome
    # driver = webdriver.Chrome()
    # Создайте экземпляр объекта Firefox
    driver = webdriver.Firefox()
    # 3. Откройте веб-страницу: заголовок протокола должен быть включен.
    driver.get('http://www.baidu.com')
    # 4. Наблюдайте за эффектом
    sleep(6)
    # 5. Закройте страницу
    driver.close()

  2. Инструменты 1. Основное введение

  — это инструмент автоматического тестирования веб-приложений.

Особенности:

 История развития:

   1.0:

ˆКомпоненты: IDE, Grid, основные компоненты RC.

   Grid

ˆ Основные компоненты RC

недостаток:

   2.0:

Особенности:

   3.0:

 Компоненты: IDE, Grid, основные компоненты.

   IDE:

   Grid:

 Основные компоненты:

Применение: вызов Python для написания тестовых сценариев для работы веб-приложений.

ПРИМЕЧАНИЕ. Во всех браузерах версии 3.0 в дополнение к платформе необходимо установить соответствующий драйвер.

Особенности:

  2. Установка среды 2.1 Уже установлено

 pip — это общий инструмент управления пакетами Python, который предоставляет функции поиска, загрузки, установки и удаления пакетов Python.

  2.2 Установка 2.3 Установка драйвера браузера

 Загрузите драйвер браузера:

 Браузер Firefox:

  2) Версии ниже 48: 2.x + встроенный драйвер.

 Гугл Хром:

 Браузер Edge (понятно):

 Конфигурация переменной среды: добавьте каталог, в котором находится файл драйвера, в переменную среды Path или непосредственно поместите его в каталог установки Python, поскольку Python был добавлен в путь.

  3.Принцип работы 4.Базовый код

ˆˆ # Пакет руководств

Язык кода:javascript
копировать
    from selenium import webdriver
    import time
    # Создать объект драйвера браузера
    # Браузер Хром:
    driver = webdriver.Chrome()
    # Браузер Фаерфокс:
    driver = webdriver.Firefox()
    # Крайний браузер:
    driver = webdriver.Edge()
    # Открыть веб-страницу
    driver.get("http://www.baidu.com")
    # пауза
    time.sleep(3)
    # Закрыть объект драйвера
    driver.quite()

 5. API 5.1 Позиционирование элемента

 Метод позиционирования элемента

ˆˆ # Пакет руководств

Язык кода:javascript
копировать
    from selenium import webdriver
    #Находим элемент
    # driver.find_element_by_xxx()
    driver.find_element_by_id()
    driver.find_element_by_name()
    driver.find_element_by_class_name()
    driver.find_element_by_tag_name()
    driver.find_element_by_link_text()
    driver.find_element_by_partial_link_text()
    driver.find_element_by_xpath()
    driver.find_element_by_css_selector()
    # Разместите группу элементов
    # driver.find_elements_by_xxx()
    driver.find_elements_by_id()
    driver.find_elements_by_name()
    driver.find_elements_by_class_name()
    driver.find_elements_by_tag_name()
    driver.find_elements_by_link_text()
    driver.find_elements_by_partial_link_text()
    driver.find_elements_by_xpath()
    driver.find_elements_by_css_selector()

скриншот:

Уведомление:

  3) Если вы снова нажмете кнопку синтаксиса после вызова метода позиционирования элемента, и все подсказки представляют собой методы списка, то метод будет содержать s.

 4) Если вы нажмете «Синтаксис» после вызова метода позиционирования элемента, подсказками будут все методы элемента, и метод не содержит s.

 Метод 2:

ˆˆ # Пакет руководств

Язык кода:javascript
копировать
    from selenium.webdriver.common.by import By
    # метод find_element
    # driver.find_element(By.xx, 'xxx')
    driver.find_element(By.ID, 'значение идентификатора')
    driver.find_element(By.NAME, «значение имени»)
    driver.find_element(By.CLASS_NAME, 'значение class_name')
    driver.find_element(By.TAG_NAME, 'значение tag_name')
    driver.find_element(By.LINK_TEXT, 'значение link_text')
    driver.find_element(By.PARTIAL_LINK_TEXT, 'значение part_link_text')
    driver.find_element(By.XPATH, 'значение xpath')
    driver.find_element(By.CSS_SELECTOR, 'значение css_selector')

Метод позиционирования элемента

   предоставляет восемь способов позиционирования элементов:

  1)id

Процесс: браузер находит элемент, и элемент вводит информацию.

  Описание: Когда целевой элемент существует. idзначение атрибутаселен максимизирует браузер,приоритетное использование id Методы поиска элементов

  2)name

  3)

  4)

  5)

  6)

  7)XPath

  Основное введение: XPath — это XML Path это аббревиатура XML Язык, на котором можно найти информацию об элементах в документе.。HTMLможно рассматривать какXMLреализацияселен максимизирует браузер,так Пользователи могут использовать этот мощный язык для поиска элементов в веб-приложениях. XML: язык разметки, используемый для хранения и доставки данных. Суффикс, заканчивающийся на .xml.

ПРИМЕЧАНИЕ. Независимо от того, какая стратегия (метод) XPath, метод позиционирования один и тот же. Разные стратегии определяют только метод записи параметров метода: h('Стратегия XPath').

  Метод позиционирования XPath: = driver.h(xpath)

  Стратегия позиционирования XPath

 1) Определение пути

 Относительный путь: соответствует элементам на любом уровне, без ограничения положения элемента

 Формат: относительный путь начинается с //

  2) Использовать атрибуты-позиционирование элемента

проиллюстрировать:

 3) Атрибуты и логическое сочетание – позиционирование

 4) Сочетание уровней и атрибутов – позиционирование

  XPath-расширение (динамические свойства):

 Динамические атрибуты: атрибуты позиционируемого элемента являются динамическими, то есть каждый раз, когда страница открывается, атрибуты элемента, такие как идентификатор или класс этого элемента, генерируются динамически.

Как определить динамические атрибуты: Как правило, если вы видите строку чисел, объединенную в атрибутах элемента, она, скорее всего, будет динамической. Чтобы заметить разницу, обновите браузер и еще раз посмотрите на элемент. Числовая строка в значении атрибута изменилась, что означает, что это динамический атрибут.

  2)//*(@, 'xxx')

  3)//*starts-with(@, 'xxx')

  XPath предоставляет три метода для поиска значений некоторых атрибутов:

  8)CSS

 Основное введение:

  Метод позиционирования CSS: = driver.()

 Общие стратегии позиционирования CSS

  1) выбор идентификатора

  2) селектор класса

  3)Выбор элемента

  4)Выбор атрибута

  5)Выбор уровня

 Формат 2: позиционируется и является дочерним элементом

Уведомление:В иерархических отношениях «родитель-потомок» пробелы также могут использоваться для соединения верхних и нижних иерархических стратегий.(>За ним должен следовать дочерний элемент,Его нельзя использовать, если он не является прямым дочерним элементом.>)

 Расширения CSS:

 Формат 2: имя атрибута имени тега $='содержимое в конце значения атрибута'

 Формат 3: имя атрибута имени тега*='любая часть значения атрибута'

Уведомление:Имя тега можно не указывать!

 5.2 Операции с элементами

 Причины срабатывания элемента:

 Общие операции над элементами:

  1、click()

  2、(value)

  3、clear()

проиллюстрировать: на практике,Обычно для элементов поля ввода,Сначала нужно все очистить,Выполните ввод еще раз,Избегайте ошибок в работе. Поэтому () иclear() обычно работают парами.,Прямо сейчас:

Расширение: Случаи ошибок

 Правильно писать:

 Часто используемые методы получения информации об элементе:

  1、size

  2、text

 Подсказка: размер, текст: являются атрибутами, при вызове скобок нет, например: xxx.size

  3、('xxx')

  4、()

  5、()

  6、()

 5.3 Операции со специальными элементами

 Тип поля выбора операции:

 Раскрывающиеся списки и флажки

 Операции с раскрывающимся списком:

 Выберите класс:

ˆˆ # Пакет руководств

Язык кода:javascript
копировать
    from selenium.webdriver.support.select import Select
    # создать экземпляр объекта
    select = Select(element)

 Как работать:

 Выберите этапы реализации класса:

 3) Способ вызова:

Работа с всплывающим окном

Категории всплывающих окон

 Настраиваемое всплывающее окно: инкапсуляция внешнего кода

Уведомление:

   alert = driver.switch_to.alert

Язык кода:javascript
копировать
    # Получить информацию о всплывающем окне (необязательно): этот шаг необходимо выполнить перед обработкой операции всплывающего окна.
    print('Всплывающее сообщение:', alert.text) 
    # Принять параметры диалога
    alert.accept()
    # Отменить диалоговую опцию
    alert.dismiss()  

Этапы обработки всплывающего окна:

  # Получить объект всплывающего окна (переключиться на всплывающее окно)

Язык кода:javascript
копировать
    alert = driver.switch_to.alert
    # Вызов метода для обработки (возврат текстовой информации в оповещении/подтверждении/подсказке)
    alert.text
    # Принять параметры диалога
    alert.accept()
    # Отменить диалоговую опцию
    alert.dismiss()

 Работа с полосой прокрутки:

 Концепция: компонент, который может управлять диапазоном отображения страницы.

 Причины изучения операций с полосой прокрутки:

  работа js-скрипта

 Не существует прямого метода управления полосой прокрутки в , но он предоставляет метод для исполняемых сценариев, поэтому мы можем достичь цели управления полосой прокрутки через сценарии.

 Код:

  Этапы реализации:

  # Установите скрипт JavaScript для управления полосой прокрутки (0: левое поле; 1000: верхнее поле; единица измерения: пиксель; описание: в обратном направлении, вам нужно только вернуть координаты в ноль)

Язык кода:javascript
копировать
    js = "window.scrollTo(0, 1000)"
    # селен вызывает метод для выполнения сценария JavaScript
    driver.execute_script(js)

 Операция переключения кадров:

 Концепция: Фреймворк на HTML-страницах. Его основная функция — отображение другого элемента страницы в указанной области текущей страницы. Метод переключения кадра инкапсулирован.

 форма кадра:

   # Форма 1:

Язык кода:javascript
копировать
    # Форма вторая:

Как переключать кадры:

   # Метод переключения на указанный кадр

Язык кода:javascript
копировать
    driver.switch_to.frame(frame_reference)
    # Как восстановить страницу по умолчанию
    driver.switch_to.default_content()
    '''
    Frame_reference: это может быть имя, идентификатор или позиционированный элемент фрейма кадра.
    # Атрибуты в скобках — это фрейм
    1、driver.switch_to.frame('frame_name')
    # Если на странице только один фрейм, можно заполнить скобки 1
    2、driver.switch_to.frame(1)
    # Если на странице несколько фреймов, вы можете использовать эту форму индекса тегов.
    3、driver.switch_to.frame(driver.find_elements_by_tag_name("iframe")[0])
    '''

 Операция переключения нескольких окон:

 В течение жизненного цикла браузера (от открытия до закрытия) любое окно имеет уникальное значение дескриптора, и операция переключения окон может быть завершена через значение дескриптора. Handle: дескриптор, уникальный идентификационный код окна. Он инкапсулирует методы получения текущего дескриптора окна, получения всех дескрипторов окон и переключения на указанный дескриптор окна.

Уведомление: Если вы все еще хотите снова использовать исходную страницу,Обязательно завершите переключение окон,Вернитесь на исходную страницу, прежде чем продолжить операцию (даже если вы переключились на новое окно, а оно было закрыто),Также вернитесь на исходную страницу)

метод:

 Шаги:

   # Получить дескрипторы всех окон (включая новые окна)

Язык кода:javascript
копировать
    handles = driver.window_handles
    # print(handles)
    # print(type(handles))
    # Окно переключения (список -1 индекс Соответствующее значение всегда обрабатывать значение последнего окна)
    driver.switch_to.window(handles[-1])

 Код:

   # Получить дескрипторы всех окон (включая новые окна)

Язык кода:javascript
копировать
    handles = driver.window_handles
    # print(handles)
    # print(type(handles))
    # Окно переключения (список -1 индекс Соответствующее значение всегда обрабатывать значение последнего окна)
    driver.switch_to.window(handles[-1])
    # Заполните информацию в новом окне
    driver.find_element_by_id('userA1').send_keys('admin1')
    sleep(2)
    # Закрыть новое окно (функция метода close(): закрыть текущую страницу)
    driver.close()
    # Вернитесь в исходное окно для работы.
    driver.switch_to.window(handles[0])
    # Заполните информацию на исходной странице окна.
    driver.find_element_by_id('userA').send_keys('admin')
    sleep(2)
    # Выйти из браузера
    driver.quit()

 Операция моментального снимка:

  Автоматизированные сценарии выполняются программами, поэтому иногда выводимое сообщение об ошибке не очень понятно. Если вы сохраните снимок экрана текущего окна при возникновении ошибки выполнения, вы сможете очень интуитивно увидеть причину ошибки по изображению.

 Сценарии применения:существоватьавтоматизациятестсередина,Когда возникает ошибка,Вы можете сохранить снимок экрана текущей страницы операции в указанном месте, сделав снимок экрана.,Помощь в принятии решений и анализе причин ошибок. в,Предоставляет метод скриншота,Нам просто нужно позвонить.

Как сделать скриншот окна:

расширять

 Метод 1:

Язык кода:javascript
копировать
    # Пакет гида
    import time
    # Установить временную метку
    now_time = time.strftime('%Y%m%d_%H%M%S')
    # Вставить временную метку в название изображения
    driver.get_screenshot_as_file('./info_{}.png'.format(now_time))
    Способ второй:
    # Пакет гида
    import time
    driver.get_screenshot_as_file('./info_{}.png'.format(time.strftime('%Y%m%d_%H%M%S')))
    Способ третий:
    # Пакет гида
    from time import sleep, strftime
    driver.get_screenshot_as_file('./info_{}.png'.format(strftime('%Y%m%d_%H%M%S')))

   btn = driver.find_element_by_tag_name('button')

Язык кода:javascript
копировать
    btn.screenshot('./btn.png')

 Действие проверочного кода:

Проверочный код: случайно сгенерированная информация (цифры, буквы, китайские иероглифы, картинки, арифметические вопросы) и т. д. с целью предотвращения вредоносного поведения запросов и повышения безопасности приложения)

Причина: В веб-приложениях большинство систем требуют от пользователей ввода проверочного кода при входе и регистрации. При разработке сценариев автоматического тестирования необходимо временно решить проблему с проверочным кодом, иначе последующие тесты не могут быть продолжены. В . нет метода обработки проверочных кодов. Здесь мы представляем несколько распространенных методов обработки проверочных кодов.

  Как обращаться с кодами подтверждения

Вопрос на собеседовании: Общие стратегии обработки проверочных кодов

Подведите итог:

 При тестировании функции входа в систему стратегия обработки кода проверки: удалить код проверки (в тестовой среде), установить универсальный код проверки (в производственной среде и тестовой среде).

Когда нет необходимости тестировать функцию входа в систему, стратегия обработки кода подтверждения: запись файлов cookie, чтобы пропустить вход в систему.

  Операция с файлами cookie:

  Концепция использования файлов cookie:

  Процесс работы с файлами cookie:

 Принцип обхода файлов cookie:

Уведомление:

 Как работать с файлами cookie:

  Шаги по использованию файлов cookie:

  5.4 Ожидание элемента

 Ожидание элемента: если элемент не найден при его поиске, он будет ждать определенное время.

 Установите причину ожидания элемента:

 Категория: неявное ожидание, явное ожидание, принудительное ожидание.

Неявное ожидание: при обнаружении элемента, если элемент может быть найден, элемент будет возвращен напрямую, без запуска ожидания; если элемент не может быть найден, элемент будет найден снова через определенный период времени, если указанный элемент не был найден; был найден при достижении максимальной продолжительности, элемент выдает исключение «Элемент не существует»

Уведомление: При активации неявного ожидания, хотя целевой элемент уже появился, он будет продолжать ждать, поскольку другие элементы на текущей странице не были загружены, тем самым увеличивая время выполнения кода.

 Например: водитель.(10)

Явное ожидание: при обнаружении указанного элемента, если элемент может быть найден, элемент будет возвращен напрямую, без запуска ожидания; если элемент не может быть найден, элемент будет обнаружен снова через определенный период времени, если он не был найден; обнаруживается при достижении максимальной продолжительности. Если указан указанный элемент, будет выдано исключение тайм-аута.

ˆˆ # Пакет руководств

Язык кода:javascript
копировать
    from selenium.webdriver.support.wait import WebDriverWait
    WebDriverWait(driver, timeout, poll_frequency=0.5)

 Вызов метода: до(метод)# До...

Например:

 Принудительное ожидание:

 Метод 2:

  Сравнение неявного и явного ожидания:

  5.5 Управление мышью

 Причина: теперь в веб-продуктах есть богатые методы взаимодействия с мышью.,какWebПлатформа автоматизированного тестирования,Нужно разобраться с этими Управлением Сценарии применения мышью.

Общие операции с мышью: щелчок, щелчок правой кнопкой мыши, двойной щелчок, наведение, перетаскивание и т. д. инкапсулируют методы работы с мышью в классах;

добрый:

ˆˆ # Пакет руководств

Язык кода:javascript
копировать
    from selenium import webdriver
    from selenium.webdriver import ActionChains
    # Создать экземпляр объекта браузера
    driver = webdriver.Chrome()
    # Создайте экземпляр объекта мыши и свяжите объект браузера.
    action = ActionChains(driver)

 Часто используемые операции с мышью:

  1)()

  2)()

  3)()

  4)()

  5)()

расширять:Другой вид Управление Как писать мышью: (на других языках программирования это называется цепным программированием)

 5.6 Работа с клавиатурой

Размышление: как имитировать ввод некоторых клавиш или комбинаций клавиш на клавиатуре, например: Ctrl+C, Ctrl+V. Клавиши клавиатуры инкапсулированы в класс Keys:

-Класс клавиш

ˆˆ # Пакет руководств

Язык кода:javascript
копировать
    from selenium.webdriver.common.keys import Keys
    # Создать экземпляр объекта браузера
    driver = webdriver.Chrome()
    # позиционированный элемент Идентификатор пользователя A.
    user = driver.find_element_by_id('userA')

 Часто используемые операции с клавиатурой:

  1)(Keys.)

  2)(Keys.SPACE)

  3)(Keys.TAB)

  4)(Keys.ESCAPE)

  5)(Keys.ENTER)

  6)(Keys., 'a')

  7)(Keys., 'c')

  8)(Keys., 'v')

 5.7 Работа браузера

Подумайте: не является ли размер окна браузера по умолчанию при запуске сценария полноэкранным? Как обновить страницу?

 Распространенные методы работы браузера

  1)()

  2)(width, height)

  3)(x, y)

  4)back()

  5)()

  6)()

  7)close()

  8)quit()

  9)title

  10)

Подведите итог:объединить Операции браузера и неявное ожидание для улучшения Интернета Базовый код для автоматизации тестирования пользовательского интерфейса выглядит следующим образом:

   # Модуль импорта

Язык кода:javascript
копировать
    from time import sleep
    from selenium import webdriver
    # Создать экземпляр объекта браузера
    driver = webdriver.Chrome()
    # развернуть браузер
    driver.maximize_window()
    # неявное ожидание
    driver.implicitly_wait(30)
    # открыть страницу
    driver.get('')
    # Эффект отображения
    sleep(3)
    # Выйти из браузера

 Наконец: [Руководства, которые могут помочь вам в автоматизированном тестировании]

Наконец, я хотел бы поблагодарить всех, кто внимательно прочитал мою статью. Глядя на рост числа поклонников и внимания, всегда есть некоторая вежливость. Хотя это не очень ценная вещь, если вы умеете ею пользоваться, вы можете взять ее напрямую. .

 Информация об интервью

Мы должны научиться тестировать программное обеспечение, чтобы найти высокооплачиваемую работу. Следующие вопросы для интервью взяты из последних материалов интервью от таких интернет-компаний первого уровня, как Alibaba, Tencent, Byte и т. д., и после окончания интервью руководители Alibaba дали авторитетные ответы. Я считаю, что каждый сможет найти удовлетворительную работу, воспользовавшись этим набором материалов для собеседований.

Выше приведены вспомогательные ресурсы, которые я собрал. Эти ресурсы должны стать наиболее полным и полным хранилищем для подготовки для друзей по тестированию программного обеспечения. Чтобы лучше организовать каждый модуль, я также ссылался на множество высококачественных сообщений в блогах и проектов в Интернете. Стремитесь Не упустить все знания. Многие друзья использовали это содержимое для просмотра и получили предложения от крупных производителей, таких как BATJ. Этот склад также помог многим ученикам, изучающим тестирование программного обеспечения, и я надеюсь, что он поможет и вам.

Всего в этой статье 3356 слов, а среднее время чтения ≈ 9 минут.

boy illustration
Неразрушающее увеличение изображений одним щелчком мыши, чтобы сделать их более четкими артефактами искусственного интеллекта, включая руководства по установке и использованию.
boy illustration
Копикодер: этот инструмент отлично работает с Cursor, Bolt и V0! Предоставьте более качественные подсказки для разработки интерфейса (создание навигационного веб-сайта с использованием искусственного интеллекта).
boy illustration
Новый бесплатный RooCline превосходит Cline v3.1? ! Быстрее, умнее и лучше вилка Cline! (Независимое программирование AI, порог 0)
boy illustration
Разработав более 10 проектов с помощью Cursor, я собрал 10 примеров и 60 подсказок.
boy illustration
Я потратил 72 часа на изучение курсорных агентов, и вот неоспоримые факты, которыми я должен поделиться!
boy illustration
Идеальная интеграция Cursor и DeepSeek API
boy illustration
DeepSeek V3 снижает затраты на обучение больших моделей
boy illustration
Артефакт, увеличивающий количество очков: на основе улучшения характеристик препятствия малым целям Yolov8 (SEAM, MultiSEAM).
boy illustration
DeepSeek V3 раскручивался уже три дня. Сегодня я попробовал самопровозглашенную модель «ChatGPT».
boy illustration
Open Devin — инженер-программист искусственного интеллекта с открытым исходным кодом, который меньше программирует и больше создает.
boy illustration
Эксклюзивное оригинальное улучшение YOLOv8: собственная разработка SPPF | SPPF сочетается с воспринимаемой большой сверткой ядра UniRepLK, а свертка с большим ядром + без расширения улучшает восприимчивое поле
boy illustration
Популярное и подробное объяснение DeepSeek-V3: от его появления до преимуществ и сравнения с GPT-4o.
boy illustration
9 основных словесных инструкций по доработке академических работ с помощью ChatGPT, эффективных и практичных, которые стоит собрать
boy illustration
Вызовите deepseek в vscode для реализации программирования с помощью искусственного интеллекта.
boy illustration
Познакомьтесь с принципами сверточных нейронных сетей (CNN) в одной статье (суперподробно)
boy illustration
50,3 тыс. звезд! Immich: автономное решение для резервного копирования фотографий и видео, которое экономит деньги и избавляет от беспокойства.
boy illustration
Cloud Native|Практика: установка Dashbaord для K8s, графика неплохая
boy illustration
Краткий обзор статьи — использование синтетических данных при обучении больших моделей и оптимизации производительности
boy illustration
MiniPerplx: новая поисковая система искусственного интеллекта с открытым исходным кодом, спонсируемая xAI и Vercel.
boy illustration
Конструкция сервиса Synology Drive сочетает проникновение в интрасеть и синхронизацию папок заметок Obsidian в облаке.
boy illustration
Центр конфигурации————Накос
boy illustration
Начинаем с нуля при разработке в облаке Copilot: начать разработку с минимальным использованием кода стало проще
boy illustration
[Серия Docker] Docker создает мультиплатформенные образы: практика архитектуры Arm64
boy illustration
Обновление новых возможностей coze | Я использовал coze для создания апплета помощника по исправлению домашних заданий по математике
boy illustration
Советы по развертыванию Nginx: практическое создание статических веб-сайтов на облачных серверах
boy illustration
Feiniu fnos использует Docker для развертывания личного блокнота Notepad
boy illustration
Сверточная нейронная сеть VGG реализует классификацию изображений Cifar10 — практический опыт Pytorch
boy illustration
Начало работы с EdgeonePages — новым недорогим решением для хостинга веб-сайтов
boy illustration
[Зона легкого облачного игрового сервера] Управление игровыми архивами
boy illustration
Развертывание SpringCloud-проекта на базе Docker и Docker-Compose