Рубрики
Без рубрики

Почему я переключаюсь с C # в Python с Selenium

Я был недавно поручено автоматизировать новую обертку входа в систему нашего продукта. Это связано с ударом … Помечено селен, Python, Csharp, тестирование.

Я был недавно поручено автоматизировать новую обертку входа в систему нашего продукта. Это связано с ударом страницы пользовательского интерфейса сервера, перенаправляя на страницу входа в систему и проверяя, если вход в систему добится успеха или не удается. Другое требование было иметь возможность управлять тестами в трубопроводах Azure DevOps.

Я, как правило, не парень автоматизации пользовательского интерфейса, я обычно сосредоточен на API и коде отдыха в C #. Так что я начал с Selenium C #. Хотя было достаточно легко автоматизировать шаги входа в систему, я немедленно заблокировал, когда обнаружил, что мне нужно поддерживать заголовки хоста, чтобы запустить тесты в среде Kubernetes (K8S). Ну, селен из коробки не поддерживает заголовки хоста

Я смотрел в поисках возможных решений и лучший, который я нашел далеко, был Seleniumwire Отказ Seleniumwire поддерживает доступ к основным запросам/ответам. Вы можете изменить их и получать и получать коды ответов HTTP. Я чувствовал, что я вернулся в моем мире тестирования API! Единственное отличие было, что Seleniumwire только поддерживает Python, а не C #. Но мне пришлось иметь функциональность Seleniumwire, даже если мои навыки Python были несколько нообами.

Посмотрим, как легко установить заголовок хоста с Seleniumwire

import pytest
from seleniumwire import webdriver

def test_isAlive(url, hostheader):
    web_driver = webdriver.Chrome()
    web_driver.maximize_window()
    # check to set host header    
    if hostheader != 'none':
            web_driver.header_overrides = {'Host' : hostheader}

    isAliveUrl = '/api/isAlive'
    UIEndpoint = url
    loginURL = UIEndpoint + isAliveUrl
    web_driver.get(loginURL)

Теперь вышеперечисленное не весь сценарий, но вы получаете картину. Это решило огромную проблему, которая была невозможна с Selenium C #. Обратите внимание, что я проверяю значение заголовка хоста «Нет», если я не хочу использовать заголовок хоста.

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

# Access requests via the `requests` attribute
    for request in web_driver.requests:
        if request.response:
            print(
                request.url,
                request.response.status_code,
                request.headers                
            )    

    assert request.response.status_code == 200

Эти функции Seleniumwire могут показаться незначительными, но на самом деле они на самом деле огромные помощи в автоматизации UI. Селен должен сойти с высокой «Нам нужно вести себя как браузер« Лошадь и включить эту библиотеку во всех версиях! Пока они не сделают, у меня сейчас Python Automation Guy:)

Оригинал: “https://dev.to/tswiftma/why-i-m-switching-from-c-to-python-with-selenium-2oap”