Тестирование GUI на Python: применение Selenium и PyQt
Тестирование GUI на Python: применение Selenium и PyQt

Тестирование GUI на Python: применение Selenium и PyQt

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

Selenium

SeleniumЭто инструмент автоматического тестирования,В основном используется для тестирования веб-приложений. Он поддерживает различные браузеры,и может имитировать поведение пользователя в браузере,Например, нажатие, ввод текста и т. д. Вот простой пример тестирования веб-интерфейса с использованием Selenium:

Язык кода:javascript
копировать
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
​
# Запустить браузер
driver = webdriver.Chrome()
​
# Открыть веб-страницу
driver.get("https://www.baidu.com")
​
# Введите ключевые слова в поле поиска
search_box = driver.find_element_by_name("wd")
search_box.send_keys("Python Selenium")
search_box.send_keys(Keys.RETURN)
​
# Подождите, пока загрузятся результаты поиска
driver.implicitly_wait(10)
​
# Проверьте результаты поиска
assert "Python Selenium" in driver.title
​
# Закрыть браузер
driver.quit()

В приведенном выше коде используется Selenium, чтобы открыть поиск Baidu, ввести ключевое слово «Python Selenium», а затем проверить, содержит ли заголовок страницы результатов поиска это ключевое слово.

PyQt

PyQtдаPythonсамый популярный средиGUIнабор инструментов один,Он разработан на основе Qt framework.,Предоставляет богатые компоненты и функции графического пользовательского интерфейса. PyQt можно использовать не только для создания приложений с графическим интерфейсом.,Также может использоваться для написания автоматических тестовых сценариев. Вот пример тестирования графического интерфейса с использованием PyQt:

Язык кода:javascript
копировать
import sys
from PyQt5.QtWidgets import QApplication, QMainWindow, QPushButton
​
class TestWindow(QMainWindow):
    def __init__(self):
        super().__init__()
​
        self.setWindowTitle("PyQt тестирование графического интерфейса")
        self.setGeometry(100, 100, 300, 200)
​
        self.button = QPushButton("Нажмите на меня", self)
        self.button.setGeometry(100, 50, 100, 50)
        self.button.clicked.connect(self.on_button_click)
​
    def on_button_click(self):
        self.button.setText("Нажат")
        # Здесь можно добавить больше тестовой логики.
​
if __name__ == "__main__":
    app = QApplication(sys.argv)
    window = TestWindow()
    window.show()
    sys.exit(app.exec_())

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

Объединение Selenium и PyQt для тестирования графического интерфейса

Иногда нам нужно объединить Selenium и PyQt при тестировании графического интерфейса, например при тестировании взаимодействия JavaScript или запросов AJAX в веб-приложении. Вот пример использования Selenium с PyQt:

Язык кода:javascript
копировать
import sys
from PyQt5.QtWidgets import QApplication, QMainWindow, QPushButton
from selenium import webdriver
​
class TestWindow(QMainWindow):
    def __init__(self):
        super().__init__()
​
        self.setWindowTitle("PyQt в сочетании с Selenium графического интерфейса")
        self.setGeometry(100, 100, 300, 200)
​
        self.button = QPushButton("Нажмите на меня", self)
        self.button.setGeometry(100, 50, 100, 50)
        self.button.clicked.connect(self.on_button_click)
​
    def on_button_click(self):
        self.button.setText("Нажат")
        self.run_selenium_test()
​
    def run_selenium_test(self):
        # Запустить браузер
        driver = webdriver.Chrome()
​
        # Открыть веб-страницу
        driver.get("https://www.example.com")
​
        # Дополнительную логику тестирования Selenium можно выполнить здесь.
        # Например: имитировать взаимодействие пользователя на веб-страницах, проверять элементы страницы и т. д.
​
        # Закрыть браузер
        driver.quit()
​
if __name__ == "__main__":
    app = QApplication(sys.argv)
    window = TestWindow()
    window.show()
    sys.exit(app.exec_())

В этом примере,Когда пользователь нажимает кнопку в окне PyQt,вызоветon_button_clickметод,Этот метод изменит текст кнопки,и позвониrun_selenium_testметодосуществлятьSeleniumтест。существоватьrun_selenium_testметодсередина,Мы можем написать любую необходимую тестовую логику Selenium.,Например, откройте веб-страницу и проверьте ее элементы.

Объединив Selenium и PyQt, мы можем более гибко проводить тестирование графического интерфейса, будь то веб-приложения или настольные приложения. Такое сочетание помогает разработчикам быстро и эффективно тестировать свои приложения и обеспечивать их качество и стабильность.

существовать Объединение Selenium и PyQt для тестирования графического время интерфейса,Объем испытаний также может быть расширен.,Например, встраивание веб-представления в приложение PyQt.,Затем это веб-представление тестируется с использованием Selenium. Вот пример:

Язык кода:javascript
копировать
import sys
from PyQt5.QtWidgets import QApplication, QMainWindow
from PyQt5.QtWebEngineWidgets import QWebEngineView
from selenium import webdriver
​
class TestWindow(QMainWindow):
    def __init__(self):
        super().__init__()
​
        self.setWindowTitle("PyQt в сочетании с Selenium графического интерфейса")
        self.setGeometry(100, 100, 800, 600)
​
        self.web_view = QWebEngineView(self)
        self.web_view.setGeometry(50, 50, 700, 500)
        self.web_view.load("https://www.example.com")
​
    def run_selenium_test(self):
        # Запустить браузер
        driver = webdriver.Chrome()
​
        # Получить URL-адрес веб-представления
        url = self.web_view.url().toString()
​
        # Откройте веб-страницу, соответствующую веб-представлению.
        driver.get(url)
​
        # Дополнительную логику тестирования Selenium можно выполнить здесь.
        # Например: имитировать взаимодействие пользователя на веб-страницах, проверять элементы страницы и т. д.
​
        # Закрыть браузер
        driver.quit()
​
if __name__ == "__main__":
    app = QApplication(sys.argv)
    window = TestWindow()
    window.show()
    window.run_selenium_test()  # Запустите тест Selenium, как только появится окно
    sys.exit(app.exec_())

В этом примере,Мы создали окно PyQt, содержащее веб-представление.,и загрузил в него веб-страницу. Затем,нассуществоватьrun_selenium_testметодсередина获取了WebвидURL,И используйте Selenium, чтобы открыть веб-страницу в браузере для тестирования.

Этот подход позволяет нам встраивать веб-контент в приложения PyQt и тестировать их с помощью Selenium, тем самым более полно охватывая область тестирования графического пользовательского интерфейса.

существовать Объединение Selenium и PyQt для тестирования графического время интерфейса,Объем испытаний также может быть расширен.,Например, встраивание веб-представления в приложение PyQt.,Затем это веб-представление тестируется с использованием Selenium. Вот пример:

Язык кода:javascript
копировать
import sys
from PyQt5.QtWidgets import QApplication, QMainWindow
from PyQt5.QtWebEngineWidgets import QWebEngineView
from selenium import webdriver
​
class TestWindow(QMainWindow):
    def __init__(self):
        super().__init__()
​
        self.setWindowTitle("PyQt в сочетании с Selenium графического интерфейса")
        self.setGeometry(100, 100, 800, 600)
​
        self.web_view = QWebEngineView(self)
        self.web_view.setGeometry(50, 50, 700, 500)
        self.web_view.load("https://www.example.com")
​
    def run_selenium_test(self):
        # Запустить браузер
        driver = webdriver.Chrome()
​
        # Получить URL-адрес веб-представления
        url = self.web_view.url().toString()
​
        # Откройте веб-страницу, соответствующую веб-представлению.
        driver.get(url)
​
        # Дополнительную логику тестирования Selenium можно выполнить здесь.
        # Например: имитировать взаимодействие пользователя на веб-страницах, проверять элементы страницы и т. д.
​
        # Закрыть браузер
        driver.quit()
​
if __name__ == "__main__":
    app = QApplication(sys.argv)
    window = TestWindow()
    window.show()
    window.run_selenium_test()  # Запустите тест Selenium, как только появится окно
    sys.exit(app.exec_())

В этом примере,Мы создали окно PyQt,и встроил в него веб-представление,Это представление загружает веб-страницу. Затем,нассуществоватьrun_selenium_testметодсередина获取了WebвидURL,И используйте Selenium, чтобы открыть веб-страницу в браузере для тестирования.

Этот подход позволяет нам встраивать веб-контент в приложения PyQt и тестировать их с помощью Selenium, тем самым более полно охватывая область тестирования графического пользовательского интерфейса.

Помимо использования Selenium или PyQt отдельно для тестирования графического интерфейса, вы также можете комбинировать их, чтобы охватить более широкий спектр сценариев тестирования. Эта комбинация позволяет встраивать веб-компоненты в приложения PyQt, а затем использовать Selenium для тестирования этих компонентов. Вот пример:

Язык кода:javascript
копировать
import sys
from PyQt5.QtWidgets import QApplication, QMainWindow
from PyQt5.QtWebEngineWidgets import QWebEngineView
from selenium import webdriver
​
class TestWindow(QMainWindow):
    def __init__(self):
        super().__init__()
​
        self.setWindowTitle("PyQt в сочетании с Selenium графического интерфейса")
        self.setGeometry(100, 100, 800, 600)
​
        self.web_view = QWebEngineView(self)
        self.web_view.setGeometry(50, 50, 700, 500)
        self.web_view.load("https://www.example.com")
​
    def run_selenium_test(self):
        # Запустить браузер
        driver = webdriver.Chrome()
​
        # Получить URL-адрес веб-представления
        url = self.web_view.url().toString()
​
        # Откройте веб-страницу, соответствующую веб-представлению.
        driver.get(url)
​
        # Дополнительную логику тестирования Selenium можно выполнить здесь.
        # Например: имитировать взаимодействие пользователя на веб-страницах, проверять элементы страницы и т. д.
​
        # Закрыть браузер
        driver.quit()
​
if __name__ == "__main__":
    app = QApplication(sys.argv)
    window = TestWindow()
    window.show()
    window.run_selenium_test()  # Запустите тест Selenium, как только появится окно
    sys.exit(app.exec_())

В этом примере,Мы создали окно PyQt,и встроил в него веб-представление,Это представление загружает веб-страницу. Затем,нассуществоватьrun_selenium_testметодсередина获取了WebвидURL,И используйте Selenium, чтобы открыть веб-страницу в браузере для тестирования.

Эта комбинация Selenium и PyQt может охватывать более широкий спектр сценариев тестирования графического пользовательского интерфейса, особенно когда веб-компоненты необходимо встроить в приложения PyQt. Таким образом, разработчики смогут более тщательно тестировать свои приложения и гарантировать их качество и стабильность.

существовать Объединение Selenium и PyQt для тестирования графического время интерфейса,Объем испытаний также может быть расширен.,Например, встраивание веб-представления в приложение PyQt.,Затем это веб-представление тестируется с использованием Selenium. Вот пример:

Язык кода:javascript
копировать
import sys
from PyQt5.QtWidgets import QApplication, QMainWindow
from PyQt5.QtWebEngineWidgets import QWebEngineView
from selenium import webdriver
​
class TestWindow(QMainWindow):
    def __init__(self):
        super().__init__()
​
        self.setWindowTitle("PyQt в сочетании с Selenium графического интерфейса")
        self.setGeometry(100, 100, 800, 600)
​
        self.web_view = QWebEngineView(self)
        self.web_view.setGeometry(50, 50, 700, 500)
        self.web_view.load("https://www.example.com")
​
    def run_selenium_test(self):
        # Запустить браузер
        driver = webdriver.Chrome()
​
        # Получить URL-адрес веб-представления
        url = self.web_view.url().toString()
​
        # Откройте веб-страницу, соответствующую веб-представлению.
        driver.get(url)
​
        # Дополнительную логику тестирования Selenium можно выполнить здесь.
        # Например: имитировать взаимодействие пользователя на веб-страницах, проверять элементы страницы и т. д.
​
        # Закрыть браузер
        driver.quit()
​
if __name__ == "__main__":
    app = QApplication(sys.argv)
    window = TestWindow()
    window.show()
    window.run_selenium_test()  # Запустите тест Selenium, как только появится окно
    sys.exit(app.exec_())

В этом примере,Мы создали окно PyQt,и встроил в него веб-представление,Это представление загружает веб-страницу. Затем,нассуществоватьrun_selenium_testметодсередина获取了WebвидURL,И используйте Selenium, чтобы открыть веб-страницу в браузере для тестирования.

Этот подход позволяет нам встраивать веб-контент в приложения PyQt и тестировать их с помощью Selenium, тем самым более полно охватывая область тестирования графического пользовательского интерфейса.

существовать Объединение Selenium и PyQt для тестирования графического время интерфейса,Объем испытаний также может быть расширен.,Например, встраивание веб-представления в приложение PyQt.,Затем это веб-представление тестируется с использованием Selenium. Вот пример:

Язык кода:javascript
копировать
import sys
from PyQt5.QtWidgets import QApplication, QMainWindow
from PyQt5.QtWebEngineWidgets import QWebEngineView
from selenium import webdriver
​
class TestWindow(QMainWindow):
    def __init__(self):
        super().__init__()
​
        self.setWindowTitle("PyQt в сочетании с Selenium графического интерфейса")
        self.setGeometry(100, 100, 800, 600)
​
        self.web_view = QWebEngineView(self)
        self.web_view.setGeometry(50, 50, 700, 500)
        self.web_view.load("https://www.example.com")
​
    def run_selenium_test(self):
        # Запустить браузер
        driver = webdriver.Chrome()
​
        # Получить URL-адрес веб-представления
        url = self.web_view.url().toString()
​
        # Откройте веб-страницу, соответствующую веб-представлению.
        driver.get(url)
​
        # Дополнительную логику тестирования Selenium можно выполнить здесь.
        # Например: имитировать взаимодействие пользователя на веб-страницах, проверять элементы страницы и т. д.
​
        # Закрыть браузер
        driver.quit()
​
if __name__ == "__main__":
    app = QApplication(sys.argv)
    window = TestWindow()
    window.show()
    window.run_selenium_test()  # Запустите тест Selenium, как только появится окно
    sys.exit(app.exec_())

В этом примере,Мы создали окно PyQt,и встроил в него веб-представление,Это представление загружает веб-страницу. Затем,нассуществоватьrun_selenium_testметодсередина获取了WebвидURL,И используйте Selenium, чтобы открыть веб-страницу в браузере для тестирования.

Этот подход позволяет нам встраивать веб-контент в приложения PyQt и тестировать их с помощью Selenium, тем самым более полно охватывая область тестирования графического пользовательского интерфейса.

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

В этой статье представлены два распространенных инструмента для тестирования графического интерфейса на Python: Selenium и PyQt, а также показано их использование в практических приложениях.

Сначала мы обсудили Selenium — инструмент для автоматического тестирования, в основном используемый для тестирования веб-приложений. Мы показали, как использовать Selenium для открытия веб-страницы, ввода текста, нажатия кнопок и т. д., а также для проверки того, что заголовок страницы результатов поиска содержит определенное ключевое слово.

Во-вторых, мы представили PyQt, один из самых популярных наборов инструментов для графического интерфейса Python, разработанный на основе платформы Qt. Мы показали, как использовать PyQt для создания простого окна с графическим интерфейсом и размещения в нем кнопки, текст которой меняется при нажатии кнопки.

Затем,Мы рассмотрели, как использовать Selenium и PyQt для тестирования графического интерфейса. Мы показали, как встроить веб-представление в приложение PyQt.,И используйте Selenium для тестирования этих веб-компонентов. Эта комбинация позволяет охватить более широкий спектр сценариев тестирования графического интерфейса.,Особенно, когда вам нужно протестировать веб-контент, встроенный в приложения PyQt.

Наконец, мы выделили Объединение Selenium и PyQt для тестирования графического Преимущества интерфейса,Это помогает разработчикам более тщательно тестировать свои приложения.,Обеспечьте его качество и стабильность. таким образом,Разработчики могут проводить тестирование графического интерфейса быстро и эффективно.,и выявить потенциальные проблемы и недостатки.

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