Compare commits
No commits in common. "5cd46a8fd9edb64d884d9f14b2880c696ecd9378" and "85491b7cb9252ea28c423bcc4c66ff1b23d97f02" have entirely different histories.
5cd46a8fd9
...
85491b7cb9
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
|
@ -67,13 +67,13 @@ class SystemLogEventsContainer(EventsContainerComponent):
|
||||||
sidebar_filter.check_content()
|
sidebar_filter.check_content()
|
||||||
|
|
||||||
filter_type_bar = sidebar_filter.get_filtering_parameter("filter_type")
|
filter_type_bar = sidebar_filter.get_filtering_parameter("filter_type")
|
||||||
filter_type_title = filter_type_bar.get_selection_bar_title()
|
filter_type_title = filter_type_bar.get_filter_parameter_title()
|
||||||
assert filter_type_title == "Тип", "Filtering parameter bar 'Тип' is missing"
|
assert filter_type_title == "Тип", "Filtering parameter bar 'Тип' is missing"
|
||||||
|
|
||||||
filter_strictness_bar = sidebar_filter.get_filtering_parameter("filter_strictness")
|
filter_strictness_bar = sidebar_filter.get_filtering_parameter("filter_strictness")
|
||||||
filter_strictness_title = filter_strictness_bar.get_selection_bar_title()
|
filter_strictness_title = filter_strictness_bar.get_filter_parameter_title()
|
||||||
assert filter_strictness_title == "Строгость", "Filtering parameter bar 'Строгость' is missing"
|
assert filter_strictness_title == "Строгость", "Filtering parameter bar 'Строгость' is missing"
|
||||||
|
|
||||||
filter_host_bar = sidebar_filter.get_filtering_parameter("filter_host")
|
filter_host_bar = sidebar_filter.get_filtering_parameter("filter_host")
|
||||||
filter_host_title = filter_host_bar.get_selection_bar_title()
|
filter_host_title = filter_host_bar.get_filter_parameter_title()
|
||||||
assert filter_host_title == "Хост", "Filtering parameter bar 'Хост' is missing"
|
assert filter_host_title == "Хост", "Filtering parameter bar 'Хост' is missing"
|
||||||
|
|
|
||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
|
@ -1,20 +0,0 @@
|
||||||
# Minimal makefile for Sphinx documentation
|
|
||||||
#
|
|
||||||
|
|
||||||
# You can set these variables from the command line, and also
|
|
||||||
# from the environment for the first two.
|
|
||||||
SPHINXOPTS ?=
|
|
||||||
SPHINXBUILD ?= sphinx-build
|
|
||||||
SOURCEDIR = source
|
|
||||||
BUILDDIR = build
|
|
||||||
|
|
||||||
# Put it first so that "make" without argument is like "make help".
|
|
||||||
help:
|
|
||||||
@$(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)
|
|
||||||
|
|
||||||
.PHONY: help Makefile
|
|
||||||
|
|
||||||
# Catch-all target: route all unknown targets to Sphinx using the new
|
|
||||||
# "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS).
|
|
||||||
%: Makefile
|
|
||||||
@$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)
|
|
||||||
|
|
@ -1,4 +0,0 @@
|
||||||
# Sphinx build info version 1
|
|
||||||
# This file records the configuration used when building these files. When it is not found, a full rebuild will be done.
|
|
||||||
config: 56428dc241842362fe772e9fdd966681
|
|
||||||
tags: 645f666f9bcd5a90fca523b33c5a78b7
|
|
||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
|
@ -1,281 +0,0 @@
|
||||||
|
|
||||||
|
|
||||||
<!DOCTYPE html>
|
|
||||||
<html class="writer-html5" lang="ru" data-content_root="../../">
|
|
||||||
<head>
|
|
||||||
<meta charset="utf-8" />
|
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
||||||
<title>components.alert_component — документация e-nms-qa-automation 0.1.0</title>
|
|
||||||
<link rel="stylesheet" type="text/css" href="../../_static/pygments.css?v=b86133f3" />
|
|
||||||
<link rel="stylesheet" type="text/css" href="../../_static/css/theme.css?v=e59714d7" />
|
|
||||||
|
|
||||||
|
|
||||||
<script src="../../_static/jquery.js?v=5d32c60e"></script>
|
|
||||||
<script src="../../_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script>
|
|
||||||
<script src="../../_static/documentation_options.js?v=6ff560e8"></script>
|
|
||||||
<script src="../../_static/doctools.js?v=9bcbadda"></script>
|
|
||||||
<script src="../../_static/sphinx_highlight.js?v=dc90522c"></script>
|
|
||||||
<script src="../../_static/translations.js?v=cd1d70c9"></script>
|
|
||||||
<script src="../../_static/js/theme.js"></script>
|
|
||||||
<link rel="index" title="Алфавитный указатель" href="../../genindex.html" />
|
|
||||||
<link rel="search" title="Поиск" href="../../search.html" />
|
|
||||||
</head>
|
|
||||||
|
|
||||||
<body class="wy-body-for-nav">
|
|
||||||
<div class="wy-grid-for-nav">
|
|
||||||
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
|
|
||||||
<div class="wy-side-scroll">
|
|
||||||
<div class="wy-side-nav-search" >
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<a href="../../index.html" class="icon icon-home">
|
|
||||||
e-nms-qa-automation
|
|
||||||
</a>
|
|
||||||
<div role="search">
|
|
||||||
<form id="rtd-search-form" class="wy-form" action="../../search.html" method="get">
|
|
||||||
<input type="text" name="q" placeholder="Поиск в документации" aria-label="Поиск в документации" />
|
|
||||||
<input type="hidden" name="check_keywords" value="yes" />
|
|
||||||
<input type="hidden" name="area" value="default" />
|
|
||||||
</form>
|
|
||||||
</div>
|
|
||||||
</div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Меню навигации">
|
|
||||||
<!-- Local TOC -->
|
|
||||||
<div class="local-toc"></div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</nav>
|
|
||||||
|
|
||||||
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Меню навигации для мобильных устройств" >
|
|
||||||
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
|
|
||||||
<a href="../../index.html">e-nms-qa-automation</a>
|
|
||||||
</nav>
|
|
||||||
|
|
||||||
<div class="wy-nav-content">
|
|
||||||
<div class="rst-content">
|
|
||||||
<div role="navigation" aria-label="Навигация по страницам">
|
|
||||||
<ul class="wy-breadcrumbs">
|
|
||||||
<li><a href="../../index.html" class="icon icon-home" aria-label="Home"></a></li>
|
|
||||||
<li class="breadcrumb-item"><a href="../index.html">Код модуля</a></li>
|
|
||||||
<li class="breadcrumb-item active">components.alert_component</li>
|
|
||||||
<li class="wy-breadcrumbs-aside">
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
<hr/>
|
|
||||||
</div>
|
|
||||||
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
|
|
||||||
<div itemprop="articleBody">
|
|
||||||
|
|
||||||
<h1>Исходный код components.alert_component</h1><div class="highlight"><pre>
|
|
||||||
<span></span><span class="sd">"""Модуль для работы с компонентом alert-окна в Playwright.</span>
|
|
||||||
|
|
||||||
<span class="sd">Содержит класс AlertComponent для взаимодействия с различными типами</span>
|
|
||||||
<span class="sd">alert-окон (error, success, info, warning) и проверки их состояния.</span>
|
|
||||||
<span class="sd">"""</span>
|
|
||||||
|
|
||||||
<span class="kn">from</span><span class="w"> </span><span class="nn">playwright.sync_api</span><span class="w"> </span><span class="kn">import</span> <span class="n">Page</span><span class="p">,</span> <span class="n">expect</span>
|
|
||||||
<span class="kn">from</span><span class="w"> </span><span class="nn">tools.logger</span><span class="w"> </span><span class="kn">import</span> <span class="n">get_logger</span>
|
|
||||||
<span class="kn">from</span><span class="w"> </span><span class="nn">locators.alert_locators</span><span class="w"> </span><span class="kn">import</span> <span class="n">AlertLocators</span>
|
|
||||||
<span class="kn">from</span><span class="w"> </span><span class="nn">elements.text_element</span><span class="w"> </span><span class="kn">import</span> <span class="n">Text</span>
|
|
||||||
<span class="kn">from</span><span class="w"> </span><span class="nn">components.base_component</span><span class="w"> </span><span class="kn">import</span> <span class="n">BaseComponent</span>
|
|
||||||
|
|
||||||
<span class="n">logger</span> <span class="o">=</span> <span class="n">get_logger</span><span class="p">(</span><span class="s2">"ALERT"</span><span class="p">)</span>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="AlertComponent">
|
|
||||||
<a class="viewcode-back" href="../../components.html#components.alert_component.AlertComponent">[документация]</a>
|
|
||||||
<span class="k">class</span><span class="w"> </span><span class="nc">AlertComponent</span><span class="p">(</span><span class="n">BaseComponent</span><span class="p">):</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Компонент для работы с alert-окнами Playwright.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Поддерживает типы: error, success, info, warning.</span>
|
|
||||||
<span class="sd"> Позволяет проверять наличие, отсутствие и текст сообщений.</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="AlertComponent.__init__">
|
|
||||||
<a class="viewcode-back" href="../../components.html#components.alert_component.AlertComponent.__init__">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">page</span><span class="p">:</span> <span class="n">Page</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Инициализирует компонент alert-окна.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Args:</span>
|
|
||||||
<span class="sd"> page: Экземпляр страницы Playwright.</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
|
|
||||||
<span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="fm">__init__</span><span class="p">(</span><span class="n">page</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">text</span> <span class="o">=</span> <span class="n">Text</span><span class="p">(</span><span class="n">page</span><span class="p">,</span> <span class="n">AlertLocators</span><span class="o">.</span><span class="n">ALERT_MESSAGE</span><span class="p">,</span> <span class="s2">"Alert message"</span><span class="p">)</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<span class="c1"># Действия:</span>
|
|
||||||
<div class="viewcode-block" id="AlertComponent.close_alert_by_text">
|
|
||||||
<a class="viewcode-back" href="../../components.html#components.alert_component.AlertComponent.close_alert_by_text">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">close_alert_by_text</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">text</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Закрывает alert-окно с заданным текстом с помощью кнопки закрытия.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Args:</span>
|
|
||||||
<span class="sd"> text: Текст alert-окна, которое нужно закрыть.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Raises:</span>
|
|
||||||
<span class="sd"> AssertionError: Если не удалось найти или закрыть alert-окно.</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
<span class="c1"># Находим alert с нужным текстом</span>
|
|
||||||
<span class="n">alert_locator</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">page</span><span class="o">.</span><span class="n">get_by_role</span><span class="p">(</span>
|
|
||||||
<span class="n">AlertLocators</span><span class="o">.</span><span class="n">ALERT_ROLE</span>
|
|
||||||
<span class="p">)</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span><span class="n">has_text</span><span class="o">=</span><span class="n">text</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="c1"># Проверяем, что alert видим</span>
|
|
||||||
<span class="n">expect</span><span class="p">(</span><span class="n">alert_locator</span><span class="p">)</span><span class="o">.</span><span class="n">to_be_visible</span><span class="p">()</span>
|
|
||||||
|
|
||||||
<span class="c1"># Находим кнопку закрытия внутри alert</span>
|
|
||||||
<span class="n">close_button</span> <span class="o">=</span> <span class="n">alert_locator</span><span class="o">.</span><span class="n">locator</span><span class="p">(</span><span class="n">AlertLocators</span><span class="o">.</span><span class="n">ALERT_DISMISS_BUTTON</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="c1"># Проверяем, что кнопка закрытия доступна и кликаем</span>
|
|
||||||
<span class="n">expect</span><span class="p">(</span><span class="n">close_button</span><span class="p">)</span><span class="o">.</span><span class="n">to_be_visible</span><span class="p">()</span>
|
|
||||||
<span class="n">expect</span><span class="p">(</span><span class="n">close_button</span><span class="p">)</span><span class="o">.</span><span class="n">to_be_enabled</span><span class="p">()</span>
|
|
||||||
|
|
||||||
<span class="c1"># Кликаем по кнопке закрытия</span>
|
|
||||||
<span class="n">close_button</span><span class="o">.</span><span class="n">click</span><span class="p">()</span>
|
|
||||||
|
|
||||||
<span class="c1"># Проверяем, что alert исчез после закрытия</span>
|
|
||||||
<span class="n">expect</span><span class="p">(</span><span class="n">alert_locator</span><span class="p">)</span><span class="o">.</span><span class="n">to_be_hidden</span><span class="p">()</span>
|
|
||||||
|
|
||||||
<span class="n">logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Alert with text '</span><span class="si">{</span><span class="n">text</span><span class="si">}</span><span class="s2">' closed successfully"</span><span class="p">)</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="AlertComponent.get_alert_type">
|
|
||||||
<a class="viewcode-back" href="../../components.html#components.alert_component.AlertComponent.get_alert_type">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">get_alert_type</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Возвращает тип alert-окна.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Returns:</span>
|
|
||||||
<span class="sd"> str: Тип alert-окна.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Raises:</span>
|
|
||||||
<span class="sd"> ValueError: Если получен неподдерживаемый тип alert-окна.</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
|
|
||||||
<span class="n">class_attr</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">page</span><span class="o">.</span><span class="n">get_by_role</span><span class="p">(</span><span class="n">AlertLocators</span><span class="o">.</span><span class="n">ALERT_ROLE</span><span class="p">)</span><span class="o">.</span><span class="n">locator</span><span class="p">(</span>
|
|
||||||
<span class="s1">'>div'</span>
|
|
||||||
<span class="p">)</span><span class="o">.</span><span class="n">get_attribute</span><span class="p">(</span><span class="s1">'class'</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="n">alert_type</span> <span class="o">=</span> <span class="kc">None</span>
|
|
||||||
<span class="k">if</span> <span class="s1">'v-alert'</span> <span class="ow">in</span> <span class="n">class_attr</span><span class="p">:</span>
|
|
||||||
<span class="n">alert_type</span> <span class="o">=</span> <span class="n">class_attr</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="s2">"v-alert "</span><span class="p">,</span> <span class="s2">""</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="n">alert_types</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"error"</span><span class="p">,</span> <span class="s2">"success"</span><span class="p">,</span> <span class="s2">"info"</span><span class="p">,</span> <span class="s2">"warning"</span><span class="p">]</span>
|
|
||||||
<span class="k">if</span> <span class="n">alert_type</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">alert_types</span><span class="p">:</span>
|
|
||||||
<span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s2">"Unsupported type of alert window"</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="k">return</span> <span class="n">alert_type</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="AlertComponent.get_text">
|
|
||||||
<a class="viewcode-back" href="../../components.html#components.alert_component.AlertComponent.get_text">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">get_text</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Возвращает текст сообщения из alert-окна.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Returns:</span>
|
|
||||||
<span class="sd"> str: Текст сообщения.</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
|
|
||||||
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">text</span><span class="o">.</span><span class="n">get_text</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<span class="c1"># Проверки:</span>
|
|
||||||
<div class="viewcode-block" id="AlertComponent.check_alert_absence">
|
|
||||||
<a class="viewcode-back" href="../../components.html#components.alert_component.AlertComponent.check_alert_absence">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">check_alert_absence</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">text</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">timeout</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">30000</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Проверяет отсутствие alert-окна с заданным текстом.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Args:</span>
|
|
||||||
<span class="sd"> text: Текст для проверки.</span>
|
|
||||||
<span class="sd"> timeout: Время ожидания исчезновения (мс).</span>
|
|
||||||
|
|
||||||
<span class="sd"> Raises:</span>
|
|
||||||
<span class="sd"> AssertionError: Если окно не исчезает в течение заданного времени.</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
|
|
||||||
<span class="n">seconds</span> <span class="o">=</span> <span class="nb">int</span><span class="p">(</span><span class="n">timeout</span><span class="o">/</span><span class="mi">1000</span><span class="p">)</span>
|
|
||||||
<span class="n">msg</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"Alert window should disappear after </span><span class="si">{</span><span class="n">seconds</span><span class="si">}</span><span class="s2"> seconds"</span>
|
|
||||||
|
|
||||||
<span class="k">if</span> <span class="n">text</span> <span class="o">==</span> <span class="s2">""</span><span class="p">:</span>
|
|
||||||
<span class="n">expect</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">page</span><span class="o">.</span><span class="n">get_by_role</span><span class="p">(</span>
|
|
||||||
<span class="n">AlertLocators</span><span class="o">.</span><span class="n">ALERT_ROLE</span>
|
|
||||||
<span class="p">))</span><span class="o">.</span><span class="n">to_be_hidden</span><span class="p">(</span><span class="n">timeout</span><span class="o">=</span><span class="n">timeout</span><span class="p">),</span> <span class="n">msg</span>
|
|
||||||
<span class="n">logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Alert window successfully disappeared"</span><span class="p">)</span>
|
|
||||||
<span class="k">else</span><span class="p">:</span>
|
|
||||||
<span class="n">expect</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">page</span><span class="o">.</span><span class="n">get_by_role</span><span class="p">(</span>
|
|
||||||
<span class="n">AlertLocators</span><span class="o">.</span><span class="n">ALERT_ROLE</span>
|
|
||||||
<span class="p">)</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span><span class="n">has_text</span><span class="o">=</span><span class="n">text</span><span class="p">))</span><span class="o">.</span><span class="n">to_be_hidden</span><span class="p">(</span><span class="n">timeout</span><span class="o">=</span><span class="n">timeout</span><span class="p">),</span> <span class="n">msg</span>
|
|
||||||
<span class="n">logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Alert window with text '</span><span class="si">{</span><span class="n">text</span><span class="si">}</span><span class="s2">' successfully disappeared"</span><span class="p">)</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="AlertComponent.check_alert_presence">
|
|
||||||
<a class="viewcode-back" href="../../components.html#components.alert_component.AlertComponent.check_alert_presence">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">check_alert_presence</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">text</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Проверяет наличие alert-окна с заданным текстом.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Args:</span>
|
|
||||||
<span class="sd"> text: Текст для проверки. Если пустая строка - проверяет только</span>
|
|
||||||
<span class="sd"> наличие окна.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Raises:</span>
|
|
||||||
<span class="sd"> AssertionError: Если alert-окно не найдено.</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
|
|
||||||
<span class="n">msg</span> <span class="o">=</span> <span class="s2">"Alert window is missing"</span>
|
|
||||||
<span class="k">if</span> <span class="n">text</span> <span class="o">==</span> <span class="s2">""</span><span class="p">:</span>
|
|
||||||
<span class="n">expect</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">page</span><span class="o">.</span><span class="n">get_by_role</span><span class="p">(</span><span class="n">AlertLocators</span><span class="o">.</span><span class="n">ALERT_ROLE</span><span class="p">))</span><span class="o">.</span><span class="n">to_be_visible</span><span class="p">(),</span> <span class="n">msg</span>
|
|
||||||
<span class="n">logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Alert window successfully displayed"</span><span class="p">)</span>
|
|
||||||
<span class="k">else</span><span class="p">:</span>
|
|
||||||
<span class="n">expect</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">page</span><span class="o">.</span><span class="n">get_by_role</span><span class="p">(</span>
|
|
||||||
<span class="n">AlertLocators</span><span class="o">.</span><span class="n">ALERT_ROLE</span>
|
|
||||||
<span class="p">)</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span><span class="n">has_text</span><span class="o">=</span><span class="n">text</span><span class="p">))</span><span class="o">.</span><span class="n">to_be_visible</span><span class="p">(),</span> <span class="n">msg</span>
|
|
||||||
<span class="n">logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Alert window with text '</span><span class="si">{</span><span class="n">text</span><span class="si">}</span><span class="s2">' successfully displayed"</span><span class="p">)</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="AlertComponent.check_text">
|
|
||||||
<a class="viewcode-back" href="../../components.html#components.alert_component.AlertComponent.check_text">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">check_text</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">alert_text</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Проверяет точное соответствие текста в alert-окне.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Args:</span>
|
|
||||||
<span class="sd"> alert_text: Ожидаемый текст сообщения.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Raises:</span>
|
|
||||||
<span class="sd"> AssertionError: Если текст не соответствует ожидаемому.</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">text</span><span class="o">.</span><span class="n">check_have_text</span><span class="p">(</span><span class="n">alert_text</span><span class="p">,</span>
|
|
||||||
<span class="s2">"Unexpected message in alert window"</span><span class="p">)</span></div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</pre></div>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<footer>
|
|
||||||
|
|
||||||
<hr/>
|
|
||||||
|
|
||||||
<div role="contentinfo">
|
|
||||||
<p>© Авторские права 2025, NPO KIS. </p>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
Собрано при помощи <a href="https://www.sphinx-doc.org/">Sphinx</a> с использованием
|
|
||||||
<a href="https://github.com/readthedocs/sphinx_rtd_theme">темы,</a>
|
|
||||||
предоставленной <a href="https://readthedocs.org">Read the Docs</a>.
|
|
||||||
|
|
||||||
|
|
||||||
</footer>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</section>
|
|
||||||
</div>
|
|
||||||
<script>
|
|
||||||
jQuery(function () {
|
|
||||||
SphinxRtdTheme.Navigation.enable(true);
|
|
||||||
});
|
|
||||||
</script>
|
|
||||||
|
|
||||||
</body>
|
|
||||||
</html>
|
|
||||||
|
|
@ -1,462 +0,0 @@
|
||||||
|
|
||||||
|
|
||||||
<!DOCTYPE html>
|
|
||||||
<html class="writer-html5" lang="ru" data-content_root="../../">
|
|
||||||
<head>
|
|
||||||
<meta charset="utf-8" />
|
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
||||||
<title>components.base_component — документация e-nms-qa-automation 0.1.0</title>
|
|
||||||
<link rel="stylesheet" type="text/css" href="../../_static/pygments.css?v=b86133f3" />
|
|
||||||
<link rel="stylesheet" type="text/css" href="../../_static/css/theme.css?v=e59714d7" />
|
|
||||||
|
|
||||||
|
|
||||||
<script src="../../_static/jquery.js?v=5d32c60e"></script>
|
|
||||||
<script src="../../_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script>
|
|
||||||
<script src="../../_static/documentation_options.js?v=6ff560e8"></script>
|
|
||||||
<script src="../../_static/doctools.js?v=9bcbadda"></script>
|
|
||||||
<script src="../../_static/sphinx_highlight.js?v=dc90522c"></script>
|
|
||||||
<script src="../../_static/translations.js?v=cd1d70c9"></script>
|
|
||||||
<script src="../../_static/js/theme.js"></script>
|
|
||||||
<link rel="index" title="Алфавитный указатель" href="../../genindex.html" />
|
|
||||||
<link rel="search" title="Поиск" href="../../search.html" />
|
|
||||||
</head>
|
|
||||||
|
|
||||||
<body class="wy-body-for-nav">
|
|
||||||
<div class="wy-grid-for-nav">
|
|
||||||
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
|
|
||||||
<div class="wy-side-scroll">
|
|
||||||
<div class="wy-side-nav-search" >
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<a href="../../index.html" class="icon icon-home">
|
|
||||||
e-nms-qa-automation
|
|
||||||
</a>
|
|
||||||
<div role="search">
|
|
||||||
<form id="rtd-search-form" class="wy-form" action="../../search.html" method="get">
|
|
||||||
<input type="text" name="q" placeholder="Поиск в документации" aria-label="Поиск в документации" />
|
|
||||||
<input type="hidden" name="check_keywords" value="yes" />
|
|
||||||
<input type="hidden" name="area" value="default" />
|
|
||||||
</form>
|
|
||||||
</div>
|
|
||||||
</div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Меню навигации">
|
|
||||||
<!-- Local TOC -->
|
|
||||||
<div class="local-toc"></div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</nav>
|
|
||||||
|
|
||||||
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Меню навигации для мобильных устройств" >
|
|
||||||
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
|
|
||||||
<a href="../../index.html">e-nms-qa-automation</a>
|
|
||||||
</nav>
|
|
||||||
|
|
||||||
<div class="wy-nav-content">
|
|
||||||
<div class="rst-content">
|
|
||||||
<div role="navigation" aria-label="Навигация по страницам">
|
|
||||||
<ul class="wy-breadcrumbs">
|
|
||||||
<li><a href="../../index.html" class="icon icon-home" aria-label="Home"></a></li>
|
|
||||||
<li class="breadcrumb-item"><a href="../index.html">Код модуля</a></li>
|
|
||||||
<li class="breadcrumb-item active">components.base_component</li>
|
|
||||||
<li class="wy-breadcrumbs-aside">
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
<hr/>
|
|
||||||
</div>
|
|
||||||
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
|
|
||||||
<div itemprop="articleBody">
|
|
||||||
|
|
||||||
<h1>Исходный код components.base_component</h1><div class="highlight"><pre>
|
|
||||||
<span></span><span class="sd">"""Базовый модуль для работы с компонентами страницы.</span>
|
|
||||||
|
|
||||||
<span class="sd">Содержит базовый класс для взаимодействия с элементами страницы через Playwright.</span>
|
|
||||||
<span class="sd">"""</span>
|
|
||||||
|
|
||||||
<span class="kn">from</span><span class="w"> </span><span class="nn">playwright.sync_api</span><span class="w"> </span><span class="kn">import</span> <span class="n">Page</span><span class="p">,</span> <span class="n">Locator</span><span class="p">,</span> <span class="n">expect</span>
|
|
||||||
<span class="kn">from</span><span class="w"> </span><span class="nn">tools.logger</span><span class="w"> </span><span class="kn">import</span> <span class="n">get_logger</span>
|
|
||||||
|
|
||||||
<span class="n">logger</span> <span class="o">=</span> <span class="n">get_logger</span><span class="p">(</span><span class="s2">"BASE_COMPONENT"</span><span class="p">)</span>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="BaseComponent">
|
|
||||||
<a class="viewcode-back" href="../../components.html#components.base_component.BaseComponent">[документация]</a>
|
|
||||||
<span class="k">class</span><span class="w"> </span><span class="nc">BaseComponent</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Базовый компонент для работы с элементами страницы.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Предоставляет общие методы для взаимодействия с элементами:</span>
|
|
||||||
<span class="sd"> - получение локаторов</span>
|
|
||||||
<span class="sd"> - проверка видимости элементов</span>
|
|
||||||
<span class="sd"> - работа с прокруткой</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="BaseComponent.__init__">
|
|
||||||
<a class="viewcode-back" href="../../components.html#components.base_component.BaseComponent.__init__">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">page</span><span class="p">:</span> <span class="n">Page</span><span class="p">):</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Инициализация базового компонента.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Args:</span>
|
|
||||||
<span class="sd"> page: экземпляр страницы Playwright.</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">page</span> <span class="o">=</span> <span class="n">page</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<span class="c1"># Действия:</span>
|
|
||||||
<div class="viewcode-block" id="BaseComponent.get_locator">
|
|
||||||
<a class="viewcode-back" href="../../components.html#components.base_component.BaseComponent.get_locator">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">get_locator</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">locator</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="n">Locator</span><span class="p">)</span> <span class="o">-></span> <span class="n">Locator</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Получение объекта Locator из строки или существующего Locator.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Args:</span>
|
|
||||||
<span class="sd"> locator: строка с CSS/XPath селектором или объект Locator.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Returns:</span>
|
|
||||||
<span class="sd"> Locator: объект для работы с элементом.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Raises:</span>
|
|
||||||
<span class="sd"> TypeError: если передан некорректный тип локатора.</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
|
|
||||||
<span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">locator</span><span class="p">,</span> <span class="n">Locator</span><span class="p">):</span>
|
|
||||||
<span class="k">return</span> <span class="n">locator</span>
|
|
||||||
<span class="k">elif</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">locator</span><span class="p">,</span> <span class="nb">str</span><span class="p">):</span>
|
|
||||||
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">page</span><span class="o">.</span><span class="n">locator</span><span class="p">(</span><span class="n">locator</span><span class="p">)</span>
|
|
||||||
<span class="k">else</span><span class="p">:</span>
|
|
||||||
<span class="k">raise</span> <span class="ne">TypeError</span><span class="p">(</span><span class="s2">"locator value should be string type or Locator type"</span><span class="p">)</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<span class="c1"># Закомментированный код сохранен без изменений</span>
|
|
||||||
<span class="c1"># def wait_for_all_elements(self, locator: Locator, timeout=5000):</span>
|
|
||||||
<span class="c1"># loc = self.get_locator(locator)</span>
|
|
||||||
<span class="c1"># elements = self.page.locator(loc).all()</span>
|
|
||||||
<span class="c1">#</span>
|
|
||||||
<span class="c1"># for element in elements:</span>
|
|
||||||
<span class="c1"># self.page.locator(loc).wait_for(timeout=timeout)</span>
|
|
||||||
<span class="c1">#</span>
|
|
||||||
<span class="c1"># return elements</span>
|
|
||||||
|
|
||||||
<span class="c1"># Проверки:</span>
|
|
||||||
<div class="viewcode-block" id="BaseComponent.check_absence">
|
|
||||||
<a class="viewcode-back" href="../../components.html#components.base_component.BaseComponent.check_absence">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">check_absence</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">locator</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="n">Locator</span><span class="p">,</span> <span class="n">msg</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Проверка отсутствия элемента на странице.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Args:</span>
|
|
||||||
<span class="sd"> locator: локатор элемента (строка или объект Locator).</span>
|
|
||||||
<span class="sd"> msg: сообщение об ошибке при неудачной проверке.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Raises:</span>
|
|
||||||
<span class="sd"> AssertionError: если элемент виден на странице.</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
|
|
||||||
<span class="n">loc</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_locator</span><span class="p">(</span><span class="n">locator</span><span class="p">)</span>
|
|
||||||
<span class="n">expect</span><span class="p">(</span><span class="n">loc</span><span class="p">)</span><span class="o">.</span><span class="n">to_be_hidden</span><span class="p">(</span><span class="n">timeout</span><span class="o">=</span><span class="mi">12000</span><span class="p">),</span> <span class="n">msg</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="BaseComponent.check_visibility">
|
|
||||||
<a class="viewcode-back" href="../../components.html#components.base_component.BaseComponent.check_visibility">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">check_visibility</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">locator</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="n">Locator</span><span class="p">,</span> <span class="n">msg</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Проверка видимости элемента на странице.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Args:</span>
|
|
||||||
<span class="sd"> locator: локатор элемента (строка или объект Locator).</span>
|
|
||||||
<span class="sd"> msg: сообщение об ошибке при неудачной проверке.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Raises:</span>
|
|
||||||
<span class="sd"> AssertionError: если элемент не виден на странице.</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
|
|
||||||
<span class="n">loc</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_locator</span><span class="p">(</span><span class="n">locator</span><span class="p">)</span>
|
|
||||||
<span class="n">expect</span><span class="p">(</span><span class="n">loc</span><span class="p">)</span><span class="o">.</span><span class="n">to_be_visible</span><span class="p">(</span><span class="n">visible</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">timeout</span><span class="o">=</span><span class="mi">12000</span><span class="p">),</span> <span class="n">msg</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="BaseComponent.is_scrollable_vertically">
|
|
||||||
<a class="viewcode-back" href="../../components.html#components.base_component.BaseComponent.is_scrollable_vertically">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">is_scrollable_vertically</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">locator</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="n">Locator</span><span class="p">)</span> <span class="o">-></span> <span class="nb">bool</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Проверка возможности вертикальной прокрутки элемента.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Args:</span>
|
|
||||||
<span class="sd"> locator: локатор элемента.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Returns:</span>
|
|
||||||
<span class="sd"> bool: True если элемент можно прокрутить вертикально.</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
|
|
||||||
<span class="n">loc</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_locator</span><span class="p">(</span><span class="n">locator</span><span class="p">)</span>
|
|
||||||
<span class="k">return</span> <span class="n">loc</span><span class="o">.</span><span class="n">evaluate</span><span class="p">(</span><span class="s2">"el => el.scrollHeight > el.clientHeight"</span><span class="p">)</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="BaseComponent.is_scrollable_horizontally">
|
|
||||||
<a class="viewcode-back" href="../../components.html#components.base_component.BaseComponent.is_scrollable_horizontally">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">is_scrollable_horizontally</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">locator</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="n">Locator</span><span class="p">)</span> <span class="o">-></span> <span class="nb">bool</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Проверка возможности горизонтальной прокрутки элемента.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Args:</span>
|
|
||||||
<span class="sd"> locator: локатор элемента.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Returns:</span>
|
|
||||||
<span class="sd"> bool: True если элемент можно прокрутить горизонтально.</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
|
|
||||||
<span class="n">loc</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_locator</span><span class="p">(</span><span class="n">locator</span><span class="p">)</span>
|
|
||||||
<span class="k">return</span> <span class="n">loc</span><span class="o">.</span><span class="n">evaluate</span><span class="p">(</span><span class="s2">"el => el.scrollWidth > el.clientWidth"</span><span class="p">)</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<span class="c1"># Методы прокрутки:</span>
|
|
||||||
<div class="viewcode-block" id="BaseComponent.scroll_up">
|
|
||||||
<a class="viewcode-back" href="../../components.html#components.base_component.BaseComponent.scroll_up">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">scroll_up</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">locator</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="n">Locator</span><span class="p">,</span> <span class="n">timeout</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">10000</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Прокрутка элемента до самого верха.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Args:</span>
|
|
||||||
<span class="sd"> locator: локатор элемента.</span>
|
|
||||||
<span class="sd"> timeout: максимальное время ожидания в мс.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Raises:</span>
|
|
||||||
<span class="sd"> AssertionError: если прокрутка не выполнена до верха.</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
|
|
||||||
<span class="n">loc</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_locator</span><span class="p">(</span><span class="n">locator</span><span class="p">)</span>
|
|
||||||
<span class="n">max_attempts</span> <span class="o">=</span> <span class="mi">3</span>
|
|
||||||
<span class="n">attempt</span> <span class="o">=</span> <span class="mi">0</span>
|
|
||||||
|
|
||||||
<span class="k">while</span> <span class="n">attempt</span> <span class="o"><</span> <span class="n">max_attempts</span><span class="p">:</span>
|
|
||||||
<span class="c1"># Получаем текущую позицию прокрутки</span>
|
|
||||||
<span class="n">previous_position</span> <span class="o">=</span> <span class="n">loc</span><span class="o">.</span><span class="n">evaluate</span><span class="p">(</span><span class="s2">"el => el.scrollTop"</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="c1"># Прокручиваем до верха</span>
|
|
||||||
<span class="n">loc</span><span class="o">.</span><span class="n">evaluate</span><span class="p">(</span><span class="s2">"el => el.scrollTo(0, 0)"</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="c1"># Ждем завершения прокрутки с использованием timeout</span>
|
|
||||||
<span class="n">loc</span><span class="o">.</span><span class="n">wait_for</span><span class="p">(</span><span class="n">timeout</span><span class="o">=</span><span class="nb">min</span><span class="p">(</span><span class="mi">2000</span><span class="p">,</span> <span class="n">timeout</span><span class="p">))</span>
|
|
||||||
|
|
||||||
<span class="c1"># Получаем новую позицию прокрутки</span>
|
|
||||||
<span class="n">current_position</span> <span class="o">=</span> <span class="n">loc</span><span class="o">.</span><span class="n">evaluate</span><span class="p">(</span><span class="s2">"el => el.scrollTop"</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="c1"># Проверяем, достигли ли мы верха</span>
|
|
||||||
<span class="k">if</span> <span class="n">current_position</span> <span class="o"><=</span> <span class="mi">1</span><span class="p">:</span> <span class="c1"># <= 1 для учета погрешности</span>
|
|
||||||
<span class="k">return</span> <span class="c1"># Успешно прокрутили до верха</span>
|
|
||||||
|
|
||||||
<span class="c1"># Проверяем, была ли вообще прокрутка</span>
|
|
||||||
<span class="k">if</span> <span class="n">current_position</span> <span class="o">>=</span> <span class="n">previous_position</span><span class="p">:</span>
|
|
||||||
<span class="n">attempt</span> <span class="o">+=</span> <span class="mi">1</span>
|
|
||||||
<span class="k">else</span><span class="p">:</span>
|
|
||||||
<span class="n">attempt</span> <span class="o">=</span> <span class="mi">0</span> <span class="c1"># Сбрасываем счетчик, если была прокрутка</span>
|
|
||||||
|
|
||||||
<span class="c1"># Если вышли из цикла - не смогли прокрутить до верха</span>
|
|
||||||
<span class="n">final_position</span> <span class="o">=</span> <span class="n">loc</span><span class="o">.</span><span class="n">evaluate</span><span class="p">(</span><span class="s2">"el => el.scrollTop"</span><span class="p">)</span>
|
|
||||||
<span class="n">scroll_height</span> <span class="o">=</span> <span class="n">loc</span><span class="o">.</span><span class="n">evaluate</span><span class="p">(</span><span class="s2">"el => el.scrollHeight"</span><span class="p">)</span>
|
|
||||||
<span class="n">client_height</span> <span class="o">=</span> <span class="n">loc</span><span class="o">.</span><span class="n">evaluate</span><span class="p">(</span><span class="s2">"el => el.clientHeight"</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="k">raise</span> <span class="ne">AssertionError</span><span class="p">(</span>
|
|
||||||
<span class="sa">f</span><span class="s2">"Не удалось прокрутить до верха. "</span>
|
|
||||||
<span class="sa">f</span><span class="s2">"Текущая позиция: </span><span class="si">{</span><span class="n">final_position</span><span class="si">}</span><span class="s2">, ожидалось: 0, "</span>
|
|
||||||
<span class="sa">f</span><span class="s2">"Высота контента: </span><span class="si">{</span><span class="n">scroll_height</span><span class="si">}</span><span class="s2">, "</span>
|
|
||||||
<span class="sa">f</span><span class="s2">"Высота видимой области: </span><span class="si">{</span><span class="n">client_height</span><span class="si">}</span><span class="s2">"</span>
|
|
||||||
<span class="p">)</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="BaseComponent.scroll_down">
|
|
||||||
<a class="viewcode-back" href="../../components.html#components.base_component.BaseComponent.scroll_down">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">scroll_down</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">locator</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="n">Locator</span><span class="p">,</span> <span class="n">timeout</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">10000</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Прокрутка элемента до самого конца.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Args:</span>
|
|
||||||
<span class="sd"> locator: локатор элемента.</span>
|
|
||||||
<span class="sd"> timeout: максимальное время ожидания в мс.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Raises:</span>
|
|
||||||
<span class="sd"> AssertionError: если прокрутка не выполнена до конца.</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
|
|
||||||
<span class="n">loc</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_locator</span><span class="p">(</span><span class="n">locator</span><span class="p">)</span>
|
|
||||||
<span class="n">max_attempts</span> <span class="o">=</span> <span class="mi">3</span>
|
|
||||||
<span class="n">attempt</span> <span class="o">=</span> <span class="mi">0</span>
|
|
||||||
|
|
||||||
<span class="k">while</span> <span class="n">attempt</span> <span class="o"><</span> <span class="n">max_attempts</span><span class="p">:</span>
|
|
||||||
<span class="c1"># Получаем текущую позицию прокрутки и размеры</span>
|
|
||||||
<span class="n">current_position</span> <span class="o">=</span> <span class="n">loc</span><span class="o">.</span><span class="n">evaluate</span><span class="p">(</span><span class="s2">"el => el.scrollTop"</span><span class="p">)</span>
|
|
||||||
<span class="n">scroll_height</span> <span class="o">=</span> <span class="n">loc</span><span class="o">.</span><span class="n">evaluate</span><span class="p">(</span><span class="s2">"el => el.scrollHeight"</span><span class="p">)</span>
|
|
||||||
<span class="n">client_height</span> <span class="o">=</span> <span class="n">loc</span><span class="o">.</span><span class="n">evaluate</span><span class="p">(</span><span class="s2">"el => el.clientHeight"</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="c1"># Проверяем, достигли ли мы конца ДО прокрутки</span>
|
|
||||||
<span class="k">if</span> <span class="n">current_position</span> <span class="o">+</span> <span class="n">client_height</span> <span class="o">>=</span> <span class="n">scroll_height</span> <span class="o">-</span> <span class="mi">5</span><span class="p">:</span> <span class="c1"># -5 для учета погрешности</span>
|
|
||||||
<span class="k">return</span> <span class="c1"># Уже прокручено до конца</span>
|
|
||||||
|
|
||||||
<span class="c1"># Прокручиваем до конца</span>
|
|
||||||
<span class="n">loc</span><span class="o">.</span><span class="n">evaluate</span><span class="p">(</span><span class="s2">"el => el.scrollTo(0, el.scrollHeight)"</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="c1"># Ждем загрузки контента</span>
|
|
||||||
<span class="n">loc</span><span class="o">.</span><span class="n">wait_for</span><span class="p">(</span><span class="n">timeout</span><span class="o">=</span><span class="nb">min</span><span class="p">(</span><span class="mi">2000</span><span class="p">,</span> <span class="n">timeout</span><span class="p">))</span>
|
|
||||||
|
|
||||||
<span class="c1"># Получаем новую позицию прокрутки</span>
|
|
||||||
<span class="n">new_position</span> <span class="o">=</span> <span class="n">loc</span><span class="o">.</span><span class="n">evaluate</span><span class="p">(</span><span class="s2">"el => el.scrollTop"</span><span class="p">)</span>
|
|
||||||
<span class="n">new_scroll_height</span> <span class="o">=</span> <span class="n">loc</span><span class="o">.</span><span class="n">evaluate</span><span class="p">(</span><span class="s2">"el => el.scrollHeight"</span><span class="p">)</span>
|
|
||||||
<span class="n">new_client_height</span> <span class="o">=</span> <span class="n">loc</span><span class="o">.</span><span class="n">evaluate</span><span class="p">(</span><span class="s2">"el => el.clientHeight"</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="c1"># Проверяем, достигли ли мы конца</span>
|
|
||||||
<span class="k">if</span> <span class="n">new_position</span> <span class="o">+</span> <span class="n">new_client_height</span> <span class="o">>=</span> <span class="n">new_scroll_height</span> <span class="o">-</span> <span class="mi">5</span><span class="p">:</span> <span class="c1"># -5 для учета погрешности</span>
|
|
||||||
<span class="k">return</span> <span class="c1"># Успешно прокрутили до конца</span>
|
|
||||||
|
|
||||||
<span class="c1"># Проверяем, была ли прокрутка</span>
|
|
||||||
<span class="k">if</span> <span class="n">new_position</span> <span class="o"><=</span> <span class="n">current_position</span> <span class="ow">and</span> <span class="n">new_scroll_height</span> <span class="o"><=</span> <span class="n">scroll_height</span><span class="p">:</span>
|
|
||||||
<span class="c1"># Прокрутки не произошло или контент не изменился</span>
|
|
||||||
<span class="n">attempt</span> <span class="o">+=</span> <span class="mi">1</span>
|
|
||||||
<span class="k">else</span><span class="p">:</span>
|
|
||||||
<span class="n">attempt</span> <span class="o">=</span> <span class="mi">0</span> <span class="c1"># Сбрасываем счетчик, если была прокрутка</span>
|
|
||||||
|
|
||||||
<span class="c1"># Если вышли из цикла - не смогли прокрутить до конца</span>
|
|
||||||
<span class="n">final_position</span> <span class="o">=</span> <span class="n">loc</span><span class="o">.</span><span class="n">evaluate</span><span class="p">(</span><span class="s2">"el => el.scrollTop"</span><span class="p">)</span>
|
|
||||||
<span class="n">final_scroll_height</span> <span class="o">=</span> <span class="n">loc</span><span class="o">.</span><span class="n">evaluate</span><span class="p">(</span><span class="s2">"el => el.scrollHeight"</span><span class="p">)</span>
|
|
||||||
<span class="n">final_client_height</span> <span class="o">=</span> <span class="n">loc</span><span class="o">.</span><span class="n">evaluate</span><span class="p">(</span><span class="s2">"el => el.clientHeight"</span><span class="p">)</span>
|
|
||||||
<span class="n">max_scroll_y</span> <span class="o">=</span> <span class="n">final_scroll_height</span> <span class="o">-</span> <span class="n">final_client_height</span>
|
|
||||||
|
|
||||||
<span class="k">raise</span> <span class="ne">AssertionError</span><span class="p">(</span>
|
|
||||||
<span class="sa">f</span><span class="s2">"Не удалось прокрутить до конца. "</span>
|
|
||||||
<span class="sa">f</span><span class="s2">"Текущая позиция: </span><span class="si">{</span><span class="n">final_position</span><span class="si">}</span><span class="s2">, ожидалось: </span><span class="si">{</span><span class="n">max_scroll_y</span><span class="si">}</span><span class="s2">, "</span>
|
|
||||||
<span class="sa">f</span><span class="s2">"Высота контента: </span><span class="si">{</span><span class="n">final_scroll_height</span><span class="si">}</span><span class="s2">, "</span>
|
|
||||||
<span class="sa">f</span><span class="s2">"Высота видимой области: </span><span class="si">{</span><span class="n">final_client_height</span><span class="si">}</span><span class="s2">, "</span>
|
|
||||||
<span class="sa">f</span><span class="s2">"Сумма: </span><span class="si">{</span><span class="n">final_position</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="n">final_client_height</span><span class="si">}</span><span class="s2">"</span>
|
|
||||||
<span class="p">)</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="BaseComponent.scroll_left">
|
|
||||||
<a class="viewcode-back" href="../../components.html#components.base_component.BaseComponent.scroll_left">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">scroll_left</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">locator</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="n">Locator</span><span class="p">,</span> <span class="n">timeout</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">10000</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Прокрутка элемента до самого левого края.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Args:</span>
|
|
||||||
<span class="sd"> locator: локатор элемента.</span>
|
|
||||||
<span class="sd"> timeout: максимальное время ожидания в мс.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Raises:</span>
|
|
||||||
<span class="sd"> AssertionError: если прокрутка не выполнена до левого края.</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
|
|
||||||
<span class="n">loc</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_locator</span><span class="p">(</span><span class="n">locator</span><span class="p">)</span>
|
|
||||||
<span class="n">max_attempts</span> <span class="o">=</span> <span class="mi">3</span>
|
|
||||||
<span class="n">attempt</span> <span class="o">=</span> <span class="mi">0</span>
|
|
||||||
|
|
||||||
<span class="k">while</span> <span class="n">attempt</span> <span class="o"><</span> <span class="n">max_attempts</span><span class="p">:</span>
|
|
||||||
<span class="c1"># Получаем текущую позицию прокрутки</span>
|
|
||||||
<span class="n">previous_position</span> <span class="o">=</span> <span class="n">loc</span><span class="o">.</span><span class="n">evaluate</span><span class="p">(</span><span class="s2">"el => el.scrollLeft"</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="c1"># Прокручиваем до левого края</span>
|
|
||||||
<span class="n">loc</span><span class="o">.</span><span class="n">evaluate</span><span class="p">(</span><span class="s2">"el => el.scrollTo(0, el.scrollTop)"</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="c1"># Ждем завершения прокрутки с использованием timeout</span>
|
|
||||||
<span class="n">loc</span><span class="o">.</span><span class="n">wait_for</span><span class="p">(</span><span class="n">timeout</span><span class="o">=</span><span class="nb">min</span><span class="p">(</span><span class="mi">2000</span><span class="p">,</span> <span class="n">timeout</span><span class="p">))</span>
|
|
||||||
|
|
||||||
<span class="c1"># Получаем новую позицию прокрутки</span>
|
|
||||||
<span class="n">current_position</span> <span class="o">=</span> <span class="n">loc</span><span class="o">.</span><span class="n">evaluate</span><span class="p">(</span><span class="s2">"el => el.scrollLeft"</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="c1"># Проверяем, достигли ли мы левого края</span>
|
|
||||||
<span class="k">if</span> <span class="n">current_position</span> <span class="o"><=</span> <span class="mi">1</span><span class="p">:</span> <span class="c1"># <= 1 для учета погрешности</span>
|
|
||||||
<span class="k">return</span> <span class="c1"># Успешно прокрутили до левого края</span>
|
|
||||||
|
|
||||||
<span class="c1"># Проверяем, была ли вообще прокрутка</span>
|
|
||||||
<span class="k">if</span> <span class="n">current_position</span> <span class="o">>=</span> <span class="n">previous_position</span><span class="p">:</span>
|
|
||||||
<span class="n">attempt</span> <span class="o">+=</span> <span class="mi">1</span>
|
|
||||||
<span class="k">else</span><span class="p">:</span>
|
|
||||||
<span class="n">attempt</span> <span class="o">=</span> <span class="mi">0</span> <span class="c1"># Сбрасываем счетчик, если была прокрутка</span>
|
|
||||||
|
|
||||||
<span class="c1"># Если вышли из цикла - не смогли прокрутить до левого края</span>
|
|
||||||
<span class="n">final_position</span> <span class="o">=</span> <span class="n">loc</span><span class="o">.</span><span class="n">evaluate</span><span class="p">(</span><span class="s2">"el => el.scrollLeft"</span><span class="p">)</span>
|
|
||||||
<span class="n">scroll_width</span> <span class="o">=</span> <span class="n">loc</span><span class="o">.</span><span class="n">evaluate</span><span class="p">(</span><span class="s2">"el => el.scrollWidth"</span><span class="p">)</span>
|
|
||||||
<span class="n">client_width</span> <span class="o">=</span> <span class="n">loc</span><span class="o">.</span><span class="n">evaluate</span><span class="p">(</span><span class="s2">"el => el.clientWidth"</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="k">raise</span> <span class="ne">AssertionError</span><span class="p">(</span>
|
|
||||||
<span class="sa">f</span><span class="s2">"Не удалось прокрутить до левого края. "</span>
|
|
||||||
<span class="sa">f</span><span class="s2">"Текущая позиция: </span><span class="si">{</span><span class="n">final_position</span><span class="si">}</span><span class="s2">, ожидалось: 0, "</span>
|
|
||||||
<span class="sa">f</span><span class="s2">"Ширина контента: </span><span class="si">{</span><span class="n">scroll_width</span><span class="si">}</span><span class="s2">, "</span>
|
|
||||||
<span class="sa">f</span><span class="s2">"Ширина видимой области: </span><span class="si">{</span><span class="n">client_width</span><span class="si">}</span><span class="s2">"</span>
|
|
||||||
<span class="p">)</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="BaseComponent.scroll_right">
|
|
||||||
<a class="viewcode-back" href="../../components.html#components.base_component.BaseComponent.scroll_right">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">scroll_right</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">locator</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="n">Locator</span><span class="p">,</span> <span class="n">timeout</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">10000</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Прокрутка элемента до самого правого края.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Args:</span>
|
|
||||||
<span class="sd"> locator: локатор элемента.</span>
|
|
||||||
<span class="sd"> timeout: максимальное время ожидания в мс.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Raises:</span>
|
|
||||||
<span class="sd"> AssertionError: если прокрутка не выполнена до правого края.</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
|
|
||||||
<span class="n">loc</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_locator</span><span class="p">(</span><span class="n">locator</span><span class="p">)</span>
|
|
||||||
<span class="n">max_attempts</span> <span class="o">=</span> <span class="mi">3</span>
|
|
||||||
<span class="n">attempt</span> <span class="o">=</span> <span class="mi">0</span>
|
|
||||||
|
|
||||||
<span class="k">while</span> <span class="n">attempt</span> <span class="o"><</span> <span class="n">max_attempts</span><span class="p">:</span>
|
|
||||||
<span class="c1"># Получаем текущую позицию прокрутки</span>
|
|
||||||
<span class="n">previous_position</span> <span class="o">=</span> <span class="n">loc</span><span class="o">.</span><span class="n">evaluate</span><span class="p">(</span><span class="s2">"el => el.scrollLeft"</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="c1"># Прокручиваем до правого края</span>
|
|
||||||
<span class="n">loc</span><span class="o">.</span><span class="n">evaluate</span><span class="p">(</span><span class="s2">"el => el.scrollTo(el.scrollWidth, el.scrollTop)"</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="c1"># Ждем завершения прокрутки с использованием timeout</span>
|
|
||||||
<span class="n">loc</span><span class="o">.</span><span class="n">wait_for</span><span class="p">(</span><span class="n">timeout</span><span class="o">=</span><span class="nb">min</span><span class="p">(</span><span class="mi">2000</span><span class="p">,</span> <span class="n">timeout</span><span class="p">))</span>
|
|
||||||
|
|
||||||
<span class="c1"># Получаем новую позицию прокрутки</span>
|
|
||||||
<span class="n">current_position</span> <span class="o">=</span> <span class="n">loc</span><span class="o">.</span><span class="n">evaluate</span><span class="p">(</span><span class="s2">"el => el.scrollLeft"</span><span class="p">)</span>
|
|
||||||
<span class="n">scroll_width</span> <span class="o">=</span> <span class="n">loc</span><span class="o">.</span><span class="n">evaluate</span><span class="p">(</span><span class="s2">"el => el.scrollWidth"</span><span class="p">)</span>
|
|
||||||
<span class="n">client_width</span> <span class="o">=</span> <span class="n">loc</span><span class="o">.</span><span class="n">evaluate</span><span class="p">(</span><span class="s2">"el => el.clientWidth"</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="c1"># Проверяем, достигли ли мы правого края</span>
|
|
||||||
<span class="n">max_scroll_x</span> <span class="o">=</span> <span class="n">scroll_width</span> <span class="o">-</span> <span class="n">client_width</span>
|
|
||||||
<span class="k">if</span> <span class="n">current_position</span> <span class="o">>=</span> <span class="n">max_scroll_x</span> <span class="o">-</span> <span class="mi">1</span><span class="p">:</span> <span class="c1"># -1 для учета погрешности</span>
|
|
||||||
<span class="k">return</span> <span class="c1"># Успешно прокрутили до правого края</span>
|
|
||||||
|
|
||||||
<span class="c1"># Проверяем, была ли вообще прокрутка</span>
|
|
||||||
<span class="k">if</span> <span class="n">current_position</span> <span class="o"><=</span> <span class="n">previous_position</span><span class="p">:</span>
|
|
||||||
<span class="n">attempt</span> <span class="o">+=</span> <span class="mi">1</span>
|
|
||||||
<span class="k">else</span><span class="p">:</span>
|
|
||||||
<span class="n">attempt</span> <span class="o">=</span> <span class="mi">0</span> <span class="c1"># Сбрасываем счетчик, если была прокрутка</span>
|
|
||||||
|
|
||||||
<span class="c1"># Если вышли из цикла - не смогли прокрутить до правого края</span>
|
|
||||||
<span class="n">final_position</span> <span class="o">=</span> <span class="n">loc</span><span class="o">.</span><span class="n">evaluate</span><span class="p">(</span><span class="s2">"el => el.scrollLeft"</span><span class="p">)</span>
|
|
||||||
<span class="n">scroll_width</span> <span class="o">=</span> <span class="n">loc</span><span class="o">.</span><span class="n">evaluate</span><span class="p">(</span><span class="s2">"el => el.scrollWidth"</span><span class="p">)</span>
|
|
||||||
<span class="n">client_width</span> <span class="o">=</span> <span class="n">loc</span><span class="o">.</span><span class="n">evaluate</span><span class="p">(</span><span class="s2">"el => el.clientWidth"</span><span class="p">)</span>
|
|
||||||
<span class="n">max_scroll_x</span> <span class="o">=</span> <span class="n">scroll_width</span> <span class="o">-</span> <span class="n">client_width</span>
|
|
||||||
|
|
||||||
<span class="k">raise</span> <span class="ne">AssertionError</span><span class="p">(</span>
|
|
||||||
<span class="sa">f</span><span class="s2">"Не удалось прокрутить до правого края. "</span>
|
|
||||||
<span class="sa">f</span><span class="s2">"Текущая позиция: </span><span class="si">{</span><span class="n">final_position</span><span class="si">}</span><span class="s2">, ожидалось: </span><span class="si">{</span><span class="n">max_scroll_x</span><span class="si">}</span><span class="s2">, "</span>
|
|
||||||
<span class="sa">f</span><span class="s2">"Ширина контента: </span><span class="si">{</span><span class="n">scroll_width</span><span class="si">}</span><span class="s2">, "</span>
|
|
||||||
<span class="sa">f</span><span class="s2">"Ширина видимой области: </span><span class="si">{</span><span class="n">client_width</span><span class="si">}</span><span class="s2">"</span>
|
|
||||||
<span class="p">)</span></div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</pre></div>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<footer>
|
|
||||||
|
|
||||||
<hr/>
|
|
||||||
|
|
||||||
<div role="contentinfo">
|
|
||||||
<p>© Авторские права 2025, NPO KIS. </p>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
Собрано при помощи <a href="https://www.sphinx-doc.org/">Sphinx</a> с использованием
|
|
||||||
<a href="https://github.com/readthedocs/sphinx_rtd_theme">темы,</a>
|
|
||||||
предоставленной <a href="https://readthedocs.org">Read the Docs</a>.
|
|
||||||
|
|
||||||
|
|
||||||
</footer>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</section>
|
|
||||||
</div>
|
|
||||||
<script>
|
|
||||||
jQuery(function () {
|
|
||||||
SphinxRtdTheme.Navigation.enable(true);
|
|
||||||
});
|
|
||||||
</script>
|
|
||||||
|
|
||||||
</body>
|
|
||||||
</html>
|
|
||||||
|
|
@ -1,153 +0,0 @@
|
||||||
|
|
||||||
|
|
||||||
<!DOCTYPE html>
|
|
||||||
<html class="writer-html5" lang="ru" data-content_root="../../">
|
|
||||||
<head>
|
|
||||||
<meta charset="utf-8" />
|
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
||||||
<title>components.card_component — документация e-nms-qa-automation 0.1.0</title>
|
|
||||||
<link rel="stylesheet" type="text/css" href="../../_static/pygments.css?v=b86133f3" />
|
|
||||||
<link rel="stylesheet" type="text/css" href="../../_static/css/theme.css?v=e59714d7" />
|
|
||||||
|
|
||||||
|
|
||||||
<script src="../../_static/jquery.js?v=5d32c60e"></script>
|
|
||||||
<script src="../../_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script>
|
|
||||||
<script src="../../_static/documentation_options.js?v=6ff560e8"></script>
|
|
||||||
<script src="../../_static/doctools.js?v=9bcbadda"></script>
|
|
||||||
<script src="../../_static/sphinx_highlight.js?v=dc90522c"></script>
|
|
||||||
<script src="../../_static/translations.js?v=cd1d70c9"></script>
|
|
||||||
<script src="../../_static/js/theme.js"></script>
|
|
||||||
<link rel="index" title="Алфавитный указатель" href="../../genindex.html" />
|
|
||||||
<link rel="search" title="Поиск" href="../../search.html" />
|
|
||||||
</head>
|
|
||||||
|
|
||||||
<body class="wy-body-for-nav">
|
|
||||||
<div class="wy-grid-for-nav">
|
|
||||||
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
|
|
||||||
<div class="wy-side-scroll">
|
|
||||||
<div class="wy-side-nav-search" >
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<a href="../../index.html" class="icon icon-home">
|
|
||||||
e-nms-qa-automation
|
|
||||||
</a>
|
|
||||||
<div role="search">
|
|
||||||
<form id="rtd-search-form" class="wy-form" action="../../search.html" method="get">
|
|
||||||
<input type="text" name="q" placeholder="Поиск в документации" aria-label="Поиск в документации" />
|
|
||||||
<input type="hidden" name="check_keywords" value="yes" />
|
|
||||||
<input type="hidden" name="area" value="default" />
|
|
||||||
</form>
|
|
||||||
</div>
|
|
||||||
</div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Меню навигации">
|
|
||||||
<!-- Local TOC -->
|
|
||||||
<div class="local-toc"></div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</nav>
|
|
||||||
|
|
||||||
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Меню навигации для мобильных устройств" >
|
|
||||||
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
|
|
||||||
<a href="../../index.html">e-nms-qa-automation</a>
|
|
||||||
</nav>
|
|
||||||
|
|
||||||
<div class="wy-nav-content">
|
|
||||||
<div class="rst-content">
|
|
||||||
<div role="navigation" aria-label="Навигация по страницам">
|
|
||||||
<ul class="wy-breadcrumbs">
|
|
||||||
<li><a href="../../index.html" class="icon icon-home" aria-label="Home"></a></li>
|
|
||||||
<li class="breadcrumb-item"><a href="../index.html">Код модуля</a></li>
|
|
||||||
<li class="breadcrumb-item active">components.card_component</li>
|
|
||||||
<li class="wy-breadcrumbs-aside">
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
<hr/>
|
|
||||||
</div>
|
|
||||||
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
|
|
||||||
<div itemprop="articleBody">
|
|
||||||
|
|
||||||
<h1>Исходный код components.card_component</h1><div class="highlight"><pre>
|
|
||||||
<span></span><span class="sd">"""Модуль компонента карточки пользователя.</span>
|
|
||||||
|
|
||||||
<span class="sd">Содержит класс для работы с карточкой пользователя через Playwright.</span>
|
|
||||||
<span class="sd">"""</span>
|
|
||||||
|
|
||||||
<span class="kn">from</span><span class="w"> </span><span class="nn">playwright.sync_api</span><span class="w"> </span><span class="kn">import</span> <span class="n">Page</span>
|
|
||||||
<span class="kn">from</span><span class="w"> </span><span class="nn">tools.logger</span><span class="w"> </span><span class="kn">import</span> <span class="n">get_logger</span>
|
|
||||||
<span class="kn">from</span><span class="w"> </span><span class="nn">elements.button_element</span><span class="w"> </span><span class="kn">import</span> <span class="n">Button</span>
|
|
||||||
<span class="kn">from</span><span class="w"> </span><span class="nn">components.base_component</span><span class="w"> </span><span class="kn">import</span> <span class="n">BaseComponent</span>
|
|
||||||
|
|
||||||
<span class="n">logger</span> <span class="o">=</span> <span class="n">get_logger</span><span class="p">(</span><span class="s2">"USER_CARD"</span><span class="p">)</span>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="CardComponent">
|
|
||||||
<a class="viewcode-back" href="../../components.html#components.card_component.CardComponent">[документация]</a>
|
|
||||||
<span class="k">class</span><span class="w"> </span><span class="nc">CardComponent</span><span class="p">(</span><span class="n">BaseComponent</span><span class="p">):</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Компонент карточки пользователя.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Предоставляет методы для взаимодействия с элементами карточки.</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="CardComponent.__init__">
|
|
||||||
<a class="viewcode-back" href="../../components.html#components.card_component.CardComponent.__init__">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">page</span><span class="p">:</span> <span class="n">Page</span><span class="p">):</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Инициализирует компонент карточки пользователя.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Args:</span>
|
|
||||||
<span class="sd"> page: Экземпляр страницы Playwright.</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
|
|
||||||
<span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="fm">__init__</span><span class="p">(</span><span class="n">page</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">logout_button</span> <span class="o">=</span> <span class="n">Button</span><span class="p">(</span>
|
|
||||||
<span class="n">page</span><span class="p">,</span>
|
|
||||||
<span class="n">page</span><span class="o">.</span><span class="n">get_by_role</span><span class="p">(</span><span class="s2">"button"</span><span class="p">,</span> <span class="n">name</span><span class="o">=</span><span class="s2">"Выйти"</span><span class="p">),</span>
|
|
||||||
<span class="s2">"logout button"</span>
|
|
||||||
<span class="p">)</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<span class="c1"># Действия:</span>
|
|
||||||
<div class="viewcode-block" id="CardComponent.click_logout_button">
|
|
||||||
<a class="viewcode-back" href="../../components.html#components.card_component.CardComponent.click_logout_button">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">click_logout_button</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Нажимает кнопку выхода из системы.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Выполняет клик по кнопке 'Выйти' в карточке пользователя.</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">logout_button</span><span class="o">.</span><span class="n">click</span><span class="p">()</span></div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
<span class="c1"># Проверки:</span>
|
|
||||||
<span class="c1"># (Методы проверок могут быть добавлены здесь в будущем)</span>
|
|
||||||
</pre></div>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<footer>
|
|
||||||
|
|
||||||
<hr/>
|
|
||||||
|
|
||||||
<div role="contentinfo">
|
|
||||||
<p>© Авторские права 2025, NPO KIS. </p>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
Собрано при помощи <a href="https://www.sphinx-doc.org/">Sphinx</a> с использованием
|
|
||||||
<a href="https://github.com/readthedocs/sphinx_rtd_theme">темы,</a>
|
|
||||||
предоставленной <a href="https://readthedocs.org">Read the Docs</a>.
|
|
||||||
|
|
||||||
|
|
||||||
</footer>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</section>
|
|
||||||
</div>
|
|
||||||
<script>
|
|
||||||
jQuery(function () {
|
|
||||||
SphinxRtdTheme.Navigation.enable(true);
|
|
||||||
});
|
|
||||||
</script>
|
|
||||||
|
|
||||||
</body>
|
|
||||||
</html>
|
|
||||||
|
|
@ -1,253 +0,0 @@
|
||||||
|
|
||||||
|
|
||||||
<!DOCTYPE html>
|
|
||||||
<html class="writer-html5" lang="ru" data-content_root="../../">
|
|
||||||
<head>
|
|
||||||
<meta charset="utf-8" />
|
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
||||||
<title>components.confirm_component — документация e-nms-qa-automation 0.1.0</title>
|
|
||||||
<link rel="stylesheet" type="text/css" href="../../_static/pygments.css?v=b86133f3" />
|
|
||||||
<link rel="stylesheet" type="text/css" href="../../_static/css/theme.css?v=e59714d7" />
|
|
||||||
|
|
||||||
|
|
||||||
<script src="../../_static/jquery.js?v=5d32c60e"></script>
|
|
||||||
<script src="../../_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script>
|
|
||||||
<script src="../../_static/documentation_options.js?v=6ff560e8"></script>
|
|
||||||
<script src="../../_static/doctools.js?v=9bcbadda"></script>
|
|
||||||
<script src="../../_static/sphinx_highlight.js?v=dc90522c"></script>
|
|
||||||
<script src="../../_static/translations.js?v=cd1d70c9"></script>
|
|
||||||
<script src="../../_static/js/theme.js"></script>
|
|
||||||
<link rel="index" title="Алфавитный указатель" href="../../genindex.html" />
|
|
||||||
<link rel="search" title="Поиск" href="../../search.html" />
|
|
||||||
</head>
|
|
||||||
|
|
||||||
<body class="wy-body-for-nav">
|
|
||||||
<div class="wy-grid-for-nav">
|
|
||||||
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
|
|
||||||
<div class="wy-side-scroll">
|
|
||||||
<div class="wy-side-nav-search" >
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<a href="../../index.html" class="icon icon-home">
|
|
||||||
e-nms-qa-automation
|
|
||||||
</a>
|
|
||||||
<div role="search">
|
|
||||||
<form id="rtd-search-form" class="wy-form" action="../../search.html" method="get">
|
|
||||||
<input type="text" name="q" placeholder="Поиск в документации" aria-label="Поиск в документации" />
|
|
||||||
<input type="hidden" name="check_keywords" value="yes" />
|
|
||||||
<input type="hidden" name="area" value="default" />
|
|
||||||
</form>
|
|
||||||
</div>
|
|
||||||
</div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Меню навигации">
|
|
||||||
<!-- Local TOC -->
|
|
||||||
<div class="local-toc"></div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</nav>
|
|
||||||
|
|
||||||
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Меню навигации для мобильных устройств" >
|
|
||||||
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
|
|
||||||
<a href="../../index.html">e-nms-qa-automation</a>
|
|
||||||
</nav>
|
|
||||||
|
|
||||||
<div class="wy-nav-content">
|
|
||||||
<div class="rst-content">
|
|
||||||
<div role="navigation" aria-label="Навигация по страницам">
|
|
||||||
<ul class="wy-breadcrumbs">
|
|
||||||
<li><a href="../../index.html" class="icon icon-home" aria-label="Home"></a></li>
|
|
||||||
<li class="breadcrumb-item"><a href="../index.html">Код модуля</a></li>
|
|
||||||
<li class="breadcrumb-item active">components.confirm_component</li>
|
|
||||||
<li class="wy-breadcrumbs-aside">
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
<hr/>
|
|
||||||
</div>
|
|
||||||
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
|
|
||||||
<div itemprop="articleBody">
|
|
||||||
|
|
||||||
<h1>Исходный код components.confirm_component</h1><div class="highlight"><pre>
|
|
||||||
<span></span><span class="sd">"""Модуль компонента окна подтверждения действий.</span>
|
|
||||||
|
|
||||||
<span class="sd">Содержит класс ConfirmComponent для взаимодействия с окном подтверждения,</span>
|
|
||||||
<span class="sd">включая кнопки подтверждения, отмены и закрытия, а также проверки текста.</span>
|
|
||||||
<span class="sd">"""</span>
|
|
||||||
|
|
||||||
<span class="kn">from</span><span class="w"> </span><span class="nn">playwright.sync_api</span><span class="w"> </span><span class="kn">import</span> <span class="n">Page</span>
|
|
||||||
<span class="kn">from</span><span class="w"> </span><span class="nn">tools.logger</span><span class="w"> </span><span class="kn">import</span> <span class="n">get_logger</span>
|
|
||||||
<span class="kn">from</span><span class="w"> </span><span class="nn">locators.confirm_locators</span><span class="w"> </span><span class="kn">import</span> <span class="n">ConfirmLocators</span>
|
|
||||||
<span class="kn">from</span><span class="w"> </span><span class="nn">elements.text_element</span><span class="w"> </span><span class="kn">import</span> <span class="n">Text</span>
|
|
||||||
<span class="kn">from</span><span class="w"> </span><span class="nn">elements.button_element</span><span class="w"> </span><span class="kn">import</span> <span class="n">Button</span>
|
|
||||||
<span class="kn">from</span><span class="w"> </span><span class="nn">components.base_component</span><span class="w"> </span><span class="kn">import</span> <span class="n">BaseComponent</span>
|
|
||||||
|
|
||||||
<span class="n">logger</span> <span class="o">=</span> <span class="n">get_logger</span><span class="p">(</span><span class="s2">"CONFIRM_WINDOW"</span><span class="p">)</span>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="ConfirmComponent">
|
|
||||||
<a class="viewcode-back" href="../../components.html#components.confirm_component.ConfirmComponent">[документация]</a>
|
|
||||||
<span class="k">class</span><span class="w"> </span><span class="nc">ConfirmComponent</span><span class="p">(</span><span class="n">BaseComponent</span><span class="p">):</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Компонент окна подтверждения действий."""</span>
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="ConfirmComponent.__init__">
|
|
||||||
<a class="viewcode-back" href="../../components.html#components.confirm_component.ConfirmComponent.__init__">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">page</span><span class="p">:</span> <span class="n">Page</span><span class="p">,</span> <span class="n">cancel_button_text</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">allow_button_text</span><span class="p">:</span> <span class="nb">str</span><span class="p">):</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Инициализация компонента.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Args:</span>
|
|
||||||
<span class="sd"> page: Экземпляр страницы Playwright.</span>
|
|
||||||
<span class="sd"> cancel_button_text: Текст кнопки отмены.</span>
|
|
||||||
<span class="sd"> allow_button_text: Текст кнопки подтверждения.</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
|
|
||||||
<span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="fm">__init__</span><span class="p">(</span><span class="n">page</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">title</span> <span class="o">=</span> <span class="n">Text</span><span class="p">(</span><span class="n">page</span><span class="p">,</span> <span class="n">ConfirmLocators</span><span class="o">.</span><span class="n">TITLE</span><span class="p">,</span> <span class="s2">"confirm title"</span><span class="p">)</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">text</span> <span class="o">=</span> <span class="n">Text</span><span class="p">(</span><span class="n">page</span><span class="p">,</span> <span class="n">ConfirmLocators</span><span class="o">.</span><span class="n">TEXT</span><span class="p">,</span> <span class="s2">"confirm text"</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">close_button</span> <span class="o">=</span> <span class="n">Button</span><span class="p">(</span><span class="n">page</span><span class="p">,</span> <span class="n">ConfirmLocators</span><span class="o">.</span><span class="n">BUTTON_CLOSE</span><span class="p">,</span> <span class="s2">"confirm close button"</span><span class="p">)</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">cancel_button</span> <span class="o">=</span> <span class="n">Button</span><span class="p">(</span>
|
|
||||||
<span class="n">page</span><span class="p">,</span>
|
|
||||||
<span class="n">page</span><span class="o">.</span><span class="n">get_by_role</span><span class="p">(</span><span class="s2">"button"</span><span class="p">,</span> <span class="n">name</span><span class="o">=</span><span class="n">cancel_button_text</span><span class="p">)</span><span class="o">.</span><span class="n">first</span><span class="p">,</span>
|
|
||||||
<span class="s2">"confirm cancel button"</span>
|
|
||||||
<span class="p">)</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">allow_button</span> <span class="o">=</span> <span class="n">Button</span><span class="p">(</span>
|
|
||||||
<span class="n">page</span><span class="p">,</span>
|
|
||||||
<span class="n">page</span><span class="o">.</span><span class="n">get_by_role</span><span class="p">(</span><span class="s2">"button"</span><span class="p">,</span> <span class="n">name</span><span class="o">=</span><span class="n">allow_button_text</span><span class="p">)</span><span class="o">.</span><span class="n">first</span><span class="p">,</span>
|
|
||||||
<span class="s2">"confirm allow button"</span>
|
|
||||||
<span class="p">)</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<span class="c1"># Действия:</span>
|
|
||||||
<div class="viewcode-block" id="ConfirmComponent.click_allow_button">
|
|
||||||
<a class="viewcode-back" href="../../components.html#components.confirm_component.ConfirmComponent.click_allow_button">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">click_allow_button</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Нажимает кнопку подтверждения действия."""</span>
|
|
||||||
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">allow_button</span><span class="o">.</span><span class="n">click</span><span class="p">()</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="ConfirmComponent.click_cancel_button">
|
|
||||||
<a class="viewcode-back" href="../../components.html#components.confirm_component.ConfirmComponent.click_cancel_button">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">click_cancel_button</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Нажимает кнопку отмены действия."""</span>
|
|
||||||
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">cancel_button</span><span class="o">.</span><span class="n">click</span><span class="p">()</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="ConfirmComponent.click_close_button">
|
|
||||||
<a class="viewcode-back" href="../../components.html#components.confirm_component.ConfirmComponent.click_close_button">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">click_close_button</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Нажимает кнопку закрытия окна подтверждения."""</span>
|
|
||||||
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">close_button</span><span class="o">.</span><span class="n">click</span><span class="p">()</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="ConfirmComponent.scroll_window_left">
|
|
||||||
<a class="viewcode-back" href="../../components.html#components.confirm_component.ConfirmComponent.scroll_window_left">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">scroll_window_left</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Прокручивает содержимое окна влево."""</span>
|
|
||||||
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">scroll_left</span><span class="p">(</span><span class="n">ConfirmLocators</span><span class="o">.</span><span class="n">CONFIRM</span><span class="p">)</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="ConfirmComponent.scroll_window_right">
|
|
||||||
<a class="viewcode-back" href="../../components.html#components.confirm_component.ConfirmComponent.scroll_window_right">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">scroll_window_right</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Прокручивает содержимое окна вправо."""</span>
|
|
||||||
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">scroll_right</span><span class="p">(</span><span class="n">ConfirmLocators</span><span class="o">.</span><span class="n">CONFIRM</span><span class="p">)</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<span class="c1"># Проверки:</span>
|
|
||||||
<div class="viewcode-block" id="ConfirmComponent.check_title">
|
|
||||||
<a class="viewcode-back" href="../../components.html#components.confirm_component.ConfirmComponent.check_title">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">check_title</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">title</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">msg</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Проверяет текст заголовка окна подтверждения.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Args:</span>
|
|
||||||
<span class="sd"> title: Ожидаемый текст заголовка.</span>
|
|
||||||
<span class="sd"> msg: Сообщение при ошибке.</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">title</span><span class="o">.</span><span class="n">check_have_text</span><span class="p">(</span><span class="n">title</span><span class="p">,</span> <span class="n">msg</span><span class="p">)</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="ConfirmComponent.check_text">
|
|
||||||
<a class="viewcode-back" href="../../components.html#components.confirm_component.ConfirmComponent.check_text">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">check_text</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">text</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">msg</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Проверяет текст сообщения в окне подтверждения.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Args:</span>
|
|
||||||
<span class="sd"> text: Ожидаемый текст сообщения.</span>
|
|
||||||
<span class="sd"> msg: Сообщение при ошибке.</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">text</span><span class="o">.</span><span class="n">check_have_text</span><span class="p">(</span><span class="n">text</span><span class="p">,</span> <span class="n">msg</span><span class="p">)</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="ConfirmComponent.check_window_horizontal_scrolling">
|
|
||||||
<a class="viewcode-back" href="../../components.html#components.confirm_component.ConfirmComponent.check_window_horizontal_scrolling">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">check_window_horizontal_scrolling</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">bool</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Проверяет возможность горизонтальной прокрутки окна."""</span>
|
|
||||||
|
|
||||||
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">is_scrollable_horizontally</span><span class="p">(</span><span class="n">ConfirmLocators</span><span class="o">.</span><span class="n">CONFIRM</span><span class="p">)</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="ConfirmComponent.should_be_cancel_button">
|
|
||||||
<a class="viewcode-back" href="../../components.html#components.confirm_component.ConfirmComponent.should_be_cancel_button">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">should_be_cancel_button</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Проверяет наличие и видимость кнопки Отмены."""</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">cancel_button</span><span class="o">.</span><span class="n">check_visibility</span><span class="p">(</span><span class="s2">"Cancel button is missing"</span><span class="p">)</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="ConfirmComponent.should_be_allow_button">
|
|
||||||
<a class="viewcode-back" href="../../components.html#components.confirm_component.ConfirmComponent.should_be_allow_button">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">should_be_allow_button</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Проверяет наличие и видимость кнопки Подтверждения."""</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">allow_button</span><span class="o">.</span><span class="n">check_visibility</span><span class="p">(</span><span class="s2">"Allow button is missing"</span><span class="p">)</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="ConfirmComponent.check_cancel_button_text">
|
|
||||||
<a class="viewcode-back" href="../../components.html#components.confirm_component.ConfirmComponent.check_cancel_button_text">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">check_cancel_button_text</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expected_text</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Проверяет текст кнопки Отмены."""</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">cancel_button</span><span class="o">.</span><span class="n">check_have_text</span><span class="p">(</span><span class="n">expected_text</span><span class="p">,</span> <span class="s2">"Cancel button text doesn't match expected"</span><span class="p">)</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="ConfirmComponent.check_allow_button_text">
|
|
||||||
<a class="viewcode-back" href="../../components.html#components.confirm_component.ConfirmComponent.check_allow_button_text">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">check_allow_button_text</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expected_text</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Проверяет текст кнопки Подтверждения."""</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">allow_button</span><span class="o">.</span><span class="n">check_have_text</span><span class="p">(</span><span class="n">expected_text</span><span class="p">,</span> <span class="s2">"Allow button text doesn't match expected"</span><span class="p">)</span></div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</pre></div>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<footer>
|
|
||||||
|
|
||||||
<hr/>
|
|
||||||
|
|
||||||
<div role="contentinfo">
|
|
||||||
<p>© Авторские права 2025, NPO KIS. </p>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
Собрано при помощи <a href="https://www.sphinx-doc.org/">Sphinx</a> с использованием
|
|
||||||
<a href="https://github.com/readthedocs/sphinx_rtd_theme">темы,</a>
|
|
||||||
предоставленной <a href="https://readthedocs.org">Read the Docs</a>.
|
|
||||||
|
|
||||||
|
|
||||||
</footer>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</section>
|
|
||||||
</div>
|
|
||||||
<script>
|
|
||||||
jQuery(function () {
|
|
||||||
SphinxRtdTheme.Navigation.enable(true);
|
|
||||||
});
|
|
||||||
</script>
|
|
||||||
|
|
||||||
</body>
|
|
||||||
</html>
|
|
||||||
|
|
@ -1,376 +0,0 @@
|
||||||
|
|
||||||
|
|
||||||
<!DOCTYPE html>
|
|
||||||
<html class="writer-html5" lang="ru" data-content_root="../../">
|
|
||||||
<head>
|
|
||||||
<meta charset="utf-8" />
|
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
||||||
<title>components.date_picker_component — документация e-nms-qa-automation 0.1.0</title>
|
|
||||||
<link rel="stylesheet" type="text/css" href="../../_static/pygments.css?v=b86133f3" />
|
|
||||||
<link rel="stylesheet" type="text/css" href="../../_static/css/theme.css?v=e59714d7" />
|
|
||||||
|
|
||||||
|
|
||||||
<script src="../../_static/jquery.js?v=5d32c60e"></script>
|
|
||||||
<script src="../../_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script>
|
|
||||||
<script src="../../_static/documentation_options.js?v=6ff560e8"></script>
|
|
||||||
<script src="../../_static/doctools.js?v=9bcbadda"></script>
|
|
||||||
<script src="../../_static/sphinx_highlight.js?v=dc90522c"></script>
|
|
||||||
<script src="../../_static/translations.js?v=cd1d70c9"></script>
|
|
||||||
<script src="../../_static/js/theme.js"></script>
|
|
||||||
<link rel="index" title="Алфавитный указатель" href="../../genindex.html" />
|
|
||||||
<link rel="search" title="Поиск" href="../../search.html" />
|
|
||||||
</head>
|
|
||||||
|
|
||||||
<body class="wy-body-for-nav">
|
|
||||||
<div class="wy-grid-for-nav">
|
|
||||||
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
|
|
||||||
<div class="wy-side-scroll">
|
|
||||||
<div class="wy-side-nav-search" >
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<a href="../../index.html" class="icon icon-home">
|
|
||||||
e-nms-qa-automation
|
|
||||||
</a>
|
|
||||||
<div role="search">
|
|
||||||
<form id="rtd-search-form" class="wy-form" action="../../search.html" method="get">
|
|
||||||
<input type="text" name="q" placeholder="Поиск в документации" aria-label="Поиск в документации" />
|
|
||||||
<input type="hidden" name="check_keywords" value="yes" />
|
|
||||||
<input type="hidden" name="area" value="default" />
|
|
||||||
</form>
|
|
||||||
</div>
|
|
||||||
</div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Меню навигации">
|
|
||||||
<!-- Local TOC -->
|
|
||||||
<div class="local-toc"></div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</nav>
|
|
||||||
|
|
||||||
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Меню навигации для мобильных устройств" >
|
|
||||||
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
|
|
||||||
<a href="../../index.html">e-nms-qa-automation</a>
|
|
||||||
</nav>
|
|
||||||
|
|
||||||
<div class="wy-nav-content">
|
|
||||||
<div class="rst-content">
|
|
||||||
<div role="navigation" aria-label="Навигация по страницам">
|
|
||||||
<ul class="wy-breadcrumbs">
|
|
||||||
<li><a href="../../index.html" class="icon icon-home" aria-label="Home"></a></li>
|
|
||||||
<li class="breadcrumb-item"><a href="../index.html">Код модуля</a></li>
|
|
||||||
<li class="breadcrumb-item active">components.date_picker_component</li>
|
|
||||||
<li class="wy-breadcrumbs-aside">
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
<hr/>
|
|
||||||
</div>
|
|
||||||
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
|
|
||||||
<div itemprop="articleBody">
|
|
||||||
|
|
||||||
<h1>Исходный код components.date_picker_component</h1><div class="highlight"><pre>
|
|
||||||
<span></span><span class="sd">"""Модуль компонента средства выбора даты.</span>
|
|
||||||
|
|
||||||
<span class="sd">Содержит класс для работы с средством выбора даты через Playwright.</span>
|
|
||||||
<span class="sd">"""</span>
|
|
||||||
|
|
||||||
<span class="kn">import</span><span class="w"> </span><span class="nn">datetime</span>
|
|
||||||
<span class="kn">from</span><span class="w"> </span><span class="nn">playwright.sync_api</span><span class="w"> </span><span class="kn">import</span> <span class="n">Page</span>
|
|
||||||
<span class="kn">from</span><span class="w"> </span><span class="nn">tools.logger</span><span class="w"> </span><span class="kn">import</span> <span class="n">get_logger</span>
|
|
||||||
<span class="kn">from</span><span class="w"> </span><span class="nn">locators.date_picker_locators</span><span class="w"> </span><span class="kn">import</span> <span class="n">DatePickerLocators</span>
|
|
||||||
<span class="kn">from</span><span class="w"> </span><span class="nn">elements.text_element</span><span class="w"> </span><span class="kn">import</span> <span class="n">Text</span>
|
|
||||||
<span class="kn">from</span><span class="w"> </span><span class="nn">elements.button_element</span><span class="w"> </span><span class="kn">import</span> <span class="n">Button</span>
|
|
||||||
<span class="kn">from</span><span class="w"> </span><span class="nn">components.base_component</span><span class="w"> </span><span class="kn">import</span> <span class="n">BaseComponent</span>
|
|
||||||
|
|
||||||
<span class="n">logger</span> <span class="o">=</span> <span class="n">get_logger</span><span class="p">(</span><span class="s2">"DATE_PICKER"</span><span class="p">)</span>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="DatePickerComponent">
|
|
||||||
<a class="viewcode-back" href="../../components.html#components.date_picker_component.DatePickerComponent">[документация]</a>
|
|
||||||
<span class="k">class</span><span class="w"> </span><span class="nc">DatePickerComponent</span><span class="p">(</span><span class="n">BaseComponent</span><span class="p">):</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Компонент средства выбора даты.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Предоставляет методы для взаимодействия с элементами средства выбора даты.</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="DatePickerComponent.__init__">
|
|
||||||
<a class="viewcode-back" href="../../components.html#components.date_picker_component.DatePickerComponent.__init__">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">page</span><span class="p">:</span> <span class="n">Page</span><span class="p">):</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Инициализирует компонент средства выбора даты.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Args:</span>
|
|
||||||
<span class="sd"> page: Экземпляр страницы Playwright.</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
|
|
||||||
<span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="fm">__init__</span><span class="p">(</span><span class="n">page</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">date_picker_year_button</span> <span class="o">=</span> <span class="n">Button</span><span class="p">(</span><span class="n">page</span><span class="p">,</span>
|
|
||||||
<span class="n">DatePickerLocators</span><span class="o">.</span><span class="n">DATE_PICKER_TITLE_BUTTON_YEAR</span><span class="p">,</span>
|
|
||||||
<span class="s2">"date_picker_year_button"</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="n">loc</span> <span class="o">=</span> <span class="n">page</span><span class="o">.</span><span class="n">locator</span><span class="p">(</span><span class="n">DatePickerLocators</span><span class="o">.</span><span class="n">DATE_PICKER_HEADER</span><span class="p">)</span><span class="o">.</span>\
|
|
||||||
<span class="n">get_by_role</span><span class="p">(</span><span class="s2">"button"</span><span class="p">)</span><span class="o">.</span><span class="n">locator</span><span class="p">(</span><span class="s2">"i.mdi-chevron-left"</span><span class="p">)</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">prev_month_button</span> <span class="o">=</span> <span class="n">Button</span><span class="p">(</span><span class="n">page</span><span class="p">,</span> <span class="n">loc</span><span class="p">,</span> <span class="s2">"prev_month_button"</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="n">loc</span> <span class="o">=</span> <span class="n">page</span><span class="o">.</span><span class="n">locator</span><span class="p">(</span><span class="n">DatePickerLocators</span><span class="o">.</span><span class="n">DATE_PICKER_HEADER</span><span class="p">)</span><span class="o">.</span>\
|
|
||||||
<span class="n">get_by_role</span><span class="p">(</span><span class="s2">"button"</span><span class="p">)</span><span class="o">.</span><span class="n">locator</span><span class="p">(</span><span class="s2">"i.mdi-chevron-right"</span><span class="p">)</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">next_month_button</span> <span class="o">=</span> <span class="n">Button</span><span class="p">(</span><span class="n">page</span><span class="p">,</span> <span class="n">loc</span><span class="p">,</span> <span class="s2">"next_month_button"</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">current_month_year</span> <span class="o">=</span> <span class="n">Text</span><span class="p">(</span><span class="n">page</span><span class="p">,</span>
|
|
||||||
<span class="n">DatePickerLocators</span><span class="o">.</span><span class="n">DATE_PICKER_HEADER_VALUE</span><span class="p">,</span>
|
|
||||||
<span class="s2">"current_month_year"</span><span class="p">)</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<span class="c1"># Действия:</span>
|
|
||||||
<div class="viewcode-block" id="DatePickerComponent.click_prev_month_button">
|
|
||||||
<a class="viewcode-back" href="../../components.html#components.date_picker_component.DatePickerComponent.click_prev_month_button">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">click_prev_month_button</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">""" Нажатие на кнопку перехода к предыдущему месяцу (стрелочка влево)."""</span>
|
|
||||||
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">prev_month_button</span><span class="o">.</span><span class="n">click</span><span class="p">()</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="DatePickerComponent.click_next_month_button">
|
|
||||||
<a class="viewcode-back" href="../../components.html#components.date_picker_component.DatePickerComponent.click_next_month_button">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">click_next_month_button</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">""" Нажатие на кнопку перехода к следующему месяцу (стрелочка вправо)."""</span>
|
|
||||||
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">next_month_button</span><span class="o">.</span><span class="n">click</span><span class="p">()</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="DatePickerComponent.click_year_button">
|
|
||||||
<a class="viewcode-back" href="../../components.html#components.date_picker_component.DatePickerComponent.click_year_button">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">click_year_button</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">""" Нажатие на кнопку текущего значения года в заголовке средства выбора даты."""</span>
|
|
||||||
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">date_picker_year_button</span><span class="o">.</span><span class="n">click</span><span class="p">()</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="DatePickerComponent.get_year">
|
|
||||||
<a class="viewcode-back" href="../../components.html#components.date_picker_component.DatePickerComponent.get_year">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">get_year</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">""" Получение текущего значения года из заголовка средства выбора даты."""</span>
|
|
||||||
|
|
||||||
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">date_picker_year_button</span><span class="o">.</span><span class="n">get_text</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="DatePickerComponent.get_month_year">
|
|
||||||
<a class="viewcode-back" href="../../components.html#components.date_picker_component.DatePickerComponent.get_month_year">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">get_month_year</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">""" Получение текущего значения месяца и года."""</span>
|
|
||||||
|
|
||||||
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">current_month_year</span><span class="o">.</span><span class="n">get_text</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="DatePickerComponent.get_day">
|
|
||||||
<a class="viewcode-back" href="../../components.html#components.date_picker_component.DatePickerComponent.get_day">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">get_day</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">""" Получение текущего номера дня."""</span>
|
|
||||||
|
|
||||||
<span class="n">days_table_locator</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">page</span><span class="o">.</span><span class="n">locator</span><span class="p">(</span><span class="n">DatePickerLocators</span><span class="o">.</span><span class="n">DATE_PICKER_TABLE_DAYS</span><span class="p">)</span>
|
|
||||||
<span class="n">day_button_locator</span> <span class="o">=</span> <span class="n">days_table_locator</span><span class="o">.</span><span class="n">locator</span><span class="p">(</span><span class="s2">"//td/button[contains(@class, 'accent--text')]"</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="k">return</span> <span class="n">day_button_locator</span><span class="o">.</span><span class="n">text_content</span><span class="p">()</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="DatePickerComponent.select_day">
|
|
||||||
<a class="viewcode-back" href="../../components.html#components.date_picker_component.DatePickerComponent.select_day">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">select_day</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">day</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">""" Выбор дня месяца по его номеру."""</span>
|
|
||||||
|
|
||||||
<span class="n">visible</span> <span class="o">=</span> <span class="kc">False</span>
|
|
||||||
|
|
||||||
<span class="n">days_table_locator</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">page</span><span class="o">.</span><span class="n">locator</span><span class="p">(</span><span class="n">DatePickerLocators</span><span class="o">.</span><span class="n">DATE_PICKER_TABLE_DAYS</span><span class="p">)</span>
|
|
||||||
<span class="n">days_table_locator</span><span class="o">.</span><span class="n">wait_for</span><span class="p">(</span><span class="n">timeout</span><span class="o">=</span><span class="mi">300</span><span class="p">)</span>
|
|
||||||
<span class="n">day_button_locator</span> <span class="o">=</span> <span class="n">days_table_locator</span><span class="o">.</span><span class="n">locator</span><span class="p">(</span><span class="s2">"//td"</span><span class="p">)</span><span class="o">.</span><span class="n">get_by_role</span><span class="p">(</span><span class="s2">"button"</span><span class="p">,</span> <span class="n">name</span><span class="o">=</span><span class="n">day</span><span class="p">)</span>
|
|
||||||
<span class="n">visible</span> <span class="o">=</span> <span class="n">day_button_locator</span><span class="o">.</span><span class="n">is_visible</span><span class="p">()</span>
|
|
||||||
<span class="k">if</span> <span class="n">visible</span><span class="p">:</span>
|
|
||||||
<span class="n">day_button_locator</span><span class="o">.</span><span class="n">click</span><span class="p">()</span>
|
|
||||||
<span class="k">else</span><span class="p">:</span>
|
|
||||||
<span class="k">assert</span> <span class="kc">False</span><span class="p">,</span> <span class="sa">f</span><span class="s2">"Day number </span><span class="si">{</span><span class="n">day</span><span class="si">}</span><span class="s2"> is missing on date picker days table"</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="DatePickerComponent.select_year_and_month">
|
|
||||||
<a class="viewcode-back" href="../../components.html#components.date_picker_component.DatePickerComponent.select_year_and_month">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">select_year_and_month</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">year</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">month</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">""" Выбор года и месяца по заданным значениям. Значения должны быть в формате гггг и мм"""</span>
|
|
||||||
|
|
||||||
<span class="k">try</span><span class="p">:</span>
|
|
||||||
<span class="n">month_index</span> <span class="o">=</span> <span class="nb">int</span><span class="p">(</span><span class="n">month</span><span class="p">)</span>
|
|
||||||
<span class="k">except</span> <span class="ne">ValueError</span><span class="p">:</span>
|
|
||||||
<span class="k">assert</span> <span class="kc">False</span><span class="p">,</span> <span class="sa">f</span><span class="s2">"Incorrect month value </span><span class="si">{</span><span class="n">month</span><span class="si">}</span><span class="s2"> for selection"</span>
|
|
||||||
|
|
||||||
<span class="k">assert</span> <span class="n">month_index</span> <span class="o">>=</span> <span class="mi">1</span><span class="p">,</span> <span class="sa">f</span><span class="s2">"Incorrect month value </span><span class="si">{</span><span class="n">month</span><span class="si">}</span><span class="s2"> for selection"</span>
|
|
||||||
<span class="k">assert</span> <span class="n">month_index</span> <span class="o"><=</span> <span class="mi">12</span><span class="p">,</span> <span class="sa">f</span><span class="s2">"Incorrect month value </span><span class="si">{</span><span class="n">month</span><span class="si">}</span><span class="s2"> for selection"</span>
|
|
||||||
|
|
||||||
<span class="n">current_year</span> <span class="o">=</span> <span class="nb">int</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">get_year</span><span class="p">())</span>
|
|
||||||
<span class="k">if</span> <span class="nb">int</span><span class="p">(</span><span class="n">year</span><span class="p">)</span> <span class="o">></span> <span class="n">current_year</span> <span class="o">+</span> <span class="mi">100</span> <span class="ow">or</span> <span class="nb">int</span><span class="p">(</span><span class="n">year</span><span class="p">)</span> <span class="o"><</span> <span class="n">current_year</span> <span class="o">-</span> <span class="mi">100</span><span class="p">:</span>
|
|
||||||
<span class="k">assert</span> <span class="kc">False</span><span class="p">,</span> <span class="sa">f</span><span class="s2">"Incorrect year value </span><span class="si">{</span><span class="n">year</span><span class="si">}</span><span class="s2"> for selection"</span>
|
|
||||||
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">click_year_button</span><span class="p">()</span>
|
|
||||||
|
|
||||||
<span class="n">years_list</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">page</span><span class="o">.</span><span class="n">locator</span><span class="p">(</span><span class="n">DatePickerLocators</span><span class="o">.</span><span class="n">DATE_PICKER_LIST_YEARS</span><span class="p">)</span>
|
|
||||||
<span class="n">years_list</span><span class="o">.</span><span class="n">wait_for</span><span class="p">(</span><span class="n">timeout</span><span class="o">=</span><span class="mi">300</span><span class="p">)</span>
|
|
||||||
<span class="n">year_locator</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">DatePickerLocators</span><span class="o">.</span><span class="n">DATE_PICKER_LIST_YEARS</span><span class="si">}</span><span class="s2"> li:has-text(</span><span class="se">\"</span><span class="si">{</span><span class="n">year</span><span class="si">}</span><span class="se">\"</span><span class="s2">)"</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">page</span><span class="o">.</span><span class="n">locator</span><span class="p">(</span><span class="n">year_locator</span><span class="p">)</span><span class="o">.</span><span class="n">click</span><span class="p">()</span>
|
|
||||||
|
|
||||||
<span class="n">months_table</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">page</span><span class="o">.</span><span class="n">locator</span><span class="p">(</span><span class="n">DatePickerLocators</span><span class="o">.</span><span class="n">DATE_PICKER_TABLE_MONTHS</span><span class="p">)</span>
|
|
||||||
<span class="n">months_table</span><span class="o">.</span><span class="n">wait_for</span><span class="p">(</span><span class="n">timeout</span><span class="o">=</span><span class="mi">300</span><span class="p">)</span>
|
|
||||||
<span class="n">month_button</span> <span class="o">=</span> <span class="n">months_table</span><span class="o">.</span><span class="n">locator</span><span class="p">(</span><span class="s2">"//td"</span><span class="p">)</span><span class="o">.</span><span class="n">get_by_role</span><span class="p">(</span><span class="s2">"button"</span><span class="p">)</span><span class="o">.</span><span class="n">nth</span><span class="p">(</span><span class="n">month_index</span><span class="o">-</span><span class="mi">1</span><span class="p">)</span>
|
|
||||||
<span class="n">month_button</span><span class="o">.</span><span class="n">click</span><span class="p">()</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<span class="c1"># Проверки:</span>
|
|
||||||
<div class="viewcode-block" id="DatePickerComponent.check_prev_month_button_visibility">
|
|
||||||
<a class="viewcode-back" href="../../components.html#components.date_picker_component.DatePickerComponent.check_prev_month_button_visibility">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">check_prev_month_button_visibility</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">""" Проверка видимости кнопки перехода к предыдущему месяцу (стрелочка влево)."""</span>
|
|
||||||
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">prev_month_button</span><span class="o">.</span><span class="n">check_visibility</span><span class="p">(</span><span class="s2">"Prev Month Button is missing"</span><span class="p">)</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="DatePickerComponent.check_next_month_button_visibility">
|
|
||||||
<a class="viewcode-back" href="../../components.html#components.date_picker_component.DatePickerComponent.check_next_month_button_visibility">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">check_next_month_button_visibility</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">""" Проверка видимости кнопки перехода к следующему месяцу (стрелочка вправо)."""</span>
|
|
||||||
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">next_month_button</span><span class="o">.</span><span class="n">check_visibility</span><span class="p">(</span><span class="s2">"Next Month Button is missing"</span><span class="p">)</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="DatePickerComponent.check_year_button_visibility">
|
|
||||||
<a class="viewcode-back" href="../../components.html#components.date_picker_component.DatePickerComponent.check_year_button_visibility">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">check_year_button_visibility</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">""" Проверка видимости кнопки текущего значения года в заголовке средства выбора даты."""</span>
|
|
||||||
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">date_picker_year_button</span><span class="o">.</span><span class="n">check_visibility</span><span class="p">(</span><span class="s2">"Current Year Button is missing"</span><span class="p">)</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="DatePickerComponent.check_content">
|
|
||||||
<a class="viewcode-back" href="../../components.html#components.date_picker_component.DatePickerComponent.check_content">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">check_content</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Проверка состава компонент средства выбора даты."""</span>
|
|
||||||
|
|
||||||
<span class="n">month_dict</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"1"</span><span class="p">:</span><span class="s2">"январь"</span><span class="p">,</span>
|
|
||||||
<span class="s2">"2"</span><span class="p">:</span><span class="s2">"февраль"</span><span class="p">,</span>
|
|
||||||
<span class="s2">"3"</span><span class="p">:</span><span class="s2">"март"</span><span class="p">,</span>
|
|
||||||
<span class="s2">"4"</span><span class="p">:</span><span class="s2">"апрель"</span><span class="p">,</span>
|
|
||||||
<span class="s2">"5"</span><span class="p">:</span><span class="s2">"май"</span><span class="p">,</span>
|
|
||||||
<span class="s2">"6"</span><span class="p">:</span><span class="s2">"июнь"</span><span class="p">,</span>
|
|
||||||
<span class="s2">"7"</span><span class="p">:</span><span class="s2">"июль"</span><span class="p">,</span>
|
|
||||||
<span class="s2">"8"</span><span class="p">:</span><span class="s2">"август"</span><span class="p">,</span>
|
|
||||||
<span class="s2">"9"</span><span class="p">:</span><span class="s2">"сентябрь"</span><span class="p">,</span>
|
|
||||||
<span class="s2">"10"</span><span class="p">:</span><span class="s2">"октябрь"</span><span class="p">,</span>
|
|
||||||
<span class="s2">"11"</span><span class="p">:</span><span class="s2">"ноябрь"</span><span class="p">,</span>
|
|
||||||
<span class="s2">"12"</span><span class="p">:</span><span class="s2">"декабрь"</span><span class="p">}</span>
|
|
||||||
<span class="n">days_per_month</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"1"</span><span class="p">:</span><span class="mi">31</span><span class="p">,</span>
|
|
||||||
<span class="s2">"2"</span><span class="p">:</span><span class="mi">28</span><span class="p">,</span>
|
|
||||||
<span class="s2">"3"</span><span class="p">:</span><span class="mi">31</span><span class="p">,</span>
|
|
||||||
<span class="s2">"4"</span><span class="p">:</span><span class="mi">30</span><span class="p">,</span>
|
|
||||||
<span class="s2">"5"</span><span class="p">:</span><span class="mi">31</span><span class="p">,</span>
|
|
||||||
<span class="s2">"6"</span><span class="p">:</span><span class="mi">30</span><span class="p">,</span>
|
|
||||||
<span class="s2">"7"</span><span class="p">:</span><span class="mi">31</span><span class="p">,</span>
|
|
||||||
<span class="s2">"8"</span><span class="p">:</span><span class="mi">31</span><span class="p">,</span>
|
|
||||||
<span class="s2">"9"</span><span class="p">:</span><span class="mi">30</span><span class="p">,</span>
|
|
||||||
<span class="s2">"10"</span><span class="p">:</span><span class="mi">31</span><span class="p">,</span>
|
|
||||||
<span class="s2">"11"</span><span class="p">:</span><span class="mi">30</span><span class="p">,</span>
|
|
||||||
<span class="s2">"12"</span><span class="p">:</span><span class="mi">31</span><span class="p">}</span>
|
|
||||||
<span class="n">expected_weekdays</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"В"</span><span class="p">,</span> <span class="s2">"П"</span><span class="p">,</span> <span class="s2">"В"</span><span class="p">,</span> <span class="s2">"С"</span><span class="p">,</span> <span class="s2">"Ч"</span><span class="p">,</span> <span class="s2">"П"</span><span class="p">,</span> <span class="s2">"С"</span><span class="p">]</span>
|
|
||||||
|
|
||||||
<span class="n">expected_date</span> <span class="o">=</span> <span class="n">datetime</span><span class="o">.</span><span class="n">datetime</span><span class="o">.</span><span class="n">now</span><span class="p">()</span>
|
|
||||||
|
|
||||||
<span class="c1"># Проверка наличия кнопки текущего значения года в заголовке средства выбора даты</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">check_year_button_visibility</span><span class="p">()</span>
|
|
||||||
|
|
||||||
<span class="n">actual_year</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_year</span><span class="p">()</span>
|
|
||||||
<span class="k">assert</span> <span class="n">actual_year</span> <span class="o">==</span> <span class="nb">str</span><span class="p">(</span><span class="n">expected_date</span><span class="o">.</span><span class="n">year</span><span class="p">),</span> \
|
|
||||||
<span class="sa">f</span><span class="s2">"Expected year </span><span class="si">{</span><span class="n">expected_date</span><span class="o">.</span><span class="n">year</span><span class="si">}</span><span class="s2"> is not equal actual year </span><span class="si">{</span><span class="n">actual_year</span><span class="si">}</span><span class="s2"> on date picker title"</span>
|
|
||||||
|
|
||||||
<span class="c1"># Проверка наличия кнопок перехода к предыдущему/следующему месяцу</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">check_prev_month_button_visibility</span><span class="p">()</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">check_next_month_button_visibility</span><span class="p">()</span>
|
|
||||||
|
|
||||||
<span class="c1"># Проверка наличия и правильности текущей даты</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">current_month_year</span><span class="o">.</span><span class="n">check_visibility</span><span class="p">(</span><span class="s2">"Month and Year values is missing on date picker body"</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="n">y</span> <span class="o">=</span> <span class="n">expected_date</span><span class="o">.</span><span class="n">year</span>
|
|
||||||
<span class="n">m</span> <span class="o">=</span> <span class="nb">str</span><span class="p">(</span><span class="n">expected_date</span><span class="o">.</span><span class="n">strftime</span><span class="p">(</span><span class="s2">"%m"</span><span class="p">))</span>
|
|
||||||
<span class="n">expected_month_year</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">month_dict</span><span class="p">[</span><span class="n">m</span><span class="p">]</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="n">y</span><span class="si">}</span><span class="s2"> г."</span>
|
|
||||||
<span class="n">actual_month_year</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_month_year</span><span class="p">()</span>
|
|
||||||
<span class="k">assert</span> <span class="n">actual_month_year</span> <span class="o">==</span> <span class="n">expected_month_year</span><span class="p">,</span> \
|
|
||||||
<span class="sa">f</span><span class="s2">"Expected value </span><span class="si">{</span><span class="n">expected_month_year</span><span class="si">}</span><span class="s2"> is not equal actual value </span><span class="si">{</span><span class="n">actual_month_year</span><span class="si">}</span><span class="s2"> on date picker body"</span>
|
|
||||||
|
|
||||||
<span class="n">expected_day</span> <span class="o">=</span> <span class="nb">str</span><span class="p">(</span><span class="n">expected_date</span><span class="o">.</span><span class="n">strftime</span><span class="p">(</span><span class="s2">"</span><span class="si">%d</span><span class="s2">"</span><span class="p">))</span>
|
|
||||||
<span class="n">actual_day</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_day</span><span class="p">()</span>
|
|
||||||
<span class="k">assert</span> <span class="n">actual_day</span> <span class="o">==</span> <span class="n">expected_day</span><span class="p">,</span> \
|
|
||||||
<span class="sa">f</span><span class="s2">"Expected day </span><span class="si">{</span><span class="n">expected_day</span><span class="si">}</span><span class="s2"> is not equal actual day </span><span class="si">{</span><span class="n">actual_day</span><span class="si">}</span><span class="s2"> on date picker body"</span>
|
|
||||||
|
|
||||||
<span class="c1"># Проверка таблицы дней</span>
|
|
||||||
<span class="n">days_table_locator</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">page</span><span class="o">.</span><span class="n">locator</span><span class="p">(</span><span class="n">DatePickerLocators</span><span class="o">.</span><span class="n">DATE_PICKER_TABLE_DAYS</span><span class="p">)</span>
|
|
||||||
<span class="n">headers</span> <span class="o">=</span> <span class="n">days_table_locator</span><span class="o">.</span><span class="n">locator</span><span class="p">(</span><span class="s2">"th"</span><span class="p">)</span><span class="o">.</span><span class="n">all</span><span class="p">()</span>
|
|
||||||
<span class="n">actual_weekdays</span> <span class="o">=</span> <span class="p">[]</span>
|
|
||||||
<span class="k">for</span> <span class="n">header</span> <span class="ow">in</span> <span class="n">headers</span><span class="p">:</span>
|
|
||||||
<span class="n">actual_weekdays</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">header</span><span class="o">.</span><span class="n">text_content</span><span class="p">())</span>
|
|
||||||
|
|
||||||
<span class="k">assert</span> <span class="n">actual_weekdays</span> <span class="o">==</span> <span class="n">expected_weekdays</span><span class="p">,</span> \
|
|
||||||
<span class="sa">f</span><span class="s2">"Expected weekdays list </span><span class="si">{</span><span class="n">expected_weekdays</span><span class="si">}</span><span class="s2"> is not equal actual weekdays list </span><span class="si">{</span><span class="n">actual_weekdays</span><span class="si">}</span><span class="s2"> on date picker body"</span>
|
|
||||||
|
|
||||||
<span class="n">rows</span> <span class="o">=</span> <span class="n">days_table_locator</span><span class="o">.</span><span class="n">locator</span><span class="p">(</span><span class="s2">"//tbody/tr"</span><span class="p">)</span>
|
|
||||||
<span class="n">days_counter</span> <span class="o">=</span> <span class="mi">0</span>
|
|
||||||
<span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">rows</span><span class="o">.</span><span class="n">count</span><span class="p">()):</span>
|
|
||||||
<span class="n">row</span> <span class="o">=</span> <span class="n">rows</span><span class="o">.</span><span class="n">nth</span><span class="p">(</span><span class="n">i</span><span class="p">)</span>
|
|
||||||
<span class="n">cells</span> <span class="o">=</span> <span class="n">row</span><span class="o">.</span><span class="n">locator</span><span class="p">(</span><span class="s2">"td"</span><span class="p">)</span>
|
|
||||||
<span class="k">for</span> <span class="n">j</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">cells</span><span class="o">.</span><span class="n">count</span><span class="p">()):</span>
|
|
||||||
<span class="n">cell_text</span> <span class="o">=</span> <span class="n">cells</span><span class="o">.</span><span class="n">nth</span><span class="p">(</span><span class="n">j</span><span class="p">)</span><span class="o">.</span><span class="n">inner_text</span><span class="p">()</span>
|
|
||||||
<span class="k">if</span> <span class="n">cell_text</span> <span class="o">!=</span> <span class="s2">""</span><span class="p">:</span>
|
|
||||||
<span class="n">days_counter</span> <span class="o">+=</span> <span class="mi">1</span>
|
|
||||||
|
|
||||||
<span class="n">expected_day_counter</span> <span class="o">=</span> <span class="n">days_per_month</span><span class="p">[</span><span class="n">m</span><span class="p">]</span>
|
|
||||||
<span class="k">if</span> <span class="n">m</span> <span class="o">==</span> <span class="s2">"2"</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_is_leap_year</span><span class="p">(</span><span class="n">expected_date</span><span class="o">.</span><span class="n">year</span><span class="p">):</span>
|
|
||||||
<span class="n">expected_day_counter</span> <span class="o">=</span> <span class="mi">29</span>
|
|
||||||
|
|
||||||
<span class="k">assert</span> <span class="n">days_counter</span> <span class="o">==</span> <span class="n">expected_day_counter</span><span class="p">,</span> <span class="sa">f</span><span class="s2">"Incorrect amount of days </span><span class="si">{</span><span class="n">days_counter</span><span class="si">}</span><span class="s2"> on date picker body"</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="DatePickerComponent._is_leap_year">
|
|
||||||
<a class="viewcode-back" href="../../components.html#components.date_picker_component.DatePickerComponent._is_leap_year">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">_is_leap_year</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">year</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="nb">bool</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Проверка является ли год високосным."""</span>
|
|
||||||
|
|
||||||
<span class="k">if</span> <span class="nb">int</span><span class="p">(</span><span class="n">year</span><span class="p">)</span> <span class="o">%</span> <span class="mi">400</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span>
|
|
||||||
<span class="k">return</span> <span class="kc">True</span>
|
|
||||||
<span class="k">if</span> <span class="nb">int</span><span class="p">(</span><span class="n">year</span><span class="p">)</span> <span class="o">%</span> <span class="mi">100</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span>
|
|
||||||
<span class="k">return</span> <span class="kc">False</span>
|
|
||||||
<span class="k">if</span> <span class="nb">int</span><span class="p">(</span><span class="n">year</span><span class="p">)</span> <span class="o">%</span> <span class="mi">4</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span>
|
|
||||||
<span class="k">return</span> <span class="kc">True</span>
|
|
||||||
<span class="k">return</span> <span class="kc">False</span></div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</pre></div>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<footer>
|
|
||||||
|
|
||||||
<hr/>
|
|
||||||
|
|
||||||
<div role="contentinfo">
|
|
||||||
<p>© Авторские права 2025, NPO KIS. </p>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
Собрано при помощи <a href="https://www.sphinx-doc.org/">Sphinx</a> с использованием
|
|
||||||
<a href="https://github.com/readthedocs/sphinx_rtd_theme">темы,</a>
|
|
||||||
предоставленной <a href="https://readthedocs.org">Read the Docs</a>.
|
|
||||||
|
|
||||||
|
|
||||||
</footer>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</section>
|
|
||||||
</div>
|
|
||||||
<script>
|
|
||||||
jQuery(function () {
|
|
||||||
SphinxRtdTheme.Navigation.enable(true);
|
|
||||||
});
|
|
||||||
</script>
|
|
||||||
|
|
||||||
</body>
|
|
||||||
</html>
|
|
||||||
|
|
@ -1,381 +0,0 @@
|
||||||
|
|
||||||
|
|
||||||
<!DOCTYPE html>
|
|
||||||
<html class="writer-html5" lang="ru" data-content_root="../../">
|
|
||||||
<head>
|
|
||||||
<meta charset="utf-8" />
|
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
||||||
<title>components.dropdown_list_component — документация e-nms-qa-automation 0.1.0</title>
|
|
||||||
<link rel="stylesheet" type="text/css" href="../../_static/pygments.css?v=b86133f3" />
|
|
||||||
<link rel="stylesheet" type="text/css" href="../../_static/css/theme.css?v=e59714d7" />
|
|
||||||
|
|
||||||
|
|
||||||
<script src="../../_static/jquery.js?v=5d32c60e"></script>
|
|
||||||
<script src="../../_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script>
|
|
||||||
<script src="../../_static/documentation_options.js?v=6ff560e8"></script>
|
|
||||||
<script src="../../_static/doctools.js?v=9bcbadda"></script>
|
|
||||||
<script src="../../_static/sphinx_highlight.js?v=dc90522c"></script>
|
|
||||||
<script src="../../_static/translations.js?v=cd1d70c9"></script>
|
|
||||||
<script src="../../_static/js/theme.js"></script>
|
|
||||||
<link rel="index" title="Алфавитный указатель" href="../../genindex.html" />
|
|
||||||
<link rel="search" title="Поиск" href="../../search.html" />
|
|
||||||
</head>
|
|
||||||
|
|
||||||
<body class="wy-body-for-nav">
|
|
||||||
<div class="wy-grid-for-nav">
|
|
||||||
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
|
|
||||||
<div class="wy-side-scroll">
|
|
||||||
<div class="wy-side-nav-search" >
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<a href="../../index.html" class="icon icon-home">
|
|
||||||
e-nms-qa-automation
|
|
||||||
</a>
|
|
||||||
<div role="search">
|
|
||||||
<form id="rtd-search-form" class="wy-form" action="../../search.html" method="get">
|
|
||||||
<input type="text" name="q" placeholder="Поиск в документации" aria-label="Поиск в документации" />
|
|
||||||
<input type="hidden" name="check_keywords" value="yes" />
|
|
||||||
<input type="hidden" name="area" value="default" />
|
|
||||||
</form>
|
|
||||||
</div>
|
|
||||||
</div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Меню навигации">
|
|
||||||
<!-- Local TOC -->
|
|
||||||
<div class="local-toc"></div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</nav>
|
|
||||||
|
|
||||||
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Меню навигации для мобильных устройств" >
|
|
||||||
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
|
|
||||||
<a href="../../index.html">e-nms-qa-automation</a>
|
|
||||||
</nav>
|
|
||||||
|
|
||||||
<div class="wy-nav-content">
|
|
||||||
<div class="rst-content">
|
|
||||||
<div role="navigation" aria-label="Навигация по страницам">
|
|
||||||
<ul class="wy-breadcrumbs">
|
|
||||||
<li><a href="../../index.html" class="icon icon-home" aria-label="Home"></a></li>
|
|
||||||
<li class="breadcrumb-item"><a href="../index.html">Код модуля</a></li>
|
|
||||||
<li class="breadcrumb-item active">components.dropdown_list_component</li>
|
|
||||||
<li class="wy-breadcrumbs-aside">
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
<hr/>
|
|
||||||
</div>
|
|
||||||
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
|
|
||||||
<div itemprop="articleBody">
|
|
||||||
|
|
||||||
<h1>Исходный код components.dropdown_list_component</h1><div class="highlight"><pre>
|
|
||||||
<span></span><span class="sd">"""Модуль dropdown_list_component содержит класс для работы с выпадающими списками.</span>
|
|
||||||
|
|
||||||
<span class="sd">Класс DropdownList наследует базовый функционал BaseComponent и добавляет</span>
|
|
||||||
<span class="sd">методы для взаимодействия с выпадающими списками на странице.</span>
|
|
||||||
<span class="sd">"""</span>
|
|
||||||
<span class="kn">import</span><span class="w"> </span><span class="nn">re</span>
|
|
||||||
<span class="kn">from</span><span class="w"> </span><span class="nn">playwright.sync_api</span><span class="w"> </span><span class="kn">import</span> <span class="n">Page</span><span class="p">,</span> <span class="n">Locator</span>
|
|
||||||
<span class="kn">from</span><span class="w"> </span><span class="nn">tools.logger</span><span class="w"> </span><span class="kn">import</span> <span class="n">get_logger</span>
|
|
||||||
<span class="kn">from</span><span class="w"> </span><span class="nn">components.base_component</span><span class="w"> </span><span class="kn">import</span> <span class="n">BaseComponent</span>
|
|
||||||
|
|
||||||
<span class="n">logger</span> <span class="o">=</span> <span class="n">get_logger</span><span class="p">(</span><span class="s2">"DROPDOWN_LIST"</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="DropdownList">
|
|
||||||
<a class="viewcode-back" href="../../components.html#components.dropdown_list_component.DropdownList">[документация]</a>
|
|
||||||
<span class="k">class</span><span class="w"> </span><span class="nc">DropdownList</span><span class="p">(</span><span class="n">BaseComponent</span><span class="p">):</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Класс для работы с выпадающими списками.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Наследует функциональность BaseElement и добавляет специфичные</span>
|
|
||||||
<span class="sd"> методы для выбора и проверки элементов списка.</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="DropdownList.__init__">
|
|
||||||
<a class="viewcode-back" href="../../components.html#components.dropdown_list_component.DropdownList.__init__">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">page</span><span class="p">:</span> <span class="n">Page</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Инициализирует компонент выпадающего списка.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Args:</span>
|
|
||||||
<span class="sd"> page: Экземпляр страницы Playwright.</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
|
|
||||||
<span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="fm">__init__</span><span class="p">(</span><span class="n">page</span><span class="p">)</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<span class="c1"># Действия:</span>
|
|
||||||
<div class="viewcode-block" id="DropdownList.click_item_with_text">
|
|
||||||
<a class="viewcode-back" href="../../components.html#components.dropdown_list_component.DropdownList.click_item_with_text">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">click_item_with_text</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">text</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Выбирает элемент списка по указанному тексту.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Args:</span>
|
|
||||||
<span class="sd"> text (str): Текст элемента для выбора.</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
|
|
||||||
<span class="n">element</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">page</span><span class="o">.</span><span class="n">get_by_role</span><span class="p">(</span><span class="s2">"listitem"</span><span class="p">)</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span><span class="n">has_text</span><span class="o">=</span><span class="n">text</span><span class="p">)</span>
|
|
||||||
<span class="k">if</span> <span class="n">element</span><span class="o">.</span><span class="n">count</span><span class="p">()</span> <span class="o">></span> <span class="mi">1</span><span class="p">:</span>
|
|
||||||
<span class="n">rtext</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"^</span><span class="si">{</span><span class="n">text</span><span class="si">}</span><span class="s2">$"</span>
|
|
||||||
<span class="n">element</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">page</span><span class="o">.</span><span class="n">get_by_role</span><span class="p">(</span><span class="s2">"listitem"</span><span class="p">)</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span>
|
|
||||||
<span class="n">has_text</span><span class="o">=</span><span class="n">re</span><span class="o">.</span><span class="n">compile</span><span class="p">(</span><span class="n">rtext</span><span class="p">)</span>
|
|
||||||
<span class="p">)</span>
|
|
||||||
<span class="n">element</span><span class="o">.</span><span class="n">click</span><span class="p">()</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="DropdownList.get_combobox_options">
|
|
||||||
<a class="viewcode-back" href="../../components.html#components.dropdown_list_component.DropdownList.get_combobox_options">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">get_combobox_options</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">combobox_locator</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="n">Locator</span><span class="p">,</span>
|
|
||||||
<span class="n">listbox_locator</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="n">Locator</span><span class="p">,</span>
|
|
||||||
<span class="n">icon_locator</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="n">Locator</span> <span class="o">=</span> <span class="kc">None</span><span class="p">)</span> <span class="o">-></span> <span class="nb">list</span><span class="p">[</span><span class="nb">str</span><span class="p">]:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""</span>
|
|
||||||
<span class="sd"> Получает список доступных опций из combobox.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Args:</span>
|
|
||||||
<span class="sd"> combobox_locator: Локатор combobox</span>
|
|
||||||
<span class="sd"> listbox_locator: Локатор выпадающего списка</span>
|
|
||||||
<span class="sd"> icon_locator: Локатор иконки для клика (опционально)</span>
|
|
||||||
|
|
||||||
<span class="sd"> Returns:</span>
|
|
||||||
<span class="sd"> list[str]: Список доступных опций</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
<span class="n">logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="s2">"Getting combobox options list..."</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="c1"># Открываем combobox (если еще не открыт)</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">open_combobox</span><span class="p">(</span><span class="n">combobox_locator</span><span class="p">,</span> <span class="n">listbox_locator</span><span class="p">,</span> <span class="n">icon_locator</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="n">options_list</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_item_names</span><span class="p">(</span><span class="n">listbox_locator</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="c1"># Закрываем combobox (кликаем вне его)</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">page</span><span class="o">.</span><span class="n">mouse</span><span class="o">.</span><span class="n">click</span><span class="p">(</span><span class="mi">10</span><span class="p">,</span> <span class="mi">10</span><span class="p">)</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">page</span><span class="o">.</span><span class="n">wait_for_timeout</span><span class="p">(</span><span class="mi">500</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="n">logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Found options: </span><span class="si">{</span><span class="nb">len</span><span class="p">(</span><span class="n">options_list</span><span class="p">)</span><span class="si">}</span><span class="s2"> - </span><span class="si">{</span><span class="n">options_list</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span>
|
|
||||||
<span class="k">return</span> <span class="n">options_list</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="DropdownList.get_item_names">
|
|
||||||
<a class="viewcode-back" href="../../components.html#components.dropdown_list_component.DropdownList.get_item_names">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">get_item_names</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">locator</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="n">Locator</span><span class="p">)</span> <span class="o">-></span> <span class="nb">list</span><span class="p">[</span><span class="nb">str</span><span class="p">]:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Возвращает тексты всех элементов по указанному локатору.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Args:</span>
|
|
||||||
<span class="sd"> locator: Локатор элементов или строка с CSS/XPath.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Returns:</span>
|
|
||||||
<span class="sd"> Список текстов элементов.</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
|
|
||||||
<span class="n">loc</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_locator</span><span class="p">(</span><span class="n">locator</span><span class="p">)</span>
|
|
||||||
<span class="n">texts</span> <span class="o">=</span> <span class="n">loc</span><span class="o">.</span><span class="n">all_inner_texts</span><span class="p">()</span>
|
|
||||||
<span class="k">return</span> <span class="n">texts</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">splitlines</span><span class="p">()</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="DropdownList.get_selected_combobox_value">
|
|
||||||
<a class="viewcode-back" href="../../components.html#components.dropdown_list_component.DropdownList.get_selected_combobox_value">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">get_selected_combobox_value</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">combobox_locator</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="n">Locator</span><span class="p">,</span>
|
|
||||||
<span class="n">value_locator</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="n">Locator</span> <span class="o">=</span> <span class="kc">None</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""</span>
|
|
||||||
<span class="sd"> Получает выбранное значение из combobox.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Args:</span>
|
|
||||||
<span class="sd"> combobox_locator: Локатор combobox</span>
|
|
||||||
<span class="sd"> value_locator: Локатор элемента с выбранным значением (опционально)</span>
|
|
||||||
|
|
||||||
<span class="sd"> Returns:</span>
|
|
||||||
<span class="sd"> str: Выбранное значение или пустая строка если ничего не выбрано</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
<span class="n">combobox</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_locator</span><span class="p">(</span><span class="n">combobox_locator</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="n">selected_value</span> <span class="o">=</span> <span class="s2">""</span>
|
|
||||||
|
|
||||||
<span class="k">if</span> <span class="n">value_locator</span><span class="p">:</span>
|
|
||||||
<span class="c1"># Используем переданный локатор для значения</span>
|
|
||||||
<span class="n">value_element</span> <span class="o">=</span> <span class="n">combobox</span><span class="o">.</span><span class="n">locator</span><span class="p">(</span><span class="n">value_locator</span><span class="p">)</span>
|
|
||||||
<span class="k">if</span> <span class="n">value_element</span><span class="o">.</span><span class="n">count</span><span class="p">()</span> <span class="o">></span> <span class="mi">0</span><span class="p">:</span>
|
|
||||||
<span class="n">selected_value</span> <span class="o">=</span> <span class="n">value_element</span><span class="o">.</span><span class="n">first</span><span class="o">.</span><span class="n">text_content</span><span class="p">()</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span>
|
|
||||||
<span class="k">else</span><span class="p">:</span>
|
|
||||||
<span class="c1"># Ищем в span элементах по умолчанию</span>
|
|
||||||
<span class="n">span_locator</span> <span class="o">=</span> <span class="n">combobox</span><span class="o">.</span><span class="n">locator</span><span class="p">(</span><span class="s2">"span"</span><span class="p">)</span>
|
|
||||||
<span class="k">if</span> <span class="n">span_locator</span><span class="o">.</span><span class="n">count</span><span class="p">()</span> <span class="o">></span> <span class="mi">0</span><span class="p">:</span>
|
|
||||||
<span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">span_locator</span><span class="o">.</span><span class="n">count</span><span class="p">()):</span>
|
|
||||||
<span class="n">span_text</span> <span class="o">=</span> <span class="n">span_locator</span><span class="o">.</span><span class="n">nth</span><span class="p">(</span><span class="n">i</span><span class="p">)</span><span class="o">.</span><span class="n">text_content</span><span class="p">()</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span>
|
|
||||||
<span class="k">if</span> <span class="n">span_text</span> <span class="ow">and</span> <span class="n">span_text</span> <span class="ow">not</span> <span class="ow">in</span> <span class="p">[</span><span class="s2">"Класс объекта учета"</span><span class="p">]:</span>
|
|
||||||
<span class="n">selected_value</span> <span class="o">=</span> <span class="n">span_text</span>
|
|
||||||
<span class="k">break</span>
|
|
||||||
|
|
||||||
<span class="n">logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Selected combobox value: '</span><span class="si">{</span><span class="n">selected_value</span><span class="si">}</span><span class="s2">'"</span><span class="p">)</span>
|
|
||||||
<span class="k">return</span> <span class="n">selected_value</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="DropdownList.open_combobox">
|
|
||||||
<a class="viewcode-back" href="../../components.html#components.dropdown_list_component.DropdownList.open_combobox">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">open_combobox</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">combobox_locator</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="n">Locator</span><span class="p">,</span>
|
|
||||||
<span class="n">listbox_locator</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="n">Locator</span><span class="p">,</span>
|
|
||||||
<span class="n">icon_locator</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="n">Locator</span> <span class="o">=</span> <span class="kc">None</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""</span>
|
|
||||||
<span class="sd"> Открывает выпадающий список combobox.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Args:</span>
|
|
||||||
<span class="sd"> combobox_locator: Локатор combobox</span>
|
|
||||||
<span class="sd"> listbox_locator: Локатор выпадающего списка</span>
|
|
||||||
<span class="sd"> icon_locator: Локатор иконки для клика (опционально)</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
<span class="n">logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="s2">"Opening combobox..."</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="n">combobox</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_locator</span><span class="p">(</span><span class="n">combobox_locator</span><span class="p">)</span>
|
|
||||||
<span class="n">listbox</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_locator</span><span class="p">(</span><span class="n">listbox_locator</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="c1"># Прокручиваем до combobox</span>
|
|
||||||
<span class="n">combobox</span><span class="o">.</span><span class="n">scroll_into_view_if_needed</span><span class="p">()</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">page</span><span class="o">.</span><span class="n">wait_for_timeout</span><span class="p">(</span><span class="mi">1000</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="c1"># Проверяем, не открыт ли уже список</span>
|
|
||||||
<span class="n">listbox_already_open</span> <span class="o">=</span> <span class="kc">False</span>
|
|
||||||
<span class="n">listbox_count</span> <span class="o">=</span> <span class="n">listbox</span><span class="o">.</span><span class="n">count</span><span class="p">()</span>
|
|
||||||
|
|
||||||
<span class="k">if</span> <span class="n">listbox_count</span> <span class="o">></span> <span class="mi">0</span><span class="p">:</span>
|
|
||||||
<span class="n">listbox_already_open</span> <span class="o">=</span> <span class="n">listbox</span><span class="o">.</span><span class="n">first</span><span class="o">.</span><span class="n">is_visible</span><span class="p">()</span>
|
|
||||||
|
|
||||||
<span class="k">if</span> <span class="ow">not</span> <span class="n">listbox_already_open</span><span class="p">:</span>
|
|
||||||
<span class="c1"># Если указан локатор иконки, кликаем на него, иначе на сам combobox</span>
|
|
||||||
<span class="k">if</span> <span class="n">icon_locator</span><span class="p">:</span>
|
|
||||||
<span class="n">icon</span> <span class="o">=</span> <span class="n">combobox</span><span class="o">.</span><span class="n">locator</span><span class="p">(</span><span class="n">icon_locator</span><span class="p">)</span>
|
|
||||||
<span class="n">icon</span><span class="o">.</span><span class="n">scroll_into_view_if_needed</span><span class="p">()</span>
|
|
||||||
<span class="n">icon</span><span class="o">.</span><span class="n">click</span><span class="p">(</span><span class="n">timeout</span><span class="o">=</span><span class="mi">10000</span><span class="p">)</span>
|
|
||||||
<span class="k">else</span><span class="p">:</span>
|
|
||||||
<span class="n">combobox</span><span class="o">.</span><span class="n">click</span><span class="p">(</span><span class="n">timeout</span><span class="o">=</span><span class="mi">10000</span><span class="p">)</span>
|
|
||||||
<span class="n">logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="s2">"Combobox click completed"</span><span class="p">)</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">page</span><span class="o">.</span><span class="n">wait_for_timeout</span><span class="p">(</span><span class="mi">1000</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="c1"># Проверяем что список открылся</span>
|
|
||||||
<span class="n">listbox_count_after</span> <span class="o">=</span> <span class="n">listbox</span><span class="o">.</span><span class="n">count</span><span class="p">()</span>
|
|
||||||
<span class="n">listbox_visible</span> <span class="o">=</span> <span class="kc">False</span>
|
|
||||||
|
|
||||||
<span class="k">if</span> <span class="n">listbox_count_after</span> <span class="o">></span> <span class="mi">0</span><span class="p">:</span>
|
|
||||||
<span class="n">listbox_visible</span> <span class="o">=</span> <span class="n">listbox</span><span class="o">.</span><span class="n">first</span><span class="o">.</span><span class="n">is_visible</span><span class="p">()</span>
|
|
||||||
|
|
||||||
<span class="k">if</span> <span class="n">listbox_visible</span><span class="p">:</span>
|
|
||||||
<span class="n">logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="s2">"Dropdown list found and opened"</span><span class="p">)</span>
|
|
||||||
<span class="k">else</span><span class="p">:</span>
|
|
||||||
<span class="n">logger</span><span class="o">.</span><span class="n">warning</span><span class="p">(</span><span class="s2">"Failed to open dropdown list"</span><span class="p">)</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="DropdownList.scroll_until_end">
|
|
||||||
<a class="viewcode-back" href="../../components.html#components.dropdown_list_component.DropdownList.scroll_until_end">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">scroll_until_end</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">locator</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="n">Locator</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""</span>
|
|
||||||
<span class="sd"> Скроллит список до тех пор, пока не перестанут подгружаться новые элементы.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Args:</span>
|
|
||||||
<span class="sd"> locator: Локатор элементов или строка с CSS/XPath.</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
|
|
||||||
<span class="n">loc</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_locator</span><span class="p">(</span><span class="n">locator</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="n">items_count</span> <span class="o">=</span> <span class="mi">0</span>
|
|
||||||
<span class="n">attempts</span> <span class="o">=</span> <span class="mi">0</span>
|
|
||||||
<span class="n">max_attempts</span> <span class="o">=</span> <span class="mi">3</span>
|
|
||||||
<span class="n">last_item_name</span> <span class="o">=</span> <span class="s2">""</span>
|
|
||||||
|
|
||||||
<span class="k">while</span> <span class="n">attempts</span> <span class="o"><</span> <span class="n">max_attempts</span><span class="p">:</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">page</span><span class="o">.</span><span class="n">wait_for_timeout</span><span class="p">(</span><span class="mi">300</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="n">item_names</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_item_names</span><span class="p">(</span><span class="n">loc</span><span class="p">)</span>
|
|
||||||
<span class="n">current_count</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">item_names</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="k">if</span> <span class="n">current_count</span> <span class="o">==</span> <span class="n">items_count</span><span class="p">:</span>
|
|
||||||
<span class="n">attempts</span> <span class="o">+=</span> <span class="mi">1</span>
|
|
||||||
<span class="k">else</span><span class="p">:</span>
|
|
||||||
<span class="n">items_count</span> <span class="o">=</span> <span class="n">current_count</span>
|
|
||||||
<span class="n">attempts</span> <span class="o">=</span> <span class="mi">0</span>
|
|
||||||
|
|
||||||
<span class="n">last_item_name</span> <span class="o">=</span> <span class="n">item_names</span><span class="p">[</span><span class="n">current_count</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span>
|
|
||||||
<span class="n">element</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">page</span><span class="o">.</span><span class="n">get_by_role</span><span class="p">(</span><span class="s2">"listitem"</span><span class="p">)</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span>
|
|
||||||
<span class="n">has_text</span><span class="o">=</span><span class="n">last_item_name</span>
|
|
||||||
<span class="p">)</span>
|
|
||||||
<span class="n">element</span><span class="o">.</span><span class="n">scroll_into_view_if_needed</span><span class="p">()</span>
|
|
||||||
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">page</span><span class="o">.</span><span class="n">wait_for_timeout</span><span class="p">(</span><span class="mi">300</span><span class="p">)</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">check_item_with_text</span><span class="p">(</span><span class="n">last_item_name</span><span class="p">)</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<span class="c1"># Проверки:</span>
|
|
||||||
<div class="viewcode-block" id="DropdownList.check_item_with_text">
|
|
||||||
<a class="viewcode-back" href="../../components.html#components.dropdown_list_component.DropdownList.check_item_with_text">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">check_item_with_text</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">text</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Проверяет наличие и доступность элемента списка.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Args:</span>
|
|
||||||
<span class="sd"> text (str): Текст элемента для проверки.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Raises:</span>
|
|
||||||
<span class="sd"> AssertionError: Если элемент отсутствует или недоступен.</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
|
|
||||||
<span class="n">element</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">page</span><span class="o">.</span><span class="n">get_by_role</span><span class="p">(</span><span class="s2">"listitem"</span><span class="p">)</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span><span class="n">has_text</span><span class="o">=</span><span class="n">text</span><span class="p">)</span>
|
|
||||||
<span class="k">if</span> <span class="n">element</span><span class="o">.</span><span class="n">count</span><span class="p">()</span> <span class="o">></span> <span class="mi">1</span><span class="p">:</span>
|
|
||||||
<span class="n">rtext</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"^</span><span class="si">{</span><span class="n">text</span><span class="si">}</span><span class="s2">$"</span>
|
|
||||||
<span class="n">element</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">page</span><span class="o">.</span><span class="n">get_by_role</span><span class="p">(</span><span class="s2">"listitem"</span><span class="p">)</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span>
|
|
||||||
<span class="n">has_text</span><span class="o">=</span><span class="n">re</span><span class="o">.</span><span class="n">compile</span><span class="p">(</span><span class="n">rtext</span><span class="p">)</span>
|
|
||||||
<span class="p">)</span>
|
|
||||||
<span class="n">enabled</span> <span class="o">=</span> <span class="n">element</span><span class="o">.</span><span class="n">is_enabled</span><span class="p">()</span>
|
|
||||||
<span class="k">if</span> <span class="ow">not</span> <span class="n">enabled</span><span class="p">:</span>
|
|
||||||
<span class="k">assert</span> <span class="kc">False</span><span class="p">,</span> <span class="sa">f</span><span class="s2">"Dropdown list item '</span><span class="si">{</span><span class="n">text</span><span class="si">}</span><span class="s2">' is missing or disabled"</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="DropdownList.check_vertical_scrolling">
|
|
||||||
<a class="viewcode-back" href="../../components.html#components.dropdown_list_component.DropdownList.check_vertical_scrolling">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">check_vertical_scrolling</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">locator</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="n">Locator</span><span class="p">)</span> <span class="o">-></span> <span class="nb">bool</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""</span>
|
|
||||||
<span class="sd"> Проверяет функцию вертикального скроллинга списка.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Args:</span>
|
|
||||||
<span class="sd"> locator: Локатор элементов или строка с CSS/XPath.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Returns:</span>
|
|
||||||
<span class="sd"> True или False значение в зависимости от скроллируемый список или нет.</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
|
|
||||||
<span class="n">loc</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_locator</span><span class="p">(</span><span class="n">locator</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="n">is_scrollable_vertically</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">is_scrollable_vertically</span><span class="p">(</span><span class="n">loc</span><span class="p">)</span>
|
|
||||||
<span class="k">if</span> <span class="n">is_scrollable_vertically</span><span class="p">:</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">scroll_until_end</span><span class="p">(</span><span class="n">loc</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="n">item_names</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_item_names</span><span class="p">(</span><span class="n">loc</span><span class="p">)</span>
|
|
||||||
<span class="n">first_item_name</span> <span class="o">=</span> <span class="n">item_names</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span>
|
|
||||||
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">scroll_up</span><span class="p">(</span><span class="n">loc</span><span class="p">)</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">page</span><span class="o">.</span><span class="n">wait_for_timeout</span><span class="p">(</span><span class="mi">300</span><span class="p">)</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">check_item_with_text</span><span class="p">(</span><span class="n">first_item_name</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="k">return</span> <span class="n">is_scrollable_vertically</span></div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</pre></div>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<footer>
|
|
||||||
|
|
||||||
<hr/>
|
|
||||||
|
|
||||||
<div role="contentinfo">
|
|
||||||
<p>© Авторские права 2025, NPO KIS. </p>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
Собрано при помощи <a href="https://www.sphinx-doc.org/">Sphinx</a> с использованием
|
|
||||||
<a href="https://github.com/readthedocs/sphinx_rtd_theme">темы,</a>
|
|
||||||
предоставленной <a href="https://readthedocs.org">Read the Docs</a>.
|
|
||||||
|
|
||||||
|
|
||||||
</footer>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</section>
|
|
||||||
</div>
|
|
||||||
<script>
|
|
||||||
jQuery(function () {
|
|
||||||
SphinxRtdTheme.Navigation.enable(true);
|
|
||||||
});
|
|
||||||
</script>
|
|
||||||
|
|
||||||
</body>
|
|
||||||
</html>
|
|
||||||
|
|
@ -1,314 +0,0 @@
|
||||||
|
|
||||||
|
|
||||||
<!DOCTYPE html>
|
|
||||||
<html class="writer-html5" lang="ru" data-content_root="../../">
|
|
||||||
<head>
|
|
||||||
<meta charset="utf-8" />
|
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
||||||
<title>components.eventbar_component — документация e-nms-qa-automation 0.1.0</title>
|
|
||||||
<link rel="stylesheet" type="text/css" href="../../_static/pygments.css?v=b86133f3" />
|
|
||||||
<link rel="stylesheet" type="text/css" href="../../_static/css/theme.css?v=e59714d7" />
|
|
||||||
|
|
||||||
|
|
||||||
<script src="../../_static/jquery.js?v=5d32c60e"></script>
|
|
||||||
<script src="../../_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script>
|
|
||||||
<script src="../../_static/documentation_options.js?v=6ff560e8"></script>
|
|
||||||
<script src="../../_static/doctools.js?v=9bcbadda"></script>
|
|
||||||
<script src="../../_static/sphinx_highlight.js?v=dc90522c"></script>
|
|
||||||
<script src="../../_static/translations.js?v=cd1d70c9"></script>
|
|
||||||
<script src="../../_static/js/theme.js"></script>
|
|
||||||
<link rel="index" title="Алфавитный указатель" href="../../genindex.html" />
|
|
||||||
<link rel="search" title="Поиск" href="../../search.html" />
|
|
||||||
</head>
|
|
||||||
|
|
||||||
<body class="wy-body-for-nav">
|
|
||||||
<div class="wy-grid-for-nav">
|
|
||||||
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
|
|
||||||
<div class="wy-side-scroll">
|
|
||||||
<div class="wy-side-nav-search" >
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<a href="../../index.html" class="icon icon-home">
|
|
||||||
e-nms-qa-automation
|
|
||||||
</a>
|
|
||||||
<div role="search">
|
|
||||||
<form id="rtd-search-form" class="wy-form" action="../../search.html" method="get">
|
|
||||||
<input type="text" name="q" placeholder="Поиск в документации" aria-label="Поиск в документации" />
|
|
||||||
<input type="hidden" name="check_keywords" value="yes" />
|
|
||||||
<input type="hidden" name="area" value="default" />
|
|
||||||
</form>
|
|
||||||
</div>
|
|
||||||
</div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Меню навигации">
|
|
||||||
<!-- Local TOC -->
|
|
||||||
<div class="local-toc"></div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</nav>
|
|
||||||
|
|
||||||
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Меню навигации для мобильных устройств" >
|
|
||||||
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
|
|
||||||
<a href="../../index.html">e-nms-qa-automation</a>
|
|
||||||
</nav>
|
|
||||||
|
|
||||||
<div class="wy-nav-content">
|
|
||||||
<div class="rst-content">
|
|
||||||
<div role="navigation" aria-label="Навигация по страницам">
|
|
||||||
<ul class="wy-breadcrumbs">
|
|
||||||
<li><a href="../../index.html" class="icon icon-home" aria-label="Home"></a></li>
|
|
||||||
<li class="breadcrumb-item"><a href="../index.html">Код модуля</a></li>
|
|
||||||
<li class="breadcrumb-item active">components.eventbar_component</li>
|
|
||||||
<li class="wy-breadcrumbs-aside">
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
<hr/>
|
|
||||||
</div>
|
|
||||||
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
|
|
||||||
<div itemprop="articleBody">
|
|
||||||
|
|
||||||
<h1>Исходный код components.eventbar_component</h1><div class="highlight"><pre>
|
|
||||||
<span></span><span class="sd">"""Модуль компонента панели событий. Содержит класс для работы с элементами панели."""</span>
|
|
||||||
|
|
||||||
<span class="kn">from</span><span class="w"> </span><span class="nn">playwright.sync_api</span><span class="w"> </span><span class="kn">import</span> <span class="n">Page</span>
|
|
||||||
<span class="kn">from</span><span class="w"> </span><span class="nn">tools.logger</span><span class="w"> </span><span class="kn">import</span> <span class="n">get_logger</span>
|
|
||||||
<span class="kn">from</span><span class="w"> </span><span class="nn">locators.event_panel_locators</span><span class="w"> </span><span class="kn">import</span> <span class="n">EventPanelLocators</span>
|
|
||||||
<span class="kn">from</span><span class="w"> </span><span class="nn">elements.tooltip_button_element</span><span class="w"> </span><span class="kn">import</span> <span class="n">TooltipButton</span>
|
|
||||||
<span class="kn">from</span><span class="w"> </span><span class="nn">elements.tab_button_element</span><span class="w"> </span><span class="kn">import</span> <span class="n">TabButton</span>
|
|
||||||
<span class="kn">from</span><span class="w"> </span><span class="nn">elements.button_element</span><span class="w"> </span><span class="kn">import</span> <span class="n">Button</span>
|
|
||||||
<span class="kn">from</span><span class="w"> </span><span class="nn">components_derived.container_system_log_events</span><span class="w"> </span><span class="kn">import</span> <span class="n">SystemLogEventsContainer</span>
|
|
||||||
<span class="kn">from</span><span class="w"> </span><span class="nn">components_derived.user_card</span><span class="w"> </span><span class="kn">import</span> <span class="n">UserCard</span>
|
|
||||||
<span class="kn">from</span><span class="w"> </span><span class="nn">components.base_component</span><span class="w"> </span><span class="kn">import</span> <span class="n">BaseComponent</span>
|
|
||||||
|
|
||||||
<span class="n">logger</span> <span class="o">=</span> <span class="n">get_logger</span><span class="p">(</span><span class="s2">"EVENT_PANEL"</span><span class="p">)</span>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="EventPanelComponent">
|
|
||||||
<a class="viewcode-back" href="../../components.html#components.eventbar_component.EventPanelComponent">[документация]</a>
|
|
||||||
<span class="k">class</span><span class="w"> </span><span class="nc">EventPanelComponent</span><span class="p">(</span><span class="n">BaseComponent</span><span class="p">):</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Компонент панели событий. Предоставляет методы для взаимодействия с ней."""</span>
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="EventPanelComponent.__init__">
|
|
||||||
<a class="viewcode-back" href="../../components.html#components.eventbar_component.EventPanelComponent.__init__">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">page</span><span class="p">:</span> <span class="n">Page</span><span class="p">):</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Инициализирует компонент панели событий.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Args:</span>
|
|
||||||
<span class="sd"> page: Экземпляр страницы Playwright.</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
|
|
||||||
<span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="fm">__init__</span><span class="p">(</span><span class="n">page</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">states_tab</span> <span class="o">=</span> <span class="n">TabButton</span><span class="p">(</span><span class="n">page</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">page</span><span class="o">.</span><span class="n">locator</span><span class="p">(</span><span class="n">EventPanelLocators</span><span class="o">.</span><span class="n">TAB_STATES</span><span class="p">),</span> <span class="s2">"states_tab"</span><span class="p">)</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">actions_tab</span> <span class="o">=</span> <span class="n">TabButton</span><span class="p">(</span><span class="n">page</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">page</span><span class="o">.</span><span class="n">locator</span><span class="p">(</span><span class="n">EventPanelLocators</span><span class="o">.</span><span class="n">TAB_ACTIONS</span><span class="p">),</span> <span class="s2">"actions_tab"</span><span class="p">)</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">events_tab</span> <span class="o">=</span> <span class="n">TabButton</span><span class="p">(</span><span class="n">page</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">page</span><span class="o">.</span><span class="n">locator</span><span class="p">(</span><span class="n">EventPanelLocators</span><span class="o">.</span><span class="n">TAB_EVENTS</span><span class="p">),</span> <span class="s2">"events_tab"</span><span class="p">)</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">maintenance_tab</span> <span class="o">=</span> <span class="n">TabButton</span><span class="p">(</span><span class="n">page</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">page</span><span class="o">.</span><span class="n">locator</span><span class="p">(</span><span class="n">EventPanelLocators</span><span class="o">.</span><span class="n">TAB_MAINTENANCE</span><span class="p">),</span> <span class="s2">"maintenance_tab"</span><span class="p">)</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">system_log_tab</span> <span class="o">=</span> <span class="n">TabButton</span><span class="p">(</span><span class="n">page</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">page</span><span class="o">.</span><span class="n">locator</span><span class="p">(</span><span class="n">EventPanelLocators</span><span class="o">.</span><span class="n">TAB_SYSTEM_LOG</span><span class="p">),</span> <span class="s2">"system_log_tab"</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">unknown_reason_button</span> <span class="o">=</span> <span class="n">TooltipButton</span><span class="p">(</span><span class="n">page</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">page</span><span class="o">.</span><span class="n">locator</span><span class="p">(</span><span class="n">EventPanelLocators</span><span class="o">.</span><span class="n">BUTTONS_EVENT</span><span class="p">)</span><span class="o">.</span><span class="n">nth</span><span class="p">(</span><span class="mi">0</span><span class="p">),</span> <span class="s2">"unknown_reason_button"</span><span class="p">)</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">warning_button</span> <span class="o">=</span> <span class="n">TooltipButton</span><span class="p">(</span><span class="n">page</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">page</span><span class="o">.</span><span class="n">locator</span><span class="p">(</span><span class="n">EventPanelLocators</span><span class="o">.</span><span class="n">BUTTONS_EVENT</span><span class="p">)</span><span class="o">.</span><span class="n">nth</span><span class="p">(</span><span class="mi">1</span><span class="p">),</span> <span class="s2">"warning_button"</span><span class="p">)</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">damage_button</span> <span class="o">=</span> <span class="n">TooltipButton</span><span class="p">(</span><span class="n">page</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">page</span><span class="o">.</span><span class="n">locator</span><span class="p">(</span><span class="n">EventPanelLocators</span><span class="o">.</span><span class="n">BUTTONS_EVENT</span><span class="p">)</span><span class="o">.</span><span class="n">nth</span><span class="p">(</span><span class="mi">2</span><span class="p">),</span> <span class="s2">"damage_button"</span><span class="p">)</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">failure_button</span> <span class="o">=</span> <span class="n">TooltipButton</span><span class="p">(</span><span class="n">page</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">page</span><span class="o">.</span><span class="n">locator</span><span class="p">(</span><span class="n">EventPanelLocators</span><span class="o">.</span><span class="n">BUTTONS_EVENT</span><span class="p">)</span><span class="o">.</span><span class="n">nth</span><span class="p">(</span><span class="mi">3</span><span class="p">),</span> <span class="s2">"failure_button"</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="n">buttons_service_locators</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">page</span><span class="o">.</span><span class="n">locator</span><span class="p">(</span><span class="n">EventPanelLocators</span><span class="o">.</span><span class="n">BUTTONS_SERVICE</span><span class="p">)</span><span class="o">.</span><span class="n">get_by_role</span><span class="p">(</span><span class="s2">"button"</span><span class="p">)</span><span class="o">.</span><span class="n">all</span><span class="p">()</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">search_button</span> <span class="o">=</span> <span class="n">Button</span><span class="p">(</span><span class="n">page</span><span class="p">,</span> <span class="n">buttons_service_locators</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="s2">"search_button"</span><span class="p">)</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">user_button</span> <span class="o">=</span> <span class="n">Button</span><span class="p">(</span><span class="n">page</span><span class="p">,</span> <span class="n">buttons_service_locators</span><span class="p">[</span><span class="mi">1</span><span class="p">],</span> <span class="s2">"user_button"</span><span class="p">)</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<span class="c1"># Действия:</span>
|
|
||||||
<div class="viewcode-block" id="EventPanelComponent.click_expand_less_button">
|
|
||||||
<a class="viewcode-back" href="../../components.html#components.eventbar_component.EventPanelComponent.click_expand_less_button">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">click_expand_less_button</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Выполняет нажатие кнопки галочка вверх."""</span>
|
|
||||||
|
|
||||||
<span class="n">button_locator</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">page</span><span class="o">.</span><span class="n">locator</span><span class="p">(</span><span class="n">EventPanelLocators</span><span class="o">.</span><span class="n">TAB_EXPAND_BUTTONS</span><span class="p">)</span><span class="o">.</span>\
|
|
||||||
<span class="n">get_by_role</span><span class="p">(</span><span class="s2">"button"</span><span class="p">)</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span><span class="n">has_text</span><span class="o">=</span><span class="s1">'expand_less'</span><span class="p">)</span>
|
|
||||||
<span class="n">button_locator</span><span class="o">.</span><span class="n">click</span><span class="p">()</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="EventPanelComponent.click_expand_more_button">
|
|
||||||
<a class="viewcode-back" href="../../components.html#components.eventbar_component.EventPanelComponent.click_expand_more_button">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">click_expand_more_button</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Выполняет нажатие кнопки галочка вниз."""</span>
|
|
||||||
|
|
||||||
<span class="n">button_locator</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">page</span><span class="o">.</span><span class="n">locator</span><span class="p">(</span><span class="n">EventPanelLocators</span><span class="o">.</span><span class="n">TAB_EXPAND_BUTTONS</span><span class="p">)</span><span class="o">.</span>\
|
|
||||||
<span class="n">get_by_role</span><span class="p">(</span><span class="s2">"button"</span><span class="p">)</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span><span class="n">has_text</span><span class="o">=</span><span class="s1">'expand_more'</span><span class="p">)</span>
|
|
||||||
<span class="n">button_locator</span><span class="o">.</span><span class="n">click</span><span class="p">()</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="EventPanelComponent.click_system_log_tab">
|
|
||||||
<a class="viewcode-back" href="../../components.html#components.eventbar_component.EventPanelComponent.click_system_log_tab">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">click_system_log_tab</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">SystemLogEventsContainer</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Выполняет нажатие tab-кнопки Системный журнал."""</span>
|
|
||||||
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">system_log_tab</span><span class="o">.</span><span class="n">check_visibility</span><span class="p">(</span><span class="s2">"System log tab button is missing on event panel"</span><span class="p">)</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">system_log_tab</span><span class="o">.</span><span class="n">click</span><span class="p">()</span>
|
|
||||||
|
|
||||||
<span class="n">system_log_events</span> <span class="o">=</span> <span class="n">SystemLogEventsContainer</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">page</span><span class="p">,</span> <span class="n">EventPanelLocators</span><span class="o">.</span><span class="n">CONTAINER_SYSTEM_LOG_EVENTS</span><span class="p">)</span>
|
|
||||||
<span class="k">return</span> <span class="n">system_log_events</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="EventPanelComponent.click_user_button">
|
|
||||||
<a class="viewcode-back" href="../../components.html#components.eventbar_component.EventPanelComponent.click_user_button">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">click_user_button</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">UserCard</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Выполняет нажатие кнопки пользователя."""</span>
|
|
||||||
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">should_be_user_button</span><span class="p">()</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">user_button</span><span class="o">.</span><span class="n">click</span><span class="p">()</span>
|
|
||||||
|
|
||||||
<span class="n">user_card</span> <span class="o">=</span> <span class="n">UserCard</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">page</span><span class="p">)</span>
|
|
||||||
<span class="k">return</span> <span class="n">user_card</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="EventPanelComponent.do_logout">
|
|
||||||
<a class="viewcode-back" href="../../components.html#components.eventbar_component.EventPanelComponent.do_logout">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">do_logout</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Выполняет выход из системы."""</span>
|
|
||||||
|
|
||||||
<span class="n">user_card</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">click_user_button</span><span class="p">()</span>
|
|
||||||
<span class="n">user_card</span><span class="o">.</span><span class="n">click_logout_button</span><span class="p">()</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="EventPanelComponent.get_event_tooltip_texts">
|
|
||||||
<a class="viewcode-back" href="../../components.html#components.eventbar_component.EventPanelComponent.get_event_tooltip_texts">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">get_event_tooltip_texts</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="p">[]:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Возвращает список текстов всплывающих подсказок кнопок счетчиков событий."""</span>
|
|
||||||
|
|
||||||
<span class="n">tooltip_texts</span> <span class="o">=</span> <span class="p">[]</span>
|
|
||||||
|
|
||||||
<span class="n">tooltip_texts</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">unknown_reason_button</span><span class="o">.</span><span class="n">get_tooltip_text</span><span class="p">())</span>
|
|
||||||
<span class="n">tooltip_texts</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">warning_button</span><span class="o">.</span><span class="n">get_tooltip_text</span><span class="p">())</span>
|
|
||||||
<span class="n">tooltip_texts</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">damage_button</span><span class="o">.</span><span class="n">get_tooltip_text</span><span class="p">())</span>
|
|
||||||
<span class="n">tooltip_texts</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">failure_button</span><span class="o">.</span><span class="n">get_tooltip_text</span><span class="p">())</span>
|
|
||||||
|
|
||||||
<span class="k">return</span> <span class="n">tooltip_texts</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="EventPanelComponent.get_event_button_values">
|
|
||||||
<a class="viewcode-back" href="../../components.html#components.eventbar_component.EventPanelComponent.get_event_button_values">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">get_event_button_values</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="p">{}:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Возвращает набор значений кнопок счетчиков событий."""</span>
|
|
||||||
|
|
||||||
<span class="n">event_buttons_texts</span> <span class="o">=</span> <span class="p">{}</span>
|
|
||||||
|
|
||||||
<span class="n">event_buttons_texts</span><span class="p">[</span><span class="s1">'Неизвестно'</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">unknown_reason_button</span><span class="o">.</span><span class="n">get_text</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span>
|
|
||||||
<span class="n">event_buttons_texts</span><span class="p">[</span><span class="s1">'Предупреждение'</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">warning_button</span><span class="o">.</span><span class="n">get_text</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span>
|
|
||||||
<span class="n">event_buttons_texts</span><span class="p">[</span><span class="s1">'Повреждение'</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">damage_button</span><span class="o">.</span><span class="n">get_text</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span>
|
|
||||||
<span class="n">event_buttons_texts</span><span class="p">[</span><span class="s1">'Авария'</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">failure_button</span><span class="o">.</span><span class="n">get_text</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="k">return</span> <span class="n">event_buttons_texts</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="EventPanelComponent.get_panel_position">
|
|
||||||
<a class="viewcode-back" href="../../components.html#components.eventbar_component.EventPanelComponent.get_panel_position">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">get_panel_position</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Возвращает текущее положение панели событий относительно страницы: "top", "center","bottom"."""</span>
|
|
||||||
|
|
||||||
<span class="n">style_attr</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">page</span><span class="o">.</span><span class="n">locator</span><span class="p">(</span><span class="n">EventPanelLocators</span><span class="o">.</span><span class="n">AREA_EVENTS</span><span class="p">)</span><span class="o">.</span><span class="n">get_attribute</span><span class="p">(</span><span class="s2">"style"</span><span class="p">)</span>
|
|
||||||
<span class="n">position</span> <span class="o">=</span> <span class="s2">"bottom"</span>
|
|
||||||
|
|
||||||
<span class="k">if</span> <span class="n">style_attr</span><span class="o">.</span><span class="n">find</span><span class="p">(</span><span class="s2">"display: none;"</span><span class="p">)</span> <span class="o">==</span> <span class="o">-</span><span class="mi">1</span><span class="p">:</span>
|
|
||||||
<span class="n">height</span> <span class="o">=</span> <span class="n">style_attr</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="s2">"height: "</span><span class="p">,</span><span class="s2">""</span><span class="p">)</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="s2">";"</span><span class="p">,</span> <span class="s2">""</span><span class="p">)</span>
|
|
||||||
<span class="k">if</span> <span class="n">height</span> <span class="o">==</span> <span class="s2">"100%"</span><span class="p">:</span>
|
|
||||||
<span class="n">position</span> <span class="o">=</span> <span class="s2">"top"</span>
|
|
||||||
<span class="k">else</span><span class="p">:</span>
|
|
||||||
<span class="n">position</span> <span class="o">=</span> <span class="s2">"center"</span>
|
|
||||||
|
|
||||||
<span class="k">return</span> <span class="n">position</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<span class="c1"># Проверки:</span>
|
|
||||||
<div class="viewcode-block" id="EventPanelComponent.check_expand_less_button">
|
|
||||||
<a class="viewcode-back" href="../../components.html#components.eventbar_component.EventPanelComponent.check_expand_less_button">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">check_expand_less_button</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">bool</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Проверяет наличие кнопки галочка вверх."""</span>
|
|
||||||
|
|
||||||
<span class="k">try</span><span class="p">:</span>
|
|
||||||
<span class="n">_</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">page</span><span class="o">.</span><span class="n">locator</span><span class="p">(</span><span class="n">EventPanelLocators</span><span class="o">.</span><span class="n">TAB_EXPAND_BUTTONS</span><span class="p">)</span><span class="o">.</span>\
|
|
||||||
<span class="n">get_by_role</span><span class="p">(</span><span class="s2">"button"</span><span class="p">)</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span><span class="n">has_text</span><span class="o">=</span><span class="s1">'expand_less'</span><span class="p">)</span>
|
|
||||||
<span class="k">except</span> <span class="ne">TimeoutError</span><span class="p">:</span>
|
|
||||||
<span class="k">return</span> <span class="kc">False</span>
|
|
||||||
<span class="k">return</span> <span class="kc">True</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="EventPanelComponent.check_expand_more_button">
|
|
||||||
<a class="viewcode-back" href="../../components.html#components.eventbar_component.EventPanelComponent.check_expand_more_button">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">check_expand_more_button</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">bool</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Проверяет наличие кнопки галочка вниз"""</span>
|
|
||||||
|
|
||||||
<span class="k">try</span><span class="p">:</span>
|
|
||||||
<span class="n">_</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">page</span><span class="o">.</span><span class="n">locator</span><span class="p">(</span><span class="n">EventPanelLocators</span><span class="o">.</span><span class="n">TAB_EXPAND_BUTTONS</span><span class="p">)</span><span class="o">.</span>\
|
|
||||||
<span class="n">get_by_role</span><span class="p">(</span><span class="s2">"button"</span><span class="p">)</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span><span class="n">has_text</span><span class="o">=</span><span class="s1">'expand_more'</span><span class="p">)</span>
|
|
||||||
<span class="k">except</span> <span class="ne">TimeoutError</span><span class="p">:</span>
|
|
||||||
<span class="k">return</span> <span class="kc">False</span>
|
|
||||||
<span class="k">return</span> <span class="kc">True</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="EventPanelComponent.should_be_user_button">
|
|
||||||
<a class="viewcode-back" href="../../components.html#components.eventbar_component.EventPanelComponent.should_be_user_button">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">should_be_user_button</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Проверяет наличие кнопки пользователя."""</span>
|
|
||||||
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">user_button</span><span class="o">.</span><span class="n">check_visibility</span><span class="p">(</span><span class="s2">"User button is missing on event panel"</span><span class="p">)</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="EventPanelComponent.should_be_search_button">
|
|
||||||
<a class="viewcode-back" href="../../components.html#components.eventbar_component.EventPanelComponent.should_be_search_button">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">should_be_search_button</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Проверяет наличие кнопки поиска."""</span>
|
|
||||||
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">search_button</span><span class="o">.</span><span class="n">check_visibility</span><span class="p">(</span><span class="s2">"Search button is missing on event panel"</span><span class="p">)</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="EventPanelComponent.should_be_tab_buttons">
|
|
||||||
<a class="viewcode-back" href="../../components.html#components.eventbar_component.EventPanelComponent.should_be_tab_buttons">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">should_be_tab_buttons</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Проверяет наличие блока tab-кнопок Состояния, Действия, События, Обслуживание, Системный журнал."""</span>
|
|
||||||
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">states_tab</span><span class="o">.</span><span class="n">check_have_text</span><span class="p">(</span><span class="s1">'Состояния'</span><span class="p">,</span> <span class="s2">"Tab button with text Состояния is missing on event panel"</span><span class="p">)</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">actions_tab</span><span class="o">.</span><span class="n">check_have_text</span><span class="p">(</span><span class="s1">'Действия'</span><span class="p">,</span><span class="s2">"Tab button with text Действия is missing on event panel"</span><span class="p">)</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">events_tab</span><span class="o">.</span><span class="n">check_have_text</span><span class="p">(</span><span class="s1">'События'</span><span class="p">,</span> <span class="s2">"Tab button with text События is missing on event panel"</span><span class="p">)</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">maintenance_tab</span><span class="o">.</span><span class="n">check_have_text</span><span class="p">(</span><span class="s1">'Обслуживание'</span><span class="p">,</span> <span class="s2">"Tab button with text Обслуживание is missing on event panel"</span><span class="p">)</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">system_log_tab</span><span class="o">.</span><span class="n">check_have_text</span><span class="p">(</span><span class="s1">'Системный журнал'</span><span class="p">,</span> <span class="s2">"Tab button with text Системный журнал is missing on event panel"</span><span class="p">)</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="EventPanelComponent.should_be_event_buttons">
|
|
||||||
<a class="viewcode-back" href="../../components.html#components.eventbar_component.EventPanelComponent.should_be_event_buttons">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">should_be_event_buttons</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Проверяет наличие блока кнопок-счетчиков событий."""</span>
|
|
||||||
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">unknown_reason_button</span><span class="o">.</span><span class="n">check_visibility</span><span class="p">(</span><span class="s2">"Unknown reason event button is missing on event panel"</span><span class="p">)</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">warning_button</span><span class="o">.</span><span class="n">check_visibility</span><span class="p">(</span><span class="s2">"Warning event button is missing on event panel"</span><span class="p">)</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">damage_button</span><span class="o">.</span><span class="n">check_visibility</span><span class="p">(</span><span class="s2">"Damage event button is missing on event panel"</span><span class="p">)</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">failure_button</span><span class="o">.</span><span class="n">check_visibility</span><span class="p">(</span><span class="s2">"Failure event button is missing on event panel"</span><span class="p">)</span></div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</pre></div>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<footer>
|
|
||||||
|
|
||||||
<hr/>
|
|
||||||
|
|
||||||
<div role="contentinfo">
|
|
||||||
<p>© Авторские права 2025, NPO KIS. </p>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
Собрано при помощи <a href="https://www.sphinx-doc.org/">Sphinx</a> с использованием
|
|
||||||
<a href="https://github.com/readthedocs/sphinx_rtd_theme">темы,</a>
|
|
||||||
предоставленной <a href="https://readthedocs.org">Read the Docs</a>.
|
|
||||||
|
|
||||||
|
|
||||||
</footer>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</section>
|
|
||||||
</div>
|
|
||||||
<script>
|
|
||||||
jQuery(function () {
|
|
||||||
SphinxRtdTheme.Navigation.enable(true);
|
|
||||||
});
|
|
||||||
</script>
|
|
||||||
|
|
||||||
</body>
|
|
||||||
</html>
|
|
||||||
|
|
@ -1,591 +0,0 @@
|
||||||
|
|
||||||
|
|
||||||
<!DOCTYPE html>
|
|
||||||
<html class="writer-html5" lang="ru" data-content_root="../../">
|
|
||||||
<head>
|
|
||||||
<meta charset="utf-8" />
|
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
||||||
<title>components.events_container_component — документация e-nms-qa-automation 0.1.0</title>
|
|
||||||
<link rel="stylesheet" type="text/css" href="../../_static/pygments.css?v=b86133f3" />
|
|
||||||
<link rel="stylesheet" type="text/css" href="../../_static/css/theme.css?v=e59714d7" />
|
|
||||||
|
|
||||||
|
|
||||||
<script src="../../_static/jquery.js?v=5d32c60e"></script>
|
|
||||||
<script src="../../_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script>
|
|
||||||
<script src="../../_static/documentation_options.js?v=6ff560e8"></script>
|
|
||||||
<script src="../../_static/doctools.js?v=9bcbadda"></script>
|
|
||||||
<script src="../../_static/sphinx_highlight.js?v=dc90522c"></script>
|
|
||||||
<script src="../../_static/translations.js?v=cd1d70c9"></script>
|
|
||||||
<script src="../../_static/js/theme.js"></script>
|
|
||||||
<link rel="index" title="Алфавитный указатель" href="../../genindex.html" />
|
|
||||||
<link rel="search" title="Поиск" href="../../search.html" />
|
|
||||||
</head>
|
|
||||||
|
|
||||||
<body class="wy-body-for-nav">
|
|
||||||
<div class="wy-grid-for-nav">
|
|
||||||
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
|
|
||||||
<div class="wy-side-scroll">
|
|
||||||
<div class="wy-side-nav-search" >
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<a href="../../index.html" class="icon icon-home">
|
|
||||||
e-nms-qa-automation
|
|
||||||
</a>
|
|
||||||
<div role="search">
|
|
||||||
<form id="rtd-search-form" class="wy-form" action="../../search.html" method="get">
|
|
||||||
<input type="text" name="q" placeholder="Поиск в документации" aria-label="Поиск в документации" />
|
|
||||||
<input type="hidden" name="check_keywords" value="yes" />
|
|
||||||
<input type="hidden" name="area" value="default" />
|
|
||||||
</form>
|
|
||||||
</div>
|
|
||||||
</div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Меню навигации">
|
|
||||||
<!-- Local TOC -->
|
|
||||||
<div class="local-toc"></div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</nav>
|
|
||||||
|
|
||||||
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Меню навигации для мобильных устройств" >
|
|
||||||
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
|
|
||||||
<a href="../../index.html">e-nms-qa-automation</a>
|
|
||||||
</nav>
|
|
||||||
|
|
||||||
<div class="wy-nav-content">
|
|
||||||
<div class="rst-content">
|
|
||||||
<div role="navigation" aria-label="Навигация по страницам">
|
|
||||||
<ul class="wy-breadcrumbs">
|
|
||||||
<li><a href="../../index.html" class="icon icon-home" aria-label="Home"></a></li>
|
|
||||||
<li class="breadcrumb-item"><a href="../index.html">Код модуля</a></li>
|
|
||||||
<li class="breadcrumb-item active">components.events_container_component</li>
|
|
||||||
<li class="wy-breadcrumbs-aside">
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
<hr/>
|
|
||||||
</div>
|
|
||||||
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
|
|
||||||
<div itemprop="articleBody">
|
|
||||||
|
|
||||||
<h1>Исходный код components.events_container_component</h1><div class="highlight"><pre>
|
|
||||||
<span></span><span class="sd">"""Модуль компонента контейнера с перечнем событий. Содержит класс для работы с контейнерами,</span>
|
|
||||||
<span class="sd">их элементами и проверками."""</span>
|
|
||||||
|
|
||||||
<span class="kn">from</span><span class="w"> </span><span class="nn">playwright.sync_api</span><span class="w"> </span><span class="kn">import</span> <span class="n">Page</span><span class="p">,</span> <span class="n">Locator</span>
|
|
||||||
<span class="kn">from</span><span class="w"> </span><span class="nn">tools.logger</span><span class="w"> </span><span class="kn">import</span> <span class="n">get_logger</span>
|
|
||||||
<span class="kn">from</span><span class="w"> </span><span class="nn">locators.toolbar_locators</span><span class="w"> </span><span class="kn">import</span> <span class="n">ToolbarLocators</span>
|
|
||||||
<span class="kn">from</span><span class="w"> </span><span class="nn">elements.tooltip_button_element</span><span class="w"> </span><span class="kn">import</span> <span class="n">TooltipButton</span>
|
|
||||||
<span class="kn">from</span><span class="w"> </span><span class="nn">elements.tab_button_element</span><span class="w"> </span><span class="kn">import</span> <span class="n">TabButton</span>
|
|
||||||
<span class="kn">from</span><span class="w"> </span><span class="nn">elements.button_element</span><span class="w"> </span><span class="kn">import</span> <span class="n">Button</span>
|
|
||||||
<span class="kn">from</span><span class="w"> </span><span class="nn">components_derived.sidebar_filter_component</span><span class="w"> </span><span class="kn">import</span> <span class="n">SidebarFilterComponent</span>
|
|
||||||
<span class="kn">from</span><span class="w"> </span><span class="nn">components.toolbar_component</span><span class="w"> </span><span class="kn">import</span> <span class="n">ToolbarComponent</span>
|
|
||||||
<span class="kn">from</span><span class="w"> </span><span class="nn">components.table_component</span><span class="w"> </span><span class="kn">import</span> <span class="n">TableComponent</span>
|
|
||||||
<span class="kn">from</span><span class="w"> </span><span class="nn">components.base_component</span><span class="w"> </span><span class="kn">import</span> <span class="n">BaseComponent</span>
|
|
||||||
|
|
||||||
<span class="n">logger</span> <span class="o">=</span> <span class="n">get_logger</span><span class="p">(</span><span class="s2">"EVENTS_CONTANER"</span><span class="p">)</span>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="EventsContainerComponent">
|
|
||||||
<a class="viewcode-back" href="../../components.html#components.events_container_component.EventsContainerComponent">[документация]</a>
|
|
||||||
<span class="k">class</span><span class="w"> </span><span class="nc">EventsContainerComponent</span><span class="p">(</span><span class="n">BaseComponent</span><span class="p">):</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Компонент контейнера с перечнем событий. Предоставляет методы для взаимодействия с контейнером,</span>
|
|
||||||
<span class="sd"> его содержимым и проверок."""</span>
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="EventsContainerComponent.__init__">
|
|
||||||
<a class="viewcode-back" href="../../components.html#components.events_container_component.EventsContainerComponent.__init__">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">page</span><span class="p">:</span> <span class="n">Page</span><span class="p">,</span> <span class="n">locator</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="n">Locator</span><span class="p">):</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Инициализирует базовый контейнер.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Args:</span>
|
|
||||||
<span class="sd"> page: Экземпляр страницы Playwright</span>
|
|
||||||
<span class="sd"> locator: Локатор контейнера (строка или объект Locator)</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
<span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="fm">__init__</span><span class="p">(</span><span class="n">page</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">container_locator</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_locator</span><span class="p">(</span><span class="n">locator</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="c1"># тулбар</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">toolbar</span> <span class="o">=</span> <span class="n">ToolbarComponent</span><span class="p">(</span><span class="n">page</span><span class="p">,</span> <span class="s2">""</span><span class="p">)</span>
|
|
||||||
<span class="n">filter_button_locator</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">container_locator</span><span class="o">.</span><span class="n">locator</span><span class="p">(</span><span class="n">ToolbarLocators</span><span class="o">.</span><span class="n">TITLE</span><span class="p">)</span><span class="o">.</span>\
|
|
||||||
<span class="n">get_by_role</span><span class="p">(</span><span class="s2">"button"</span><span class="p">)</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">toolbar</span><span class="o">.</span><span class="n">add_button</span><span class="p">(</span><span class="n">filter_button_locator</span><span class="p">,</span> <span class="s2">"filter_button"</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="n">export_buttons</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">container_locator</span><span class="o">.</span><span class="n">locator</span><span class="p">(</span><span class="n">ToolbarLocators</span><span class="o">.</span><span class="n">ITEMS</span><span class="p">)</span><span class="o">.</span>\
|
|
||||||
<span class="n">get_by_role</span><span class="p">(</span><span class="s2">"button"</span><span class="p">)</span><span class="o">.</span><span class="n">all</span><span class="p">()</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">toolbar</span><span class="o">.</span><span class="n">add_tooltip_button</span><span class="p">(</span><span class="n">export_buttons</span><span class="p">[</span><span class="mi">1</span><span class="p">],</span> <span class="s2">"export_to_csv_button"</span><span class="p">)</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">toolbar</span><span class="o">.</span><span class="n">add_tooltip_button</span><span class="p">(</span><span class="n">export_buttons</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="s2">"export_to_pdf_button"</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="c1"># Таблица событий</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">events_table</span> <span class="o">=</span> <span class="n">TableComponent</span><span class="p">(</span><span class="n">page</span><span class="p">)</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">table_locator</span> <span class="o">=</span> <span class="s2">"//div[@class='scrolltable']/div/table"</span>
|
|
||||||
|
|
||||||
<span class="c1"># Кнопки пагинации в нижней части контейнера</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">chevron_left</span> <span class="o">=</span> <span class="n">Button</span><span class="p">(</span><span class="n">page</span><span class="p">,</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">container_locator</span><span class="o">.</span><span class="n">get_by_role</span><span class="p">(</span><span class="s2">"button"</span><span class="p">)</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span><span class="n">has_text</span><span class="o">=</span><span class="s1">'chevron_left'</span><span class="p">),</span>
|
|
||||||
<span class="s2">"chevron_left"</span><span class="p">)</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">chevron_right</span> <span class="o">=</span> <span class="n">Button</span><span class="p">(</span><span class="n">page</span><span class="p">,</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">container_locator</span><span class="o">.</span><span class="n">get_by_role</span><span class="p">(</span><span class="s2">"button"</span><span class="p">)</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span><span class="n">has_text</span><span class="o">=</span><span class="s1">'chevron_right'</span><span class="p">),</span>
|
|
||||||
<span class="s2">"chevron_right"</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">first_page</span> <span class="o">=</span> <span class="n">Button</span><span class="p">(</span><span class="n">page</span><span class="p">,</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">container_locator</span><span class="o">.</span><span class="n">get_by_role</span><span class="p">(</span><span class="s2">"button"</span><span class="p">)</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span><span class="n">has_text</span><span class="o">=</span><span class="s1">'first_page'</span><span class="p">),</span>
|
|
||||||
<span class="s2">"first_page"</span><span class="p">)</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">last_page</span> <span class="o">=</span> <span class="n">Button</span><span class="p">(</span><span class="n">page</span><span class="p">,</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">container_locator</span><span class="o">.</span><span class="n">get_by_role</span><span class="p">(</span><span class="s2">"button"</span><span class="p">)</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span><span class="n">has_text</span><span class="o">=</span><span class="s1">'last_page'</span><span class="p">),</span>
|
|
||||||
<span class="s2">"last_page"</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="n">loc</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">container_locator</span><span class="o">.</span><span class="n">get_by_role</span><span class="p">(</span><span class="s2">"button"</span><span class="p">)</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span><span class="n">has_text</span><span class="o">=</span><span class="s1">'chevron_left'</span><span class="p">)</span><span class="o">.</span>\
|
|
||||||
<span class="n">locator</span><span class="p">(</span><span class="s2">"xpath=.."</span><span class="p">)</span><span class="o">.</span><span class="n">get_by_role</span><span class="p">(</span><span class="s2">"button"</span><span class="p">)</span><span class="o">.</span><span class="n">nth</span><span class="p">(</span><span class="mi">2</span><span class="p">)</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">data_set_number</span> <span class="o">=</span> <span class="n">Button</span><span class="p">(</span><span class="n">page</span><span class="p">,</span> <span class="n">loc</span><span class="p">,</span> <span class="s2">"data_set_number"</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">sidebar_filter_locator</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">container_locator</span><span class="o">.</span><span class="n">locator</span><span class="p">(</span><span class="s2">"//aside//div[@class='scrollarea__container']"</span><span class="p">)</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">sidebar_filter</span> <span class="o">=</span> <span class="n">SidebarFilterComponent</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">page</span><span class="p">,</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">sidebar_filter_locator</span><span class="p">)</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<span class="c1"># Действия:</span>
|
|
||||||
<div class="viewcode-block" id="EventsContainerComponent.add_tab_to_toolbar">
|
|
||||||
<a class="viewcode-back" href="../../components.html#components.events_container_component.EventsContainerComponent.add_tab_to_toolbar">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">add_tab_to_toolbar</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">locator</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="n">Locator</span><span class="p">,</span> <span class="n">name</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Добавление кнопки типа v-tabs к тулбару"""</span>
|
|
||||||
|
|
||||||
<span class="n">tabs_locator</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_locator</span><span class="p">(</span><span class="n">locator</span><span class="p">)</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">toolbar</span><span class="o">.</span><span class="n">add_tab_button</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">container_locator</span><span class="o">.</span><span class="n">locator</span><span class="p">(</span><span class="n">tabs_locator</span><span class="p">),</span> <span class="n">name</span><span class="p">)</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="EventsContainerComponent.click_chevron_left">
|
|
||||||
<a class="viewcode-back" href="../../components.html#components.events_container_component.EventsContainerComponent.click_chevron_left">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">click_chevron_left</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Нажатие кнопки получения предыдущего набора данных"""</span>
|
|
||||||
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">chevron_left</span><span class="o">.</span><span class="n">click</span><span class="p">()</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="EventsContainerComponent.click_chevron_right">
|
|
||||||
<a class="viewcode-back" href="../../components.html#components.events_container_component.EventsContainerComponent.click_chevron_right">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">click_chevron_right</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Нажатие кнопки получения следующего набора данных"""</span>
|
|
||||||
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">chevron_right</span><span class="o">.</span><span class="n">click</span><span class="p">()</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="EventsContainerComponent.click_first_page">
|
|
||||||
<a class="viewcode-back" href="../../components.html#components.events_container_component.EventsContainerComponent.click_first_page">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">click_first_page</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Нажатие кнопки перехода на первую сраницу"""</span>
|
|
||||||
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">first_page</span><span class="o">.</span><span class="n">click</span><span class="p">()</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="EventsContainerComponent.click_last_page">
|
|
||||||
<a class="viewcode-back" href="../../components.html#components.events_container_component.EventsContainerComponent.click_last_page">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">click_last_page</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Нажатие кнопки перехода на последнюю страницу"""</span>
|
|
||||||
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">last_page</span><span class="o">.</span><span class="n">click</span><span class="p">()</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="EventsContainerComponent.click_filter_button">
|
|
||||||
<a class="viewcode-back" href="../../components.html#components.events_container_component.EventsContainerComponent.click_filter_button">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">click_filter_button</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">SidebarFilterComponent</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Нажатие кнопки перехода на первую сраницу"""</span>
|
|
||||||
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">toolbar</span><span class="o">.</span><span class="n">click_button</span><span class="p">(</span><span class="s2">"filter_button"</span><span class="p">)</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">sidebar_filter</span><span class="o">.</span><span class="n">check_visibility</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">sidebar_filter_locator</span><span class="p">,</span>
|
|
||||||
<span class="s2">"Filter sidebar is missing"</span><span class="p">)</span>
|
|
||||||
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">sidebar_filter</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="EventsContainerComponent.click_event_table_header_arrow">
|
|
||||||
<a class="viewcode-back" href="../../components.html#components.events_container_component.EventsContainerComponent.click_event_table_header_arrow">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">click_event_table_header_arrow</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">index</span><span class="p">:</span> <span class="nb">int</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">""" Нажатие кнопки-стрелочки вверх/вниз в ячейке заголовка таблицы</span>
|
|
||||||
|
|
||||||
<span class="sd"> Args:</span>
|
|
||||||
<span class="sd"> index: Индекс ячейки в заголовке.</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
<span class="n">loc</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">container_locator</span><span class="o">.</span><span class="n">locator</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">table_locator</span><span class="p">)</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">events_table</span><span class="o">.</span><span class="n">click_arrow_button</span><span class="p">(</span><span class="n">loc</span><span class="p">,</span> <span class="n">index</span><span class="p">)</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="EventsContainerComponent.get_current_data_set_number">
|
|
||||||
<a class="viewcode-back" href="../../components.html#components.events_container_component.EventsContainerComponent.get_current_data_set_number">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">get_current_data_set_number</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">int</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Получение номера текущего набора данных"""</span>
|
|
||||||
|
|
||||||
<span class="k">try</span><span class="p">:</span>
|
|
||||||
<span class="n">data_set_number</span> <span class="o">=</span> <span class="nb">int</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">data_set_number</span><span class="o">.</span><span class="n">get_text</span><span class="p">(</span><span class="mi">0</span><span class="p">))</span>
|
|
||||||
<span class="k">except</span> <span class="ne">ValueError</span> <span class="k">as</span> <span class="n">e</span><span class="p">:</span>
|
|
||||||
<span class="k">assert</span> <span class="kc">False</span><span class="p">,</span> <span class="sa">f</span><span class="s2">"Value Error: </span><span class="si">{</span><span class="n">e</span><span class="si">}</span><span class="s2">"</span>
|
|
||||||
|
|
||||||
<span class="k">return</span> <span class="n">data_set_number</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="EventsContainerComponent.get_arrow_button_state">
|
|
||||||
<a class="viewcode-back" href="../../components.html#components.events_container_component.EventsContainerComponent.get_arrow_button_state">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">get_arrow_button_state</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">index</span><span class="p">:</span> <span class="nb">int</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">""" Получение состояния кнопки-стрелочки вверх/вниз в ячейке заголовка таблицы</span>
|
|
||||||
|
|
||||||
<span class="sd"> Args:</span>
|
|
||||||
<span class="sd"> index: Индекс ячейки в заголовке.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Returns:</span>
|
|
||||||
<span class="sd"> up, если это стрелочка вверх. down, если это стрелочка вниз.</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
<span class="n">loc</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">container_locator</span><span class="o">.</span><span class="n">locator</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">table_locator</span><span class="p">)</span>
|
|
||||||
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">events_table</span><span class="o">.</span><span class="n">get_arrow_button_state</span><span class="p">(</span><span class="n">loc</span><span class="p">,</span> <span class="n">index</span><span class="p">)</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="EventsContainerComponent.get_events_table_content">
|
|
||||||
<a class="viewcode-back" href="../../components.html#components.events_container_component.EventsContainerComponent.get_events_table_content">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">get_events_table_content</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">list</span><span class="p">[</span><span class="nb">list</span><span class="p">[</span><span class="nb">str</span><span class="p">]]:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Возвращает содержимое таблицы, включая заголовки.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Returns:</span>
|
|
||||||
<span class="sd"> Двумерный список с содержимым таблицы.</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
|
|
||||||
<span class="n">loc</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">container_locator</span><span class="o">.</span><span class="n">locator</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">table_locator</span><span class="p">)</span>
|
|
||||||
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">events_table</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="n">loc</span><span class="p">)</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="EventsContainerComponent.get_events_table_rows_count">
|
|
||||||
<a class="viewcode-back" href="../../components.html#components.events_container_component.EventsContainerComponent.get_events_table_rows_count">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">get_events_table_rows_count</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">int</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Возвращает количество строк в таблице (без заголовка).</span>
|
|
||||||
|
|
||||||
<span class="sd"> Returns:</span>
|
|
||||||
<span class="sd"> int: Количество строк с данными.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Raises:</span>
|
|
||||||
<span class="sd"> AssertionError: Если таблица пуста.</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
|
|
||||||
<span class="n">loc</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">container_locator</span><span class="o">.</span><span class="n">locator</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">table_locator</span><span class="p">)</span>
|
|
||||||
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">events_table</span><span class="o">.</span><span class="n">get_rows_count</span><span class="p">(</span><span class="n">loc</span><span class="p">)</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="EventsContainerComponent.get_sidebar_filter">
|
|
||||||
<a class="viewcode-back" href="../../components.html#components.events_container_component.EventsContainerComponent.get_sidebar_filter">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">get_sidebar_filter</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">SidebarFilterComponent</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Возвращает боковую панель фильтрации."""</span>
|
|
||||||
|
|
||||||
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">sidebar_filter</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="EventsContainerComponent.get_toolbar_filter_button">
|
|
||||||
<a class="viewcode-back" href="../../components.html#components.events_container_component.EventsContainerComponent.get_toolbar_filter_button">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">get_toolbar_filter_button</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">Button</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Возвращает кнопку фильтрации."""</span>
|
|
||||||
|
|
||||||
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">toolbar</span><span class="o">.</span><span class="n">get_button_by_name</span><span class="p">(</span><span class="s2">"filter_button"</span><span class="p">)</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="EventsContainerComponent.get_toolbar_export_to_csv_button">
|
|
||||||
<a class="viewcode-back" href="../../components.html#components.events_container_component.EventsContainerComponent.get_toolbar_export_to_csv_button">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">get_toolbar_export_to_csv_button</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">TooltipButton</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Возвращает кнопку экспорта в csv."""</span>
|
|
||||||
|
|
||||||
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">toolbar</span><span class="o">.</span><span class="n">get_button_by_name</span><span class="p">(</span><span class="s2">"export_to_csv_button"</span><span class="p">)</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="EventsContainerComponent.get_toolbar_export_to_pdf_button">
|
|
||||||
<a class="viewcode-back" href="../../components.html#components.events_container_component.EventsContainerComponent.get_toolbar_export_to_pdf_button">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">get_toolbar_export_to_pdf_button</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">TooltipButton</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Возвращает кнопку экспорта в pdf."""</span>
|
|
||||||
|
|
||||||
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">toolbar</span><span class="o">.</span><span class="n">get_button_by_name</span><span class="p">(</span><span class="s2">"export_to_pdf_button"</span><span class="p">)</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="EventsContainerComponent.get_toolbar_tab_button">
|
|
||||||
<a class="viewcode-back" href="../../components.html#components.events_container_component.EventsContainerComponent.get_toolbar_tab_button">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">get_toolbar_tab_button</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="n">TabButton</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Возвращает кнопку типа v-tabs по имени."""</span>
|
|
||||||
|
|
||||||
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">toolbar</span><span class="o">.</span><span class="n">get_button_by_name</span><span class="p">(</span><span class="n">name</span><span class="p">)</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="EventsContainerComponent.scroll_events_table_up">
|
|
||||||
<a class="viewcode-back" href="../../components.html#components.events_container_component.EventsContainerComponent.scroll_events_table_up">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">scroll_events_table_up</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Прокручивает таблицу событий вверх."""</span>
|
|
||||||
|
|
||||||
<span class="n">loc</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">container_locator</span><span class="o">.</span><span class="n">locator</span><span class="p">(</span><span class="s2">"//div[@class='scrolltable']//table/tbody"</span><span class="p">)</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">events_table</span><span class="o">.</span><span class="n">scroll_up</span><span class="p">(</span><span class="n">loc</span><span class="p">)</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="EventsContainerComponent.scroll_events_table_down">
|
|
||||||
<a class="viewcode-back" href="../../components.html#components.events_container_component.EventsContainerComponent.scroll_events_table_down">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">scroll_events_table_down</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Прокручивает таблицу событий вниз."""</span>
|
|
||||||
|
|
||||||
<span class="n">loc</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">container_locator</span><span class="o">.</span><span class="n">locator</span><span class="p">(</span><span class="s2">"//div[@class='scrolltable']//table/tbody"</span><span class="p">)</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">events_table</span><span class="o">.</span><span class="n">scroll_down</span><span class="p">(</span><span class="n">loc</span><span class="p">)</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<span class="c1"># Проверки:</span>
|
|
||||||
<div class="viewcode-block" id="EventsContainerComponent.check_events_table_headers">
|
|
||||||
<a class="viewcode-back" href="../../components.html#components.events_container_component.EventsContainerComponent.check_events_table_headers">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">check_events_table_headers</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">actual_headers</span><span class="p">,</span> <span class="n">expected_headers</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">""" Проверка соответствия заголовка таблицы ожидаемому"""</span>
|
|
||||||
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">events_table</span><span class="o">.</span><span class="n">check_table_headers</span><span class="p">(</span><span class="n">actual_headers</span><span class="p">,</span> <span class="n">expected_headers</span><span class="p">)</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="EventsContainerComponent.check_events_table_column_descending_order">
|
|
||||||
<a class="viewcode-back" href="../../components.html#components.events_container_component.EventsContainerComponent.check_events_table_column_descending_order">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">check_events_table_column_descending_order</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span>
|
|
||||||
<span class="n">index</span><span class="p">:</span> <span class="nb">int</span><span class="p">,</span>
|
|
||||||
<span class="n">convert2timestamp</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> <span class="o">-></span> <span class="nb">bool</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Проверка, что заданный столбец таблицы упорядочен по убыванию.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Args:</span>
|
|
||||||
<span class="sd"> index: Индекс столбца.</span>
|
|
||||||
<span class="sd"> convert2timestamp: Конвертировать строковое представление даты и времени в Unix timestamp.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Returns:</span>
|
|
||||||
<span class="sd"> True, если столбец таблицы упорядочен по убыванию. Иначе: False</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
|
|
||||||
<span class="n">loc</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">container_locator</span><span class="o">.</span><span class="n">locator</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">table_locator</span><span class="p">)</span>
|
|
||||||
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">events_table</span><span class="o">.</span><span class="n">check_column_descending_order</span><span class="p">(</span><span class="n">loc</span><span class="p">,</span> <span class="n">index</span><span class="p">,</span> <span class="n">convert2timestamp</span><span class="p">)</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="EventsContainerComponent.check_events_table_row_highlighting">
|
|
||||||
<a class="viewcode-back" href="../../components.html#components.events_container_component.EventsContainerComponent.check_events_table_row_highlighting">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">check_events_table_row_highlighting</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">row_index</span><span class="p">:</span> <span class="nb">int</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Проверяет выделение указанной строки таблицы.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Args:</span>
|
|
||||||
<span class="sd"> row_index: Индекс проверяемой строки.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Raises:</span>
|
|
||||||
<span class="sd"> AssertionError: Если строка не выделена.</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
|
|
||||||
<span class="n">loc</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">container_locator</span><span class="o">.</span><span class="n">locator</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">table_locator</span><span class="p">)</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">events_table</span><span class="o">.</span><span class="n">check_row_highlighting</span><span class="p">(</span><span class="n">loc</span><span class="p">,</span> <span class="n">row_index</span><span class="p">)</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="EventsContainerComponent.check_events_table_first_row_visibility">
|
|
||||||
<a class="viewcode-back" href="../../components.html#components.events_container_component.EventsContainerComponent.check_events_table_first_row_visibility">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">check_events_table_first_row_visibility</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Проверяет видимость первой строки таблицы.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Raises:</span>
|
|
||||||
<span class="sd"> AssertionError: Если строка не видна.</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
|
|
||||||
<span class="n">loc</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">container_locator</span><span class="o">.</span><span class="n">locator</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">table_locator</span><span class="p">)</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">events_table</span><span class="o">.</span><span class="n">check_first_row_visibility</span><span class="p">(</span><span class="n">loc</span><span class="p">)</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="EventsContainerComponent.check_events_table_last_row_visibility">
|
|
||||||
<a class="viewcode-back" href="../../components.html#components.events_container_component.EventsContainerComponent.check_events_table_last_row_visibility">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">check_events_table_last_row_visibility</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Проверяет видимость последней строки таблицы.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Raises:</span>
|
|
||||||
<span class="sd"> AssertionError: Если строка не видна.</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
|
|
||||||
<span class="n">loc</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">container_locator</span><span class="o">.</span><span class="n">locator</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">table_locator</span><span class="p">)</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">events_table</span><span class="o">.</span><span class="n">check_last_row_visibility</span><span class="p">(</span><span class="n">loc</span><span class="p">)</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="EventsContainerComponent.check_events_table_verticall_scrolling">
|
|
||||||
<a class="viewcode-back" href="../../components.html#components.events_container_component.EventsContainerComponent.check_events_table_verticall_scrolling">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">check_events_table_verticall_scrolling</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">bool</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Проверяет возможность вертикальной прокрутки таблицы.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Returns:</span>
|
|
||||||
<span class="sd"> bool: True если прокрутка возможна, иначе False.</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
|
|
||||||
<span class="n">loc</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">container_locator</span><span class="o">.</span><span class="n">locator</span><span class="p">(</span><span class="s2">"//div[@class='scrolltable']//table/tbody"</span><span class="p">)</span>
|
|
||||||
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">events_table</span><span class="o">.</span><span class="n">is_scrollable_vertically</span><span class="p">(</span><span class="n">loc</span><span class="p">)</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="EventsContainerComponent.is_chevron_left_disabled">
|
|
||||||
<a class="viewcode-back" href="../../components.html#components.events_container_component.EventsContainerComponent.is_chevron_left_disabled">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">is_chevron_left_disabled</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">bool</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Проверка видимости кнопки получения предыдущего набора данных"""</span>
|
|
||||||
|
|
||||||
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">chevron_left</span><span class="o">.</span><span class="n">is_disabled</span><span class="p">()</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="EventsContainerComponent.is_chevron_right_disabled">
|
|
||||||
<a class="viewcode-back" href="../../components.html#components.events_container_component.EventsContainerComponent.is_chevron_right_disabled">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">is_chevron_right_disabled</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">bool</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Проверка видимости кнопки получения следующего набора данных"""</span>
|
|
||||||
|
|
||||||
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">chevron_right</span><span class="o">.</span><span class="n">is_disabled</span><span class="p">()</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="EventsContainerComponent.is_first_page_disabled">
|
|
||||||
<a class="viewcode-back" href="../../components.html#components.events_container_component.EventsContainerComponent.is_first_page_disabled">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">is_first_page_disabled</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">bool</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Проверка видимости кнопки получения первой страницы с набором данных"""</span>
|
|
||||||
|
|
||||||
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">first_page</span><span class="o">.</span><span class="n">is_disabled</span><span class="p">()</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="EventsContainerComponent.is_last_page_disabled">
|
|
||||||
<a class="viewcode-back" href="../../components.html#components.events_container_component.EventsContainerComponent.is_last_page_disabled">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">is_last_page_disabled</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">bool</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Проверка видимости кнопки получения последней страницы с набором данных"""</span>
|
|
||||||
|
|
||||||
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">last_page</span><span class="o">.</span><span class="n">is_disabled</span><span class="p">()</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="EventsContainerComponent.should_be_all_disabled">
|
|
||||||
<a class="viewcode-back" href="../../components.html#components.events_container_component.EventsContainerComponent.should_be_all_disabled">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">should_be_all_disabled</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Проверка видимости кнопок пагинации: все кнопки disabled"""</span>
|
|
||||||
|
|
||||||
<span class="n">is_first_page_disabled</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">is_first_page_disabled</span><span class="p">()</span>
|
|
||||||
<span class="k">assert</span> <span class="n">is_first_page_disabled</span><span class="p">,</span> <span class="s2">"First Page button should be disabled"</span>
|
|
||||||
|
|
||||||
<span class="n">is_chevron_left_disabled</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">is_chevron_left_disabled</span><span class="p">()</span>
|
|
||||||
<span class="k">assert</span> <span class="n">is_chevron_left_disabled</span><span class="p">,</span> <span class="s2">"Arrow Left button should be disabled"</span>
|
|
||||||
|
|
||||||
<span class="n">is_chevron_right_disabled</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">is_chevron_right_disabled</span><span class="p">()</span>
|
|
||||||
<span class="k">assert</span> <span class="n">is_chevron_right_disabled</span><span class="p">,</span> <span class="s2">"Arrow Right button should be disabled"</span>
|
|
||||||
|
|
||||||
<span class="n">is_last_page_disabled</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">is_last_page_disabled</span><span class="p">()</span>
|
|
||||||
<span class="k">assert</span> <span class="n">is_last_page_disabled</span><span class="p">,</span> <span class="s2">"Last Page button should be disabled"</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="EventsContainerComponent.should_be_all_enabled">
|
|
||||||
<a class="viewcode-back" href="../../components.html#components.events_container_component.EventsContainerComponent.should_be_all_enabled">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">should_be_all_enabled</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Проверка видимости кнопок пагинации: все кнопки enabled"""</span>
|
|
||||||
|
|
||||||
<span class="n">is_first_page_disabled</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">is_first_page_disabled</span><span class="p">()</span>
|
|
||||||
<span class="k">assert</span> <span class="ow">not</span> <span class="n">is_first_page_disabled</span><span class="p">,</span> <span class="s2">"First Page button should be enabled"</span>
|
|
||||||
|
|
||||||
<span class="n">is_chevron_left_disabled</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">is_chevron_left_disabled</span><span class="p">()</span>
|
|
||||||
<span class="k">assert</span> <span class="ow">not</span> <span class="n">is_chevron_left_disabled</span><span class="p">,</span> <span class="s2">"Arrow Left button should be enabled"</span>
|
|
||||||
|
|
||||||
<span class="n">is_chevron_right_disabled</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">is_chevron_right_disabled</span><span class="p">()</span>
|
|
||||||
<span class="k">assert</span> <span class="ow">not</span> <span class="n">is_chevron_right_disabled</span><span class="p">,</span> <span class="s2">"Arrow Right button should be enabled"</span>
|
|
||||||
|
|
||||||
<span class="n">is_last_page_disabled</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">is_last_page_disabled</span><span class="p">()</span>
|
|
||||||
<span class="k">assert</span> <span class="ow">not</span> <span class="n">is_last_page_disabled</span><span class="p">,</span> <span class="s2">"Last Page button should be enabled"</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="EventsContainerComponent.should_be_initial_state">
|
|
||||||
<a class="viewcode-back" href="../../components.html#components.events_container_component.EventsContainerComponent.should_be_initial_state">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">should_be_initial_state</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Проверка видимости кнопок для первой страницы"""</span>
|
|
||||||
|
|
||||||
<span class="n">is_first_page_disabled</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">is_first_page_disabled</span><span class="p">()</span>
|
|
||||||
<span class="k">assert</span> <span class="n">is_first_page_disabled</span><span class="p">,</span> <span class="s2">"First Page button should be disabled"</span>
|
|
||||||
|
|
||||||
<span class="n">is_chevron_left_disabled</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">is_chevron_left_disabled</span><span class="p">()</span>
|
|
||||||
<span class="k">assert</span> <span class="n">is_chevron_left_disabled</span><span class="p">,</span> <span class="s2">"Arrow Left button should be disabled"</span>
|
|
||||||
|
|
||||||
<span class="n">is_chevron_right_disabled</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">is_chevron_right_disabled</span><span class="p">()</span>
|
|
||||||
<span class="k">assert</span> <span class="ow">not</span> <span class="n">is_chevron_right_disabled</span><span class="p">,</span> <span class="s2">"Arrow Right button should be enabled"</span>
|
|
||||||
|
|
||||||
<span class="n">is_last_page_disabled</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">is_last_page_disabled</span><span class="p">()</span>
|
|
||||||
<span class="k">assert</span> <span class="ow">not</span> <span class="n">is_last_page_disabled</span><span class="p">,</span> <span class="s2">"Last Page button should be enabled"</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="EventsContainerComponent.should_be_final_state">
|
|
||||||
<a class="viewcode-back" href="../../components.html#components.events_container_component.EventsContainerComponent.should_be_final_state">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">should_be_final_state</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Проверка видимости кнопок для последней страницы"""</span>
|
|
||||||
|
|
||||||
<span class="n">is_first_page_disabled</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">is_first_page_disabled</span><span class="p">()</span>
|
|
||||||
<span class="k">assert</span> <span class="ow">not</span> <span class="n">is_first_page_disabled</span><span class="p">,</span> <span class="s2">"First Page button should be enabled"</span>
|
|
||||||
|
|
||||||
<span class="n">is_chevron_left_disabled</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">is_chevron_left_disabled</span><span class="p">()</span>
|
|
||||||
<span class="k">assert</span> <span class="ow">not</span> <span class="n">is_chevron_left_disabled</span><span class="p">,</span> <span class="s2">"Arrow Left button should be enabled"</span>
|
|
||||||
|
|
||||||
<span class="n">is_chevron_right_disabled</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">is_chevron_right_disabled</span><span class="p">()</span>
|
|
||||||
<span class="k">assert</span> <span class="n">is_chevron_right_disabled</span><span class="p">,</span> <span class="s2">"Arrow Right button should be disabled"</span>
|
|
||||||
|
|
||||||
<span class="n">is_last_page_disabled</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">is_last_page_disabled</span><span class="p">()</span>
|
|
||||||
<span class="k">assert</span> <span class="n">is_last_page_disabled</span><span class="p">,</span> <span class="s2">"Last Page button should be disabled"</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="EventsContainerComponent.should_be_events_table">
|
|
||||||
<a class="viewcode-back" href="../../components.html#components.events_container_component.EventsContainerComponent.should_be_events_table">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">should_be_events_table</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Проверяет наличие таблицы событий.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Raises:</span>
|
|
||||||
<span class="sd"> AssertionError: Если таблица отсутствует.</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
|
|
||||||
<span class="n">loc</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">container_locator</span><span class="o">.</span><span class="n">locator</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">table_locator</span><span class="p">)</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">events_table</span><span class="o">.</span><span class="n">check_visibility</span><span class="p">(</span><span class="n">loc</span><span class="p">,</span>
|
|
||||||
<span class="s2">"Events table is missing"</span>
|
|
||||||
<span class="p">)</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="EventsContainerComponent.should_be_toolbar">
|
|
||||||
<a class="viewcode-back" href="../../components.html#components.events_container_component.EventsContainerComponent.should_be_toolbar">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">should_be_toolbar</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Проверка наличия тулбара"""</span>
|
|
||||||
|
|
||||||
<span class="n">loc</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">container_locator</span><span class="o">.</span><span class="n">locator</span><span class="p">(</span><span class="s2">"//nav[contains(@class, 'v-toolbar')]"</span><span class="p">)</span><span class="o">.</span><span class="n">nth</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">toolbar</span><span class="o">.</span><span class="n">check_toolbar_presence_by_locator</span><span class="p">(</span><span class="n">loc</span><span class="p">,</span> <span class="s2">"Toolbar is missing"</span><span class="p">)</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="EventsContainerComponent.should_be_base_toolbar_buttons">
|
|
||||||
<a class="viewcode-back" href="../../components.html#components.events_container_component.EventsContainerComponent.should_be_base_toolbar_buttons">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">should_be_base_toolbar_buttons</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Проверяет наличие и видимость базовых кнопок тулбара."""</span>
|
|
||||||
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">toolbar</span><span class="o">.</span><span class="n">check_button_visibility</span><span class="p">(</span><span class="s2">"filter_button"</span><span class="p">)</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">toolbar</span><span class="o">.</span><span class="n">check_button_visibility</span><span class="p">(</span><span class="s2">"export_to_pdf_button"</span><span class="p">)</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">toolbar</span><span class="o">.</span><span class="n">check_button_tooltip</span><span class="p">(</span><span class="s2">"export_to_pdf_button"</span><span class="p">,</span> <span class="s2">"Скачать в формате PDF"</span><span class="p">)</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">toolbar</span><span class="o">.</span><span class="n">check_button_visibility</span><span class="p">(</span><span class="s2">"export_to_csv_button"</span><span class="p">)</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">toolbar</span><span class="o">.</span><span class="n">check_button_tooltip</span><span class="p">(</span><span class="s2">"export_to_csv_button"</span><span class="p">,</span> <span class="s2">"Скачать в формате CSV"</span><span class="p">)</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="EventsContainerComponent.should_be_pagination_buttons">
|
|
||||||
<a class="viewcode-back" href="../../components.html#components.events_container_component.EventsContainerComponent.should_be_pagination_buttons">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">should_be_pagination_buttons</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Проверяет наличие и видимость кнопок пагинации."""</span>
|
|
||||||
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">first_page</span><span class="o">.</span><span class="n">check_visibility</span><span class="p">(</span><span class="s2">"Pagination button 'first page' is missing"</span><span class="p">)</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">chevron_left</span><span class="o">.</span><span class="n">check_visibility</span><span class="p">(</span><span class="s2">"Pagination button 'chevron left' is missing"</span><span class="p">)</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">data_set_number</span><span class="o">.</span><span class="n">check_visibility</span><span class="p">(</span><span class="s2">"Pagination button 'data set number' is missing"</span><span class="p">)</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">chevron_right</span><span class="o">.</span><span class="n">check_visibility</span><span class="p">(</span><span class="s2">"Pagination button 'chevron right' is missing"</span><span class="p">)</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">last_page</span><span class="o">.</span><span class="n">check_visibility</span><span class="p">(</span><span class="s2">"Pagination button 'last page' is missing"</span><span class="p">)</span></div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</pre></div>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<footer>
|
|
||||||
|
|
||||||
<hr/>
|
|
||||||
|
|
||||||
<div role="contentinfo">
|
|
||||||
<p>© Авторские права 2025, NPO KIS. </p>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
Собрано при помощи <a href="https://www.sphinx-doc.org/">Sphinx</a> с использованием
|
|
||||||
<a href="https://github.com/readthedocs/sphinx_rtd_theme">темы,</a>
|
|
||||||
предоставленной <a href="https://readthedocs.org">Read the Docs</a>.
|
|
||||||
|
|
||||||
|
|
||||||
</footer>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</section>
|
|
||||||
</div>
|
|
||||||
<script>
|
|
||||||
jQuery(function () {
|
|
||||||
SphinxRtdTheme.Navigation.enable(true);
|
|
||||||
});
|
|
||||||
</script>
|
|
||||||
|
|
||||||
</body>
|
|
||||||
</html>
|
|
||||||
|
|
@ -1,278 +0,0 @@
|
||||||
|
|
||||||
|
|
||||||
<!DOCTYPE html>
|
|
||||||
<html class="writer-html5" lang="ru" data-content_root="../../">
|
|
||||||
<head>
|
|
||||||
<meta charset="utf-8" />
|
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
||||||
<title>components.json_container_component — документация e-nms-qa-automation 0.1.0</title>
|
|
||||||
<link rel="stylesheet" type="text/css" href="../../_static/pygments.css?v=b86133f3" />
|
|
||||||
<link rel="stylesheet" type="text/css" href="../../_static/css/theme.css?v=e59714d7" />
|
|
||||||
|
|
||||||
|
|
||||||
<script src="../../_static/jquery.js?v=5d32c60e"></script>
|
|
||||||
<script src="../../_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script>
|
|
||||||
<script src="../../_static/documentation_options.js?v=6ff560e8"></script>
|
|
||||||
<script src="../../_static/doctools.js?v=9bcbadda"></script>
|
|
||||||
<script src="../../_static/sphinx_highlight.js?v=dc90522c"></script>
|
|
||||||
<script src="../../_static/translations.js?v=cd1d70c9"></script>
|
|
||||||
<script src="../../_static/js/theme.js"></script>
|
|
||||||
<link rel="index" title="Алфавитный указатель" href="../../genindex.html" />
|
|
||||||
<link rel="search" title="Поиск" href="../../search.html" />
|
|
||||||
</head>
|
|
||||||
|
|
||||||
<body class="wy-body-for-nav">
|
|
||||||
<div class="wy-grid-for-nav">
|
|
||||||
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
|
|
||||||
<div class="wy-side-scroll">
|
|
||||||
<div class="wy-side-nav-search" >
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<a href="../../index.html" class="icon icon-home">
|
|
||||||
e-nms-qa-automation
|
|
||||||
</a>
|
|
||||||
<div role="search">
|
|
||||||
<form id="rtd-search-form" class="wy-form" action="../../search.html" method="get">
|
|
||||||
<input type="text" name="q" placeholder="Поиск в документации" aria-label="Поиск в документации" />
|
|
||||||
<input type="hidden" name="check_keywords" value="yes" />
|
|
||||||
<input type="hidden" name="area" value="default" />
|
|
||||||
</form>
|
|
||||||
</div>
|
|
||||||
</div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Меню навигации">
|
|
||||||
<!-- Local TOC -->
|
|
||||||
<div class="local-toc"></div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</nav>
|
|
||||||
|
|
||||||
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Меню навигации для мобильных устройств" >
|
|
||||||
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
|
|
||||||
<a href="../../index.html">e-nms-qa-automation</a>
|
|
||||||
</nav>
|
|
||||||
|
|
||||||
<div class="wy-nav-content">
|
|
||||||
<div class="rst-content">
|
|
||||||
<div role="navigation" aria-label="Навигация по страницам">
|
|
||||||
<ul class="wy-breadcrumbs">
|
|
||||||
<li><a href="../../index.html" class="icon icon-home" aria-label="Home"></a></li>
|
|
||||||
<li class="breadcrumb-item"><a href="../index.html">Код модуля</a></li>
|
|
||||||
<li class="breadcrumb-item active">components.json_container_component</li>
|
|
||||||
<li class="wy-breadcrumbs-aside">
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
<hr/>
|
|
||||||
</div>
|
|
||||||
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
|
|
||||||
<div itemprop="articleBody">
|
|
||||||
|
|
||||||
<h1>Исходный код components.json_container_component</h1><div class="highlight"><pre>
|
|
||||||
<span></span><span class="sd">"""Модуль для работы с JSON-контейнерами на веб-страницах.</span>
|
|
||||||
|
|
||||||
<span class="sd">Содержит компонент для чтения и проверки JSON-данных в контейнерах.</span>
|
|
||||||
<span class="sd">Использует playwright для взаимодействия с элементами страницы.</span>
|
|
||||||
<span class="sd">"""</span>
|
|
||||||
|
|
||||||
<span class="kn">import</span><span class="w"> </span><span class="nn">json</span>
|
|
||||||
<span class="kn">import</span><span class="w"> </span><span class="nn">re</span>
|
|
||||||
<span class="kn">from</span><span class="w"> </span><span class="nn">typing</span><span class="w"> </span><span class="kn">import</span> <span class="n">Any</span><span class="p">,</span> <span class="n">Dict</span>
|
|
||||||
<span class="kn">import</span><span class="w"> </span><span class="nn">jsondiff</span>
|
|
||||||
<span class="kn">from</span><span class="w"> </span><span class="nn">playwright.sync_api</span><span class="w"> </span><span class="kn">import</span> <span class="n">Page</span>
|
|
||||||
<span class="kn">from</span><span class="w"> </span><span class="nn">tools.logger</span><span class="w"> </span><span class="kn">import</span> <span class="n">get_logger</span>
|
|
||||||
<span class="kn">from</span><span class="w"> </span><span class="nn">components.base_component</span><span class="w"> </span><span class="kn">import</span> <span class="n">BaseComponent</span>
|
|
||||||
|
|
||||||
<span class="n">logger</span> <span class="o">=</span> <span class="n">get_logger</span><span class="p">(</span><span class="s2">"JSON_CONTAINER"</span><span class="p">)</span>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="JsonContainerComponent">
|
|
||||||
<a class="viewcode-back" href="../../components.html#components.json_container_component.JsonContainerComponent">[документация]</a>
|
|
||||||
<span class="k">class</span><span class="w"> </span><span class="nc">JsonContainerComponent</span><span class="p">(</span><span class="n">BaseComponent</span><span class="p">):</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Компонент для работы с JSON-данными на странице.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Предоставляет методы чтения и проверки JSON-данных в контейнерах.</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="JsonContainerComponent.__init__">
|
|
||||||
<a class="viewcode-back" href="../../components.html#components.json_container_component.JsonContainerComponent.__init__">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">page</span><span class="p">:</span> <span class="n">Page</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Инициализирует JSON-контейнер.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Args:</span>
|
|
||||||
<span class="sd"> page: Экземпляр страницы Playwright.</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">page</span> <span class="o">=</span> <span class="n">page</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="JsonContainerComponent.format_json_string">
|
|
||||||
<a class="viewcode-back" href="../../components.html#components.json_container_component.JsonContainerComponent.format_json_string">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">format_json_string</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">json_string</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Форматирует строку JSON для корректного парсинга.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Args:</span>
|
|
||||||
<span class="sd"> json_string: Сырая строка с JSON-данными.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Returns:</span>
|
|
||||||
<span class="sd"> str: Отформатированная строка JSON.</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
<span class="n">lines</span> <span class="o">=</span> <span class="n">json_string</span><span class="o">.</span><span class="n">splitlines</span><span class="p">()</span>
|
|
||||||
<span class="n">formatted_lines</span> <span class="o">=</span> <span class="p">[]</span>
|
|
||||||
<span class="n">stack</span> <span class="o">=</span> <span class="p">[]</span> <span class="c1"># Стек для отслеживания вложенности</span>
|
|
||||||
<span class="n">current_indent</span> <span class="o">=</span> <span class="mi">0</span>
|
|
||||||
|
|
||||||
<span class="k">for</span> <span class="n">line</span> <span class="ow">in</span> <span class="n">lines</span><span class="p">:</span>
|
|
||||||
<span class="n">line</span> <span class="o">=</span> <span class="n">line</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span>
|
|
||||||
<span class="k">if</span> <span class="ow">not</span> <span class="n">line</span><span class="p">:</span>
|
|
||||||
<span class="k">continue</span>
|
|
||||||
|
|
||||||
<span class="c1"># Определяем тип текущей строки</span>
|
|
||||||
<span class="k">if</span> <span class="n">line</span> <span class="ow">in</span> <span class="p">[</span><span class="s1">'{'</span><span class="p">,</span> <span class="s1">'['</span><span class="p">]:</span>
|
|
||||||
<span class="n">formatted_lines</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s1">' '</span> <span class="o">*</span> <span class="n">current_indent</span> <span class="o">+</span> <span class="n">line</span><span class="p">)</span>
|
|
||||||
<span class="n">stack</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">line</span><span class="p">)</span>
|
|
||||||
<span class="n">current_indent</span> <span class="o">+=</span> <span class="mi">1</span>
|
|
||||||
<span class="k">elif</span> <span class="n">line</span> <span class="ow">in</span> <span class="p">[</span><span class="s1">'}'</span><span class="p">,</span> <span class="s1">']'</span><span class="p">]:</span>
|
|
||||||
<span class="n">current_indent</span> <span class="o">-=</span> <span class="mi">1</span>
|
|
||||||
<span class="k">if</span> <span class="n">stack</span> <span class="ow">and</span> <span class="n">stack</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span> <span class="ow">in</span> <span class="p">[</span><span class="s1">'{'</span><span class="p">,</span> <span class="s1">'['</span><span class="p">]:</span>
|
|
||||||
<span class="n">stack</span><span class="o">.</span><span class="n">pop</span><span class="p">()</span>
|
|
||||||
<span class="n">formatted_lines</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s1">' '</span> <span class="o">*</span> <span class="n">current_indent</span> <span class="o">+</span> <span class="n">line</span><span class="p">)</span>
|
|
||||||
<span class="k">elif</span> <span class="n">re</span><span class="o">.</span><span class="n">match</span><span class="p">(</span><span class="sa">r</span><span class="s1">'^\d+:\{'</span><span class="p">,</span> <span class="n">line</span><span class="p">):</span>
|
|
||||||
<span class="n">formatted_lines</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s1">' '</span> <span class="o">*</span> <span class="n">current_indent</span> <span class="o">+</span> <span class="s1">'{'</span><span class="p">)</span>
|
|
||||||
<span class="n">stack</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s1">'{'</span><span class="p">)</span>
|
|
||||||
<span class="n">current_indent</span> <span class="o">+=</span> <span class="mi">1</span>
|
|
||||||
<span class="k">elif</span> <span class="s1">':'</span> <span class="ow">in</span> <span class="n">line</span><span class="p">:</span>
|
|
||||||
<span class="n">key</span><span class="p">,</span> <span class="n">value</span> <span class="o">=</span> <span class="n">line</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s1">':'</span><span class="p">,</span> <span class="mi">1</span><span class="p">)</span>
|
|
||||||
<span class="n">key</span> <span class="o">=</span> <span class="n">key</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span>
|
|
||||||
<span class="n">value</span> <span class="o">=</span> <span class="n">value</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span>
|
|
||||||
|
|
||||||
<span class="k">if</span> <span class="ow">not</span> <span class="p">(</span><span class="n">key</span><span class="o">.</span><span class="n">startswith</span><span class="p">(</span><span class="s1">'"'</span><span class="p">)</span> <span class="ow">and</span> <span class="n">key</span><span class="o">.</span><span class="n">endswith</span><span class="p">(</span><span class="s1">'"'</span><span class="p">)):</span>
|
|
||||||
<span class="n">key</span> <span class="o">=</span> <span class="sa">f</span><span class="s1">'"</span><span class="si">{</span><span class="n">key</span><span class="si">}</span><span class="s1">"'</span>
|
|
||||||
|
|
||||||
<span class="k">if</span> <span class="n">value</span> <span class="ow">in</span> <span class="p">[</span><span class="s1">'{'</span><span class="p">,</span> <span class="s1">'['</span><span class="p">]:</span>
|
|
||||||
<span class="n">formatted_line</span> <span class="o">=</span> <span class="sa">f</span><span class="s1">'</span><span class="si">{</span><span class="n">key</span><span class="si">}</span><span class="s1">: </span><span class="si">{</span><span class="n">value</span><span class="si">}</span><span class="s1">'</span>
|
|
||||||
<span class="n">formatted_lines</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s1">' '</span> <span class="o">*</span> <span class="n">current_indent</span> <span class="o">+</span> <span class="n">formatted_line</span><span class="p">)</span>
|
|
||||||
<span class="n">stack</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">value</span><span class="p">)</span>
|
|
||||||
<span class="n">current_indent</span> <span class="o">+=</span> <span class="mi">1</span>
|
|
||||||
<span class="k">elif</span> <span class="n">value</span> <span class="ow">in</span> <span class="p">[</span><span class="s1">'}'</span><span class="p">,</span> <span class="s1">']'</span><span class="p">]:</span>
|
|
||||||
<span class="n">current_indent</span> <span class="o">-=</span> <span class="mi">1</span>
|
|
||||||
<span class="n">formatted_line</span> <span class="o">=</span> <span class="sa">f</span><span class="s1">'</span><span class="si">{</span><span class="n">key</span><span class="si">}</span><span class="s1">: </span><span class="si">{</span><span class="n">value</span><span class="si">}</span><span class="s1">'</span>
|
|
||||||
<span class="n">formatted_lines</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s1">' '</span> <span class="o">*</span> <span class="n">current_indent</span> <span class="o">+</span> <span class="n">formatted_line</span><span class="p">)</span>
|
|
||||||
<span class="k">if</span> <span class="n">stack</span><span class="p">:</span>
|
|
||||||
<span class="n">stack</span><span class="o">.</span><span class="n">pop</span><span class="p">()</span>
|
|
||||||
<span class="k">else</span><span class="p">:</span>
|
|
||||||
<span class="k">if</span> <span class="p">(</span><span class="n">value</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">value</span><span class="o">.</span><span class="n">isdigit</span><span class="p">()</span> <span class="ow">and</span>
|
|
||||||
<span class="ow">not</span> <span class="n">value</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="s1">'.'</span><span class="p">,</span> <span class="s1">''</span><span class="p">,</span> <span class="mi">1</span><span class="p">)</span><span class="o">.</span><span class="n">isdigit</span><span class="p">()</span> <span class="ow">and</span>
|
|
||||||
<span class="n">value</span> <span class="ow">not</span> <span class="ow">in</span> <span class="p">[</span><span class="s1">'true'</span><span class="p">,</span> <span class="s1">'false'</span><span class="p">,</span> <span class="s1">'null'</span><span class="p">]</span> <span class="ow">and</span>
|
|
||||||
<span class="ow">not</span> <span class="n">value</span><span class="o">.</span><span class="n">startswith</span><span class="p">(</span><span class="s1">'"'</span><span class="p">)</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">value</span><span class="o">.</span><span class="n">endswith</span><span class="p">(</span><span class="s1">'"'</span><span class="p">)</span> <span class="ow">and</span>
|
|
||||||
<span class="ow">not</span> <span class="n">value</span><span class="o">.</span><span class="n">startswith</span><span class="p">(</span><span class="s1">'{'</span><span class="p">)</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">value</span><span class="o">.</span><span class="n">startswith</span><span class="p">(</span><span class="s1">'['</span><span class="p">)):</span>
|
|
||||||
<span class="n">value</span> <span class="o">=</span> <span class="sa">f</span><span class="s1">'"</span><span class="si">{</span><span class="n">value</span><span class="si">}</span><span class="s1">"'</span>
|
|
||||||
|
|
||||||
<span class="n">formatted_line</span> <span class="o">=</span> <span class="sa">f</span><span class="s1">'</span><span class="si">{</span><span class="n">key</span><span class="si">}</span><span class="s1">: </span><span class="si">{</span><span class="n">value</span><span class="si">}</span><span class="s1">'</span>
|
|
||||||
<span class="n">formatted_lines</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s1">' '</span> <span class="o">*</span> <span class="n">current_indent</span> <span class="o">+</span> <span class="n">formatted_line</span><span class="p">)</span>
|
|
||||||
<span class="k">else</span><span class="p">:</span>
|
|
||||||
<span class="n">formatted_lines</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s1">' '</span> <span class="o">*</span> <span class="n">current_indent</span> <span class="o">+</span> <span class="n">line</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="c1"># Добавляем запятые где необходимо</span>
|
|
||||||
<span class="n">result</span> <span class="o">=</span> <span class="p">[]</span>
|
|
||||||
<span class="n">total_lines</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">formatted_lines</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="k">for</span> <span class="n">i</span><span class="p">,</span> <span class="n">current_line</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="n">formatted_lines</span><span class="p">):</span>
|
|
||||||
<span class="k">if</span> <span class="n">i</span> <span class="o"><</span> <span class="n">total_lines</span> <span class="o">-</span> <span class="mi">1</span><span class="p">:</span>
|
|
||||||
<span class="n">next_line</span> <span class="o">=</span> <span class="n">formatted_lines</span><span class="p">[</span><span class="n">i</span> <span class="o">+</span> <span class="mi">1</span><span class="p">]</span>
|
|
||||||
<span class="n">in_array</span> <span class="o">=</span> <span class="nb">any</span><span class="p">(</span><span class="n">bracket</span> <span class="o">==</span> <span class="s1">'['</span> <span class="k">for</span> <span class="n">bracket</span> <span class="ow">in</span> <span class="n">stack</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="c1"># Упрощенная проверка условий для запятой</span>
|
|
||||||
<span class="n">no_comma_condition1</span> <span class="o">=</span> <span class="n">current_line</span><span class="o">.</span><span class="n">endswith</span><span class="p">((</span><span class="s1">'{'</span><span class="p">,</span> <span class="s1">'['</span><span class="p">,</span> <span class="s1">','</span><span class="p">))</span>
|
|
||||||
<span class="n">no_comma_condition2</span> <span class="o">=</span> <span class="n">next_line</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span><span class="o">.</span><span class="n">endswith</span><span class="p">((</span><span class="s1">'}'</span><span class="p">,</span> <span class="s1">']'</span><span class="p">))</span>
|
|
||||||
<span class="n">no_comma_condition3</span> <span class="o">=</span> <span class="n">next_line</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span><span class="o">.</span><span class="n">startswith</span><span class="p">((</span><span class="s1">'}'</span><span class="p">,</span> <span class="s1">']'</span><span class="p">))</span>
|
|
||||||
<span class="n">no_comma_condition4</span> <span class="o">=</span> <span class="n">in_array</span> <span class="ow">and</span> <span class="n">next_line</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span> <span class="o">==</span> <span class="s1">']'</span>
|
|
||||||
|
|
||||||
<span class="n">should_add_comma</span> <span class="o">=</span> <span class="ow">not</span> <span class="p">(</span><span class="n">no_comma_condition1</span> <span class="ow">or</span> <span class="n">no_comma_condition2</span> <span class="ow">or</span>
|
|
||||||
<span class="n">no_comma_condition3</span> <span class="ow">or</span> <span class="n">no_comma_condition4</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="c1"># Специальный случай для элементов массива</span>
|
|
||||||
<span class="k">if</span> <span class="p">(</span><span class="n">in_array</span> <span class="ow">and</span> <span class="n">current_line</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span> <span class="o">==</span> <span class="s1">'}'</span> <span class="ow">and</span>
|
|
||||||
<span class="n">next_line</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span> <span class="o">!=</span> <span class="s1">']'</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">next_line</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span><span class="o">.</span><span class="n">startswith</span><span class="p">(</span><span class="s1">'}'</span><span class="p">)):</span>
|
|
||||||
<span class="n">should_add_comma</span> <span class="o">=</span> <span class="kc">True</span>
|
|
||||||
|
|
||||||
<span class="k">if</span> <span class="n">should_add_comma</span><span class="p">:</span>
|
|
||||||
<span class="n">current_line</span> <span class="o">+=</span> <span class="s1">','</span>
|
|
||||||
|
|
||||||
<span class="n">result</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">current_line</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="k">return</span> <span class="s1">'</span><span class="se">\n</span><span class="s1">'</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">result</span><span class="p">)</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="JsonContainerComponent.read_data">
|
|
||||||
<a class="viewcode-back" href="../../components.html#components.json_container_component.JsonContainerComponent.read_data">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">read_data</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">locator</span><span class="p">:</span> <span class="n">Any</span><span class="p">)</span> <span class="o">-></span> <span class="n">Dict</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Читает и форматирует JSON-данные из указанного локатора.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Args:</span>
|
|
||||||
<span class="sd"> locator: Локатор элемента с JSON-данными.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Returns:</span>
|
|
||||||
<span class="sd"> dict: Распарсенный JSON-объект.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Raises:</span>
|
|
||||||
<span class="sd"> json.JSONDecodeError: Если данные не могут быть преобразованы в JSON.</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
<span class="n">loc</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_locator</span><span class="p">(</span><span class="n">locator</span><span class="p">)</span>
|
|
||||||
<span class="n">json_string</span> <span class="o">=</span> <span class="n">loc</span><span class="o">.</span><span class="n">inner_text</span><span class="p">()</span>
|
|
||||||
<span class="n">formatted_json_string</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">format_json_string</span><span class="p">(</span><span class="n">json_string</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="k">try</span><span class="p">:</span>
|
|
||||||
<span class="n">data</span> <span class="o">=</span> <span class="n">json</span><span class="o">.</span><span class="n">loads</span><span class="p">(</span><span class="n">formatted_json_string</span><span class="p">)</span>
|
|
||||||
<span class="k">except</span> <span class="n">json</span><span class="o">.</span><span class="n">JSONDecodeError</span> <span class="k">as</span> <span class="n">e</span><span class="p">:</span>
|
|
||||||
<span class="n">logger</span><span class="o">.</span><span class="n">error</span><span class="p">(</span><span class="s2">"JSON decode error: </span><span class="si">%s</span><span class="s2">"</span><span class="p">,</span> <span class="n">e</span><span class="p">)</span>
|
|
||||||
<span class="n">logger</span><span class="o">.</span><span class="n">error</span><span class="p">(</span><span class="s2">"Formatted JSON: </span><span class="si">%s</span><span class="s2">"</span><span class="p">,</span> <span class="n">formatted_json_string</span><span class="p">)</span>
|
|
||||||
<span class="k">assert</span> <span class="kc">False</span><span class="p">,</span> <span class="sa">f</span><span class="s2">"Invalid json content. Error: </span><span class="si">{</span><span class="n">e</span><span class="si">}</span><span class="s2">"</span>
|
|
||||||
|
|
||||||
<span class="k">return</span> <span class="n">data</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="JsonContainerComponent.check_json_equals">
|
|
||||||
<a class="viewcode-back" href="../../components.html#components.json_container_component.JsonContainerComponent.check_json_equals">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">check_json_equals</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">actual</span><span class="p">:</span> <span class="n">Any</span><span class="p">,</span> <span class="n">expected</span><span class="p">:</span> <span class="n">Any</span><span class="p">,</span> <span class="n">msg</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Сравнивает JSON-объекты на идентичность.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Args:</span>
|
|
||||||
<span class="sd"> actual: Фактический JSON-объект.</span>
|
|
||||||
<span class="sd"> expected: Ожидаемый JSON-объект.</span>
|
|
||||||
<span class="sd"> msg: Сообщение об ошибке.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Raises:</span>
|
|
||||||
<span class="sd"> AssertionError: Если объекты не идентичны.</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
<span class="n">diff</span> <span class="o">=</span> <span class="n">jsondiff</span><span class="o">.</span><span class="n">diff</span><span class="p">(</span><span class="n">expected</span><span class="p">,</span> <span class="n">actual</span><span class="p">,</span> <span class="n">syntax</span><span class="o">=</span><span class="s1">'symmetric'</span><span class="p">)</span>
|
|
||||||
<span class="k">assert</span> <span class="nb">len</span><span class="p">(</span><span class="n">diff</span><span class="p">)</span> <span class="o">==</span> <span class="mi">0</span><span class="p">,</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">msg</span><span class="si">}</span><span class="s2">. DIFF is </span><span class="si">{</span><span class="n">diff</span><span class="si">}</span><span class="s2">"</span></div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</pre></div>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<footer>
|
|
||||||
|
|
||||||
<hr/>
|
|
||||||
|
|
||||||
<div role="contentinfo">
|
|
||||||
<p>© Авторские права 2025, NPO KIS. </p>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
Собрано при помощи <a href="https://www.sphinx-doc.org/">Sphinx</a> с использованием
|
|
||||||
<a href="https://github.com/readthedocs/sphinx_rtd_theme">темы,</a>
|
|
||||||
предоставленной <a href="https://readthedocs.org">Read the Docs</a>.
|
|
||||||
|
|
||||||
|
|
||||||
</footer>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</section>
|
|
||||||
</div>
|
|
||||||
<script>
|
|
||||||
jQuery(function () {
|
|
||||||
SphinxRtdTheme.Navigation.enable(true);
|
|
||||||
});
|
|
||||||
</script>
|
|
||||||
|
|
||||||
</body>
|
|
||||||
</html>
|
|
||||||
|
|
@ -1,282 +0,0 @@
|
||||||
|
|
||||||
|
|
||||||
<!DOCTYPE html>
|
|
||||||
<html class="writer-html5" lang="ru" data-content_root="../../">
|
|
||||||
<head>
|
|
||||||
<meta charset="utf-8" />
|
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
||||||
<title>components.modal_window_component — документация e-nms-qa-automation 0.1.0</title>
|
|
||||||
<link rel="stylesheet" type="text/css" href="../../_static/pygments.css?v=b86133f3" />
|
|
||||||
<link rel="stylesheet" type="text/css" href="../../_static/css/theme.css?v=e59714d7" />
|
|
||||||
|
|
||||||
|
|
||||||
<script src="../../_static/jquery.js?v=5d32c60e"></script>
|
|
||||||
<script src="../../_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script>
|
|
||||||
<script src="../../_static/documentation_options.js?v=6ff560e8"></script>
|
|
||||||
<script src="../../_static/doctools.js?v=9bcbadda"></script>
|
|
||||||
<script src="../../_static/sphinx_highlight.js?v=dc90522c"></script>
|
|
||||||
<script src="../../_static/translations.js?v=cd1d70c9"></script>
|
|
||||||
<script src="../../_static/js/theme.js"></script>
|
|
||||||
<link rel="index" title="Алфавитный указатель" href="../../genindex.html" />
|
|
||||||
<link rel="search" title="Поиск" href="../../search.html" />
|
|
||||||
</head>
|
|
||||||
|
|
||||||
<body class="wy-body-for-nav">
|
|
||||||
<div class="wy-grid-for-nav">
|
|
||||||
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
|
|
||||||
<div class="wy-side-scroll">
|
|
||||||
<div class="wy-side-nav-search" >
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<a href="../../index.html" class="icon icon-home">
|
|
||||||
e-nms-qa-automation
|
|
||||||
</a>
|
|
||||||
<div role="search">
|
|
||||||
<form id="rtd-search-form" class="wy-form" action="../../search.html" method="get">
|
|
||||||
<input type="text" name="q" placeholder="Поиск в документации" aria-label="Поиск в документации" />
|
|
||||||
<input type="hidden" name="check_keywords" value="yes" />
|
|
||||||
<input type="hidden" name="area" value="default" />
|
|
||||||
</form>
|
|
||||||
</div>
|
|
||||||
</div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Меню навигации">
|
|
||||||
<!-- Local TOC -->
|
|
||||||
<div class="local-toc"></div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</nav>
|
|
||||||
|
|
||||||
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Меню навигации для мобильных устройств" >
|
|
||||||
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
|
|
||||||
<a href="../../index.html">e-nms-qa-automation</a>
|
|
||||||
</nav>
|
|
||||||
|
|
||||||
<div class="wy-nav-content">
|
|
||||||
<div class="rst-content">
|
|
||||||
<div role="navigation" aria-label="Навигация по страницам">
|
|
||||||
<ul class="wy-breadcrumbs">
|
|
||||||
<li><a href="../../index.html" class="icon icon-home" aria-label="Home"></a></li>
|
|
||||||
<li class="breadcrumb-item"><a href="../index.html">Код модуля</a></li>
|
|
||||||
<li class="breadcrumb-item active">components.modal_window_component</li>
|
|
||||||
<li class="wy-breadcrumbs-aside">
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
<hr/>
|
|
||||||
</div>
|
|
||||||
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
|
|
||||||
<div itemprop="articleBody">
|
|
||||||
|
|
||||||
<h1>Исходный код components.modal_window_component</h1><div class="highlight"><pre>
|
|
||||||
<span></span><span class="sd">"""Модуль компонента модального окна. Содержит класс для работы с модальными окнами,</span>
|
|
||||||
<span class="sd">их элементами и проверками."""</span>
|
|
||||||
|
|
||||||
<span class="kn">from</span><span class="w"> </span><span class="nn">playwright.sync_api</span><span class="w"> </span><span class="kn">import</span> <span class="n">Page</span>
|
|
||||||
<span class="kn">from</span><span class="w"> </span><span class="nn">tools.logger</span><span class="w"> </span><span class="kn">import</span> <span class="n">get_logger</span>
|
|
||||||
<span class="kn">from</span><span class="w"> </span><span class="nn">locators.modal_window_locators</span><span class="w"> </span><span class="kn">import</span> <span class="n">ModalWindowLocators</span>
|
|
||||||
<span class="kn">from</span><span class="w"> </span><span class="nn">elements.button_element</span><span class="w"> </span><span class="kn">import</span> <span class="n">Button</span>
|
|
||||||
<span class="kn">from</span><span class="w"> </span><span class="nn">components.toolbar_component</span><span class="w"> </span><span class="kn">import</span> <span class="n">ToolbarComponent</span>
|
|
||||||
<span class="kn">from</span><span class="w"> </span><span class="nn">components.base_component</span><span class="w"> </span><span class="kn">import</span> <span class="n">BaseComponent</span>
|
|
||||||
|
|
||||||
<span class="n">logger</span> <span class="o">=</span> <span class="n">get_logger</span><span class="p">(</span><span class="s2">"MODAL_WINDOW"</span><span class="p">)</span>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="ModalWindowComponent">
|
|
||||||
<a class="viewcode-back" href="../../components.html#components.modal_window_component.ModalWindowComponent">[документация]</a>
|
|
||||||
<span class="k">class</span><span class="w"> </span><span class="nc">ModalWindowComponent</span><span class="p">(</span><span class="n">BaseComponent</span><span class="p">):</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Компонент модального окна. Предоставляет методы для взаимодействия с окном,</span>
|
|
||||||
<span class="sd"> его содержимым и проверок."""</span>
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="ModalWindowComponent.__init__">
|
|
||||||
<a class="viewcode-back" href="../../components.html#components.modal_window_component.ModalWindowComponent.__init__">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">page</span><span class="p">:</span> <span class="n">Page</span><span class="p">):</span>
|
|
||||||
<span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="fm">__init__</span><span class="p">(</span><span class="n">page</span><span class="p">)</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">toolbar</span> <span class="o">=</span> <span class="n">ToolbarComponent</span><span class="p">(</span><span class="n">page</span><span class="p">,</span> <span class="s2">""</span><span class="p">)</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">content_items</span> <span class="o">=</span> <span class="p">{}</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">buttons</span> <span class="o">=</span> <span class="p">[]</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<span class="c1"># Действия:</span>
|
|
||||||
<div class="viewcode-block" id="ModalWindowComponent.add_content_item">
|
|
||||||
<a class="viewcode-back" href="../../components.html#components.modal_window_component.ModalWindowComponent.add_content_item">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">add_content_item</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">item</span><span class="p">:</span> <span class="nb">object</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Добавляет элемент содержимого в окно по заданному имени."""</span>
|
|
||||||
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">content_items</span><span class="p">[</span><span class="n">name</span><span class="p">]</span> <span class="o">=</span> <span class="n">item</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="ModalWindowComponent.get_content_item">
|
|
||||||
<a class="viewcode-back" href="../../components.html#components.modal_window_component.ModalWindowComponent.get_content_item">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">get_content_item</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="nb">object</span> <span class="o">|</span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Возвращает элемент содержимого по имени или None, если не найден."""</span>
|
|
||||||
|
|
||||||
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">content_items</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">name</span><span class="p">)</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="ModalWindowComponent.add_toolbar_title">
|
|
||||||
<a class="viewcode-back" href="../../components.html#components.modal_window_component.ModalWindowComponent.add_toolbar_title">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">add_toolbar_title</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">title</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Добавляет заголовок в панель инструментов модального окна."""</span>
|
|
||||||
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">toolbar</span><span class="o">.</span><span class="n">add_title</span><span class="p">(</span><span class="n">title</span><span class="p">)</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="ModalWindowComponent.add_toolbar_button">
|
|
||||||
<a class="viewcode-back" href="../../components.html#components.modal_window_component.ModalWindowComponent.add_toolbar_button">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">add_toolbar_button</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">locator</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">name</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Добавляет кнопку в панель инструментов модального окна."""</span>
|
|
||||||
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">toolbar</span><span class="o">.</span><span class="n">add_tooltip_button</span><span class="p">(</span><span class="n">locator</span><span class="p">,</span> <span class="n">name</span><span class="p">)</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="ModalWindowComponent.add_button">
|
|
||||||
<a class="viewcode-back" href="../../components.html#components.modal_window_component.ModalWindowComponent.add_button">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">add_button</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">locator</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">name</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Добавляет кнопку в модальное окно."""</span>
|
|
||||||
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">buttons</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">Button</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">page</span><span class="p">,</span> <span class="n">locator</span><span class="p">,</span> <span class="n">name</span><span class="p">))</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="ModalWindowComponent.get_button_by_name">
|
|
||||||
<a class="viewcode-back" href="../../components.html#components.modal_window_component.ModalWindowComponent.get_button_by_name">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">get_button_by_name</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="n">Button</span> <span class="o">|</span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Ищет и возвращает кнопку по имени или None, если не найдена."""</span>
|
|
||||||
|
|
||||||
<span class="k">for</span> <span class="n">button</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">buttons</span><span class="p">:</span>
|
|
||||||
<span class="k">if</span> <span class="n">button</span><span class="o">.</span><span class="n">name</span> <span class="o">==</span> <span class="n">name</span><span class="p">:</span>
|
|
||||||
<span class="k">return</span> <span class="n">button</span>
|
|
||||||
<span class="k">return</span> <span class="kc">None</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="ModalWindowComponent.click_button">
|
|
||||||
<a class="viewcode-back" href="../../components.html#components.modal_window_component.ModalWindowComponent.click_button">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">click_button</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Кликает по кнопке с заданным именем. Вызывает ошибку, если не найдена."""</span>
|
|
||||||
|
|
||||||
<span class="n">button</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_button_by_name</span><span class="p">(</span><span class="n">name</span><span class="p">)</span>
|
|
||||||
<span class="k">if</span> <span class="n">button</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="k">assert</span> <span class="kc">False</span><span class="p">,</span> <span class="sa">f</span><span class="s2">"Button with name '</span><span class="si">{</span><span class="n">name</span><span class="si">}</span><span class="s2">' not found"</span>
|
|
||||||
<span class="n">button</span><span class="o">.</span><span class="n">click</span><span class="p">()</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="ModalWindowComponent.click_toolbar_close_button">
|
|
||||||
<a class="viewcode-back" href="../../components.html#components.modal_window_component.ModalWindowComponent.click_toolbar_close_button">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">click_toolbar_close_button</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Кликает по кнопке закрытия в панели инструментов."""</span>
|
|
||||||
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">toolbar</span><span class="o">.</span><span class="n">click_button</span><span class="p">(</span><span class="s2">"close"</span><span class="p">)</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="ModalWindowComponent.scroll_window_down">
|
|
||||||
<a class="viewcode-back" href="../../components.html#components.modal_window_component.ModalWindowComponent.scroll_window_down">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">scroll_window_down</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Прокручивает содержимое окна вниз."""</span>
|
|
||||||
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">scroll_down</span><span class="p">(</span><span class="n">ModalWindowLocators</span><span class="o">.</span><span class="n">MODAL_WINDOW</span><span class="p">)</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="ModalWindowComponent.scroll_window_up">
|
|
||||||
<a class="viewcode-back" href="../../components.html#components.modal_window_component.ModalWindowComponent.scroll_window_up">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">scroll_window_up</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Прокручивает содержимое окна вверх."""</span>
|
|
||||||
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">scroll_up</span><span class="p">(</span><span class="n">ModalWindowLocators</span><span class="o">.</span><span class="n">MODAL_WINDOW</span><span class="p">)</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="ModalWindowComponent.scroll_window_left">
|
|
||||||
<a class="viewcode-back" href="../../components.html#components.modal_window_component.ModalWindowComponent.scroll_window_left">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">scroll_window_left</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Прокручивает содержимое окна влево."""</span>
|
|
||||||
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">scroll_left</span><span class="p">(</span><span class="n">ModalWindowLocators</span><span class="o">.</span><span class="n">MODAL_WINDOW</span><span class="p">)</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="ModalWindowComponent.scroll_window_right">
|
|
||||||
<a class="viewcode-back" href="../../components.html#components.modal_window_component.ModalWindowComponent.scroll_window_right">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">scroll_window_right</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Прокручивает содержимое окна вправо."""</span>
|
|
||||||
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">scroll_right</span><span class="p">(</span><span class="n">ModalWindowLocators</span><span class="o">.</span><span class="n">MODAL_WINDOW</span><span class="p">)</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<span class="c1"># Проверки:</span>
|
|
||||||
<div class="viewcode-block" id="ModalWindowComponent.check_window_vertical_scrolling">
|
|
||||||
<a class="viewcode-back" href="../../components.html#components.modal_window_component.ModalWindowComponent.check_window_vertical_scrolling">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">check_window_vertical_scrolling</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">bool</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Проверяет возможность вертикальной прокрутки окна."""</span>
|
|
||||||
|
|
||||||
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">is_scrollable_vertically</span><span class="p">(</span><span class="n">ModalWindowLocators</span><span class="o">.</span><span class="n">MODAL_WINDOW</span><span class="p">)</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="ModalWindowComponent.check_window_horizontal_scrolling">
|
|
||||||
<a class="viewcode-back" href="../../components.html#components.modal_window_component.ModalWindowComponent.check_window_horizontal_scrolling">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">check_window_horizontal_scrolling</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">bool</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Проверяет возможность горизонтальной прокрутки окна."""</span>
|
|
||||||
|
|
||||||
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">is_scrollable_horizontally</span><span class="p">(</span><span class="n">ModalWindowLocators</span><span class="o">.</span><span class="n">MODAL_WINDOW</span><span class="p">)</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="ModalWindowComponent.check_by_window_title">
|
|
||||||
<a class="viewcode-back" href="../../components.html#components.modal_window_component.ModalWindowComponent.check_by_window_title">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">check_by_window_title</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Проверяет наличие окна по заголовку."""</span>
|
|
||||||
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">toolbar</span><span class="o">.</span><span class="n">check_toolbar_presence</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Modal window with '</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">toolbar</span><span class="o">.</span><span class="n">title</span><span class="si">}</span><span class="s2">' is missing"</span><span class="p">)</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="ModalWindowComponent.check_button_visibility">
|
|
||||||
<a class="viewcode-back" href="../../components.html#components.modal_window_component.ModalWindowComponent.check_button_visibility">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">check_button_visibility</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Проверяет наличие кнопки по имени. Вызывает ошибку, если не найдена."""</span>
|
|
||||||
|
|
||||||
<span class="n">button</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_button_by_name</span><span class="p">(</span><span class="n">name</span><span class="p">)</span>
|
|
||||||
<span class="k">if</span> <span class="n">button</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="k">assert</span> <span class="kc">False</span><span class="p">,</span> <span class="sa">f</span><span class="s2">"Button with name '</span><span class="si">{</span><span class="n">name</span><span class="si">}</span><span class="s2">' not found"</span>
|
|
||||||
<span class="n">button</span><span class="o">.</span><span class="n">check_visibility</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Button with name '</span><span class="si">{</span><span class="n">name</span><span class="si">}</span><span class="s2">' is missing"</span><span class="p">)</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="ModalWindowComponent.check_toolbar_button_visibility">
|
|
||||||
<a class="viewcode-back" href="../../components.html#components.modal_window_component.ModalWindowComponent.check_toolbar_button_visibility">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">check_toolbar_button_visibility</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Проверяет наличие кнопки в панели инструментов."""</span>
|
|
||||||
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">toolbar</span><span class="o">.</span><span class="n">check_button_visibility</span><span class="p">(</span><span class="n">name</span><span class="p">)</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="ModalWindowComponent.check_toolbar_button_tooltip">
|
|
||||||
<a class="viewcode-back" href="../../components.html#components.modal_window_component.ModalWindowComponent.check_toolbar_button_tooltip">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">check_toolbar_button_tooltip</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">tooltip</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Проверяет подсказку у кнопки в панели инструментов."""</span>
|
|
||||||
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">toolbar</span><span class="o">.</span><span class="n">check_button_tooltip</span><span class="p">(</span><span class="n">name</span><span class="p">,</span> <span class="n">tooltip</span><span class="p">)</span></div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</pre></div>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<footer>
|
|
||||||
|
|
||||||
<hr/>
|
|
||||||
|
|
||||||
<div role="contentinfo">
|
|
||||||
<p>© Авторские права 2025, NPO KIS. </p>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
Собрано при помощи <a href="https://www.sphinx-doc.org/">Sphinx</a> с использованием
|
|
||||||
<a href="https://github.com/readthedocs/sphinx_rtd_theme">темы,</a>
|
|
||||||
предоставленной <a href="https://readthedocs.org">Read the Docs</a>.
|
|
||||||
|
|
||||||
|
|
||||||
</footer>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</section>
|
|
||||||
</div>
|
|
||||||
<script>
|
|
||||||
jQuery(function () {
|
|
||||||
SphinxRtdTheme.Navigation.enable(true);
|
|
||||||
});
|
|
||||||
</script>
|
|
||||||
|
|
||||||
</body>
|
|
||||||
</html>
|
|
||||||
|
|
@ -1,390 +0,0 @@
|
||||||
|
|
||||||
|
|
||||||
<!DOCTYPE html>
|
|
||||||
<html class="writer-html5" lang="ru" data-content_root="../../">
|
|
||||||
<head>
|
|
||||||
<meta charset="utf-8" />
|
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
||||||
<title>components.navbar_component — документация e-nms-qa-automation 0.1.0</title>
|
|
||||||
<link rel="stylesheet" type="text/css" href="../../_static/pygments.css?v=b86133f3" />
|
|
||||||
<link rel="stylesheet" type="text/css" href="../../_static/css/theme.css?v=e59714d7" />
|
|
||||||
|
|
||||||
|
|
||||||
<script src="../../_static/jquery.js?v=5d32c60e"></script>
|
|
||||||
<script src="../../_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script>
|
|
||||||
<script src="../../_static/documentation_options.js?v=6ff560e8"></script>
|
|
||||||
<script src="../../_static/doctools.js?v=9bcbadda"></script>
|
|
||||||
<script src="../../_static/sphinx_highlight.js?v=dc90522c"></script>
|
|
||||||
<script src="../../_static/translations.js?v=cd1d70c9"></script>
|
|
||||||
<script src="../../_static/js/theme.js"></script>
|
|
||||||
<link rel="index" title="Алфавитный указатель" href="../../genindex.html" />
|
|
||||||
<link rel="search" title="Поиск" href="../../search.html" />
|
|
||||||
</head>
|
|
||||||
|
|
||||||
<body class="wy-body-for-nav">
|
|
||||||
<div class="wy-grid-for-nav">
|
|
||||||
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
|
|
||||||
<div class="wy-side-scroll">
|
|
||||||
<div class="wy-side-nav-search" >
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<a href="../../index.html" class="icon icon-home">
|
|
||||||
e-nms-qa-automation
|
|
||||||
</a>
|
|
||||||
<div role="search">
|
|
||||||
<form id="rtd-search-form" class="wy-form" action="../../search.html" method="get">
|
|
||||||
<input type="text" name="q" placeholder="Поиск в документации" aria-label="Поиск в документации" />
|
|
||||||
<input type="hidden" name="check_keywords" value="yes" />
|
|
||||||
<input type="hidden" name="area" value="default" />
|
|
||||||
</form>
|
|
||||||
</div>
|
|
||||||
</div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Меню навигации">
|
|
||||||
<!-- Local TOC -->
|
|
||||||
<div class="local-toc"></div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</nav>
|
|
||||||
|
|
||||||
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Меню навигации для мобильных устройств" >
|
|
||||||
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
|
|
||||||
<a href="../../index.html">e-nms-qa-automation</a>
|
|
||||||
</nav>
|
|
||||||
|
|
||||||
<div class="wy-nav-content">
|
|
||||||
<div class="rst-content">
|
|
||||||
<div role="navigation" aria-label="Навигация по страницам">
|
|
||||||
<ul class="wy-breadcrumbs">
|
|
||||||
<li><a href="../../index.html" class="icon icon-home" aria-label="Home"></a></li>
|
|
||||||
<li class="breadcrumb-item"><a href="../index.html">Код модуля</a></li>
|
|
||||||
<li class="breadcrumb-item active">components.navbar_component</li>
|
|
||||||
<li class="wy-breadcrumbs-aside">
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
<hr/>
|
|
||||||
</div>
|
|
||||||
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
|
|
||||||
<div itemprop="articleBody">
|
|
||||||
|
|
||||||
<h1>Исходный код components.navbar_component</h1><div class="highlight"><pre>
|
|
||||||
<span></span><span class="sd">"""Модуль компонента панели навигации. Содержит класс для работы с элементами навигации."""</span>
|
|
||||||
|
|
||||||
<span class="kn">from</span><span class="w"> </span><span class="nn">playwright.sync_api</span><span class="w"> </span><span class="kn">import</span> <span class="n">Page</span><span class="p">,</span> <span class="n">Locator</span>
|
|
||||||
<span class="kn">from</span><span class="w"> </span><span class="nn">tools.logger</span><span class="w"> </span><span class="kn">import</span> <span class="n">get_logger</span>
|
|
||||||
<span class="kn">from</span><span class="w"> </span><span class="nn">locators.navigation_panel_locators</span><span class="w"> </span><span class="kn">import</span> <span class="n">NavigationPanelLocators</span>
|
|
||||||
<span class="kn">from</span><span class="w"> </span><span class="nn">components.base_component</span><span class="w"> </span><span class="kn">import</span> <span class="n">BaseComponent</span>
|
|
||||||
|
|
||||||
<span class="n">logger</span> <span class="o">=</span> <span class="n">get_logger</span><span class="p">(</span><span class="s2">"NAVIGATION_PANEL"</span><span class="p">)</span>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="NavigationPanelComponent">
|
|
||||||
<a class="viewcode-back" href="../../components.html#components.navbar_component.NavigationPanelComponent">[документация]</a>
|
|
||||||
<span class="k">class</span><span class="w"> </span><span class="nc">NavigationPanelComponent</span><span class="p">(</span><span class="n">BaseComponent</span><span class="p">):</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Компонент панели навигации. Предоставляет методы для взаимодействия с ней."""</span>
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="NavigationPanelComponent.__init__">
|
|
||||||
<a class="viewcode-back" href="../../components.html#components.navbar_component.NavigationPanelComponent.__init__">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">page</span><span class="p">:</span> <span class="n">Page</span><span class="p">):</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Инициализирует компонент панели навигации.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Args:</span>
|
|
||||||
<span class="sd"> page: Экземпляр страницы Playwright.</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
|
|
||||||
<span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="fm">__init__</span><span class="p">(</span><span class="n">page</span><span class="p">)</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<span class="c1"># Действия:</span>
|
|
||||||
<div class="viewcode-block" id="NavigationPanelComponent.click_item">
|
|
||||||
<a class="viewcode-back" href="../../components.html#components.navbar_component.NavigationPanelComponent.click_item">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">click_item</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">locator</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="n">Locator</span><span class="p">,</span> <span class="n">item_name</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Кликает по элементу с указанным текстом.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Args:</span>
|
|
||||||
<span class="sd"> locator: Локатор элемента или строка с CSS/XPath.</span>
|
|
||||||
<span class="sd"> item_name: Текст элемента для клика.</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
|
|
||||||
<span class="n">loc</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_locator</span><span class="p">(</span><span class="n">locator</span><span class="p">)</span>
|
|
||||||
<span class="n">loc</span><span class="o">.</span><span class="n">get_by_text</span><span class="p">(</span><span class="n">item_name</span><span class="p">)</span><span class="o">.</span><span class="n">click</span><span class="p">()</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="NavigationPanelComponent.click_sub_item">
|
|
||||||
<a class="viewcode-back" href="../../components.html#components.navbar_component.NavigationPanelComponent.click_sub_item">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">click_sub_item</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">node_root_locator</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="n">Locator</span><span class="p">,</span> <span class="n">item_name</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">parent</span><span class="p">:</span> <span class="kc">None</span><span class="o">|</span><span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Кликает по вложенному элементу с указанным текстом.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Args:</span>
|
|
||||||
<span class="sd"> node_root_locator: Локатор для поиска корневых элементов дерева.</span>
|
|
||||||
<span class="sd"> item_name: Текст элемента для клика.</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">find_and_click_item</span><span class="p">(</span><span class="n">page</span><span class="p">,</span> <span class="n">root_locator</span><span class="p">,</span> <span class="n">item_name</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">parent</span><span class="p">:</span> <span class="kc">None</span><span class="o">|</span><span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="n">Locator</span><span class="o">|</span><span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="c1"># Находим все локаторы корневых узлов на текущем уровне</span>
|
|
||||||
<span class="n">nodes_count</span> <span class="o">=</span> <span class="n">root_locator</span><span class="o">.</span><span class="n">locator</span><span class="p">(</span><span class="s1">'>div.v-treeview-node'</span><span class="p">)</span><span class="o">.</span><span class="n">count</span><span class="p">()</span>
|
|
||||||
|
|
||||||
<span class="c1"># Если искомый элемент находится на данном уровне, вычисляем локатор и делаем клик</span>
|
|
||||||
<span class="k">if</span> <span class="n">parent</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="k">for</span> <span class="n">index</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">nodes_count</span><span class="p">):</span>
|
|
||||||
<span class="n">node</span> <span class="o">=</span> <span class="n">root_locator</span><span class="o">.</span><span class="n">locator</span><span class="p">(</span><span class="sa">f</span><span class="s2">">div:nth-child(</span><span class="si">{</span><span class="n">index</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="mi">1</span><span class="si">}</span><span class="s2">)"</span><span class="p">)</span><span class="o">.</span><span class="n">first</span>
|
|
||||||
<span class="n">node_content</span> <span class="o">=</span> <span class="n">node</span><span class="o">.</span><span class="n">locator</span><span class="p">(</span><span class="s1">'div.v-treeview-node__content'</span><span class="p">)</span>
|
|
||||||
<span class="k">if</span> <span class="n">node_content</span><span class="o">.</span><span class="n">count</span><span class="p">()</span> <span class="o">></span> <span class="mi">0</span><span class="p">:</span>
|
|
||||||
<span class="n">node_text</span> <span class="o">=</span> <span class="n">node_content</span><span class="o">.</span><span class="n">first</span><span class="o">.</span><span class="n">inner_text</span><span class="p">()</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span>
|
|
||||||
<span class="k">if</span> <span class="n">item_name</span> <span class="o">==</span> <span class="n">node_text</span><span class="p">:</span>
|
|
||||||
<span class="n">node_attr</span> <span class="o">=</span> <span class="n">node</span><span class="o">.</span><span class="n">get_attribute</span><span class="p">(</span><span class="s1">'class'</span><span class="p">)</span>
|
|
||||||
<span class="k">if</span> <span class="s2">"v-treeview-node--leaf"</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">node_attr</span><span class="p">:</span>
|
|
||||||
<span class="n">toggle_button</span> <span class="o">=</span> <span class="n">node</span><span class="o">.</span><span class="n">locator</span><span class="p">(</span>
|
|
||||||
<span class="n">NavigationPanelLocators</span><span class="o">.</span><span class="n">NODE_ROOT</span>
|
|
||||||
<span class="p">)</span><span class="o">.</span><span class="n">locator</span><span class="p">(</span><span class="n">NavigationPanelLocators</span><span class="o">.</span><span class="n">TOGGLE_BUTTON</span><span class="p">)</span><span class="o">.</span><span class="n">first</span>
|
|
||||||
<span class="n">toogle_class_attr</span> <span class="o">=</span> <span class="n">toggle_button</span><span class="o">.</span><span class="n">get_attribute</span><span class="p">(</span><span class="s1">'class'</span><span class="p">)</span>
|
|
||||||
<span class="k">if</span> <span class="s2">"v-treeview-node__toggle--open"</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">toogle_class_attr</span><span class="p">:</span>
|
|
||||||
<span class="n">toggle_button</span><span class="o">.</span><span class="n">click</span><span class="p">()</span>
|
|
||||||
<span class="k">else</span><span class="p">:</span>
|
|
||||||
<span class="n">node</span><span class="o">.</span><span class="n">locator</span><span class="p">(</span><span class="n">NavigationPanelLocators</span><span class="o">.</span><span class="n">NODE_ROOT</span><span class="p">)</span><span class="o">.</span><span class="n">click</span><span class="p">()</span>
|
|
||||||
<span class="n">page</span><span class="o">.</span><span class="n">wait_for_timeout</span><span class="p">(</span><span class="mi">1000</span><span class="p">)</span>
|
|
||||||
<span class="k">return</span> <span class="n">node</span>
|
|
||||||
|
|
||||||
<span class="c1"># Если элемента нет, рекурсивно ищем дальше</span>
|
|
||||||
<span class="k">for</span> <span class="n">index</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">nodes_count</span><span class="p">):</span>
|
|
||||||
<span class="n">node</span> <span class="o">=</span> <span class="n">root_locator</span><span class="o">.</span><span class="n">locator</span><span class="p">(</span><span class="sa">f</span><span class="s2">">div:nth-child(</span><span class="si">{</span><span class="n">index</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="mi">1</span><span class="si">}</span><span class="s2">)"</span><span class="p">)</span><span class="o">.</span><span class="n">first</span>
|
|
||||||
|
|
||||||
<span class="c1"># Извлекаем аттрибуты из корневого узла</span>
|
|
||||||
<span class="n">node_class_attr</span> <span class="o">=</span> <span class="n">node</span><span class="o">.</span><span class="n">get_attribute</span><span class="p">(</span><span class="s1">'class'</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="n">is_expanded</span> <span class="o">=</span> <span class="kc">False</span>
|
|
||||||
<span class="n">has_children</span> <span class="o">=</span> <span class="kc">False</span>
|
|
||||||
|
|
||||||
<span class="c1"># Проверяем лист это или начало поддерева</span>
|
|
||||||
<span class="k">if</span> <span class="s2">"v-treeview-node--leaf"</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">node_class_attr</span><span class="p">:</span>
|
|
||||||
<span class="c1"># Проверяем, является ли узел раскрытым</span>
|
|
||||||
<span class="n">class_attr</span> <span class="o">=</span> <span class="n">node</span><span class="o">.</span><span class="n">locator</span><span class="p">(</span>
|
|
||||||
<span class="n">NavigationPanelLocators</span><span class="o">.</span><span class="n">NODE_ROOT</span>
|
|
||||||
<span class="p">)</span><span class="o">.</span><span class="n">locator</span><span class="p">(</span><span class="n">NavigationPanelLocators</span><span class="o">.</span><span class="n">TOGGLE_BUTTON</span><span class="p">)</span><span class="o">.</span><span class="n">first</span><span class="o">.</span><span class="n">get_attribute</span><span class="p">(</span><span class="s1">'class'</span><span class="p">)</span>
|
|
||||||
<span class="k">if</span> <span class="s2">"v-treeview-node__toggle--open"</span> <span class="ow">in</span> <span class="n">class_attr</span><span class="p">:</span>
|
|
||||||
<span class="n">is_expanded</span> <span class="o">=</span> <span class="kc">True</span>
|
|
||||||
|
|
||||||
<span class="c1"># Если узел закрыт можем его раскрыть</span>
|
|
||||||
<span class="k">if</span> <span class="n">is_expanded</span> <span class="ow">is</span> <span class="kc">False</span><span class="p">:</span>
|
|
||||||
<span class="n">toggle_button</span> <span class="o">=</span> <span class="n">node</span><span class="o">.</span><span class="n">locator</span><span class="p">(</span>
|
|
||||||
<span class="n">NavigationPanelLocators</span><span class="o">.</span><span class="n">NODE_ROOT</span>
|
|
||||||
<span class="p">)</span><span class="o">.</span><span class="n">locator</span><span class="p">(</span><span class="n">NavigationPanelLocators</span><span class="o">.</span><span class="n">TOGGLE_BUTTON</span><span class="p">)</span><span class="o">.</span><span class="n">first</span>
|
|
||||||
<span class="n">toggle_button</span><span class="o">.</span><span class="n">click</span><span class="p">()</span>
|
|
||||||
<span class="c1"># Ждем, пока дочерние элементы прогрузятся/появятся</span>
|
|
||||||
<span class="n">page</span><span class="o">.</span><span class="n">wait_for_timeout</span><span class="p">(</span><span class="mi">1000</span><span class="p">)</span>
|
|
||||||
<span class="n">is_expanded</span> <span class="o">=</span> <span class="kc">True</span>
|
|
||||||
|
|
||||||
<span class="c1"># Проверяем, имеет ли узел дочерние элементы</span>
|
|
||||||
<span class="n">children_count</span> <span class="o">=</span> <span class="n">node</span><span class="o">.</span><span class="n">locator</span><span class="p">(</span><span class="s1">'>div.v-treeview-node__children'</span><span class="p">)</span><span class="o">.</span><span class="n">count</span><span class="p">()</span>
|
|
||||||
<span class="n">content</span> <span class="o">=</span> <span class="n">node</span><span class="o">.</span><span class="n">locator</span><span class="p">(</span><span class="s1">'>div.v-treeview-node__children'</span><span class="p">)</span><span class="o">.</span><span class="n">inner_html</span><span class="p">()</span>
|
|
||||||
<span class="k">if</span> <span class="n">children_count</span> <span class="o">></span> <span class="mi">0</span> <span class="ow">and</span> <span class="nb">len</span><span class="p">(</span><span class="n">content</span><span class="p">)</span> <span class="o">!=</span> <span class="mi">0</span><span class="p">:</span>
|
|
||||||
<span class="n">has_children</span> <span class="o">=</span> <span class="kc">True</span>
|
|
||||||
|
|
||||||
<span class="c1"># Рекурсивный вызов для дочерних элементов</span>
|
|
||||||
<span class="c1"># Ищем дочерние элементы *внутри* текущего узла</span>
|
|
||||||
<span class="k">if</span> <span class="n">has_children</span> <span class="ow">and</span> <span class="n">is_expanded</span><span class="p">:</span>
|
|
||||||
<span class="n">child_nodes_locator</span> <span class="o">=</span> <span class="n">root_locator</span><span class="o">.</span><span class="n">locator</span><span class="p">(</span>
|
|
||||||
<span class="sa">f</span><span class="s2">">div:nth-child(</span><span class="si">{</span><span class="n">index</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="mi">1</span><span class="si">}</span><span class="s2">)"</span>
|
|
||||||
<span class="p">)</span><span class="o">.</span><span class="n">locator</span><span class="p">(</span><span class="s1">'>div.v-treeview-node__children'</span><span class="p">)</span>
|
|
||||||
<span class="n">found_loc</span> <span class="o">=</span> <span class="n">find_and_click_item</span><span class="p">(</span>
|
|
||||||
<span class="n">page</span><span class="p">,</span> <span class="n">child_nodes_locator</span><span class="p">,</span> <span class="n">item_name</span><span class="p">,</span> <span class="n">parent</span><span class="o">=</span><span class="kc">None</span>
|
|
||||||
<span class="p">)</span>
|
|
||||||
<span class="k">if</span> <span class="n">found_loc</span><span class="p">:</span>
|
|
||||||
<span class="k">if</span> <span class="n">parent</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="k">return</span> <span class="n">found_loc</span>
|
|
||||||
<span class="k">else</span><span class="p">:</span>
|
|
||||||
<span class="n">root_texts</span> <span class="o">=</span> <span class="n">root_locator</span><span class="o">.</span><span class="n">locator</span><span class="p">(</span>
|
|
||||||
<span class="sa">f</span><span class="s2">">div:nth-child(</span><span class="si">{</span><span class="n">index</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="mi">1</span><span class="si">}</span><span class="s2">)"</span>
|
|
||||||
<span class="p">)</span><span class="o">.</span><span class="n">inner_text</span><span class="p">()</span><span class="o">.</span><span class="n">splitlines</span><span class="p">()</span>
|
|
||||||
<span class="k">if</span> <span class="n">parent</span> <span class="ow">in</span> <span class="n">root_texts</span><span class="p">:</span>
|
|
||||||
<span class="k">return</span> <span class="n">found_loc</span>
|
|
||||||
|
|
||||||
<span class="c1"># закрываем узел, если в нем ничего не нашли</span>
|
|
||||||
<span class="k">if</span> <span class="n">is_expanded</span><span class="p">:</span>
|
|
||||||
<span class="n">toggle_button</span> <span class="o">=</span> <span class="n">node</span><span class="o">.</span><span class="n">locator</span><span class="p">(</span>
|
|
||||||
<span class="n">NavigationPanelLocators</span><span class="o">.</span><span class="n">NODE_ROOT</span>
|
|
||||||
<span class="p">)</span><span class="o">.</span><span class="n">locator</span><span class="p">(</span><span class="n">NavigationPanelLocators</span><span class="o">.</span><span class="n">TOGGLE_BUTTON</span><span class="p">)</span><span class="o">.</span><span class="n">first</span>
|
|
||||||
<span class="n">toggle_button</span><span class="o">.</span><span class="n">click</span><span class="p">()</span>
|
|
||||||
<span class="n">page</span><span class="o">.</span><span class="n">wait_for_timeout</span><span class="p">(</span><span class="mi">1000</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="c1"># элемент с заданным именем не найден</span>
|
|
||||||
<span class="k">return</span> <span class="kc">None</span>
|
|
||||||
|
|
||||||
<span class="n">root_locator</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_locator</span><span class="p">(</span><span class="n">node_root_locator</span><span class="p">)</span>
|
|
||||||
<span class="k">if</span> <span class="n">parent</span><span class="p">:</span>
|
|
||||||
<span class="n">parent_loc</span> <span class="o">=</span> <span class="n">find_and_click_item</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">page</span><span class="p">,</span> <span class="n">root_locator</span><span class="p">,</span> <span class="n">parent</span><span class="p">,</span> <span class="n">parent</span><span class="o">=</span><span class="kc">None</span><span class="p">)</span>
|
|
||||||
<span class="n">found</span> <span class="o">=</span> <span class="n">find_and_click_item</span><span class="p">(</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">page</span><span class="p">,</span> <span class="n">parent_loc</span><span class="o">.</span><span class="n">locator</span><span class="p">(</span><span class="s1">'>div.v-treeview-node__children'</span><span class="p">),</span>
|
|
||||||
<span class="n">item_name</span><span class="p">,</span> <span class="n">parent</span><span class="o">=</span><span class="kc">None</span>
|
|
||||||
<span class="p">)</span>
|
|
||||||
<span class="k">else</span><span class="p">:</span>
|
|
||||||
<span class="n">found</span> <span class="o">=</span> <span class="n">find_and_click_item</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">page</span><span class="p">,</span> <span class="n">root_locator</span><span class="p">,</span> <span class="n">item_name</span><span class="p">,</span> <span class="n">parent</span><span class="o">=</span><span class="kc">None</span><span class="p">)</span>
|
|
||||||
<span class="k">assert</span> <span class="n">found</span><span class="p">,</span> <span class="sa">f</span><span class="s2">"Navigation panel item </span><span class="si">{</span><span class="n">item_name</span><span class="si">}</span><span class="s2"> is missing"</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="NavigationPanelComponent.get_item_names">
|
|
||||||
<a class="viewcode-back" href="../../components.html#components.navbar_component.NavigationPanelComponent.get_item_names">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">get_item_names</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">locator</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="n">Locator</span><span class="p">)</span> <span class="o">-></span> <span class="nb">list</span><span class="p">[</span><span class="nb">str</span><span class="p">]:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Возвращает тексты всех элементов по указанному локатору.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Args:</span>
|
|
||||||
<span class="sd"> locator: Локатор элементов или строка с CSS/XPath.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Returns:</span>
|
|
||||||
<span class="sd"> Список текстов элементов.</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
|
|
||||||
<span class="n">loc</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_locator</span><span class="p">(</span><span class="n">locator</span><span class="p">)</span>
|
|
||||||
<span class="k">return</span> <span class="n">loc</span><span class="o">.</span><span class="n">all_inner_texts</span><span class="p">()</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="NavigationPanelComponent.traverse_panel_tree">
|
|
||||||
<a class="viewcode-back" href="../../components.html#components.navbar_component.NavigationPanelComponent.traverse_panel_tree">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">traverse_panel_tree</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">node_root_locator</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="n">Locator</span><span class="p">,</span> <span class="n">level</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> <span class="n">debug</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""</span>
|
|
||||||
<span class="sd"> Рекурсивно обходит дерево v-treeview и выводит информацию об элементах.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Args:</span>
|
|
||||||
<span class="sd"> node_root_locator: Локатор для поиска корневых элементов дерева.</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">traverse_tree</span><span class="p">(</span><span class="n">page</span><span class="p">,</span> <span class="n">root_locator</span><span class="p">,</span> <span class="n">level</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> <span class="n">debug</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span>
|
|
||||||
<span class="c1"># Находим все локаторы корневых узлов на текущем уровне</span>
|
|
||||||
<span class="n">nodes_count</span> <span class="o">=</span> <span class="n">root_locator</span><span class="o">.</span><span class="n">locator</span><span class="p">(</span><span class="s1">'>div.v-treeview-node'</span><span class="p">)</span><span class="o">.</span><span class="n">count</span><span class="p">()</span>
|
|
||||||
|
|
||||||
<span class="k">for</span> <span class="n">index</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">nodes_count</span><span class="p">):</span>
|
|
||||||
<span class="n">node</span> <span class="o">=</span> <span class="n">root_locator</span><span class="o">.</span><span class="n">locator</span><span class="p">(</span><span class="sa">f</span><span class="s2">">div:nth-child(</span><span class="si">{</span><span class="n">index</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="mi">1</span><span class="si">}</span><span class="s2">)"</span><span class="p">)</span><span class="o">.</span><span class="n">first</span>
|
|
||||||
|
|
||||||
<span class="c1"># Извлекаем текст и аттрибуты из корневого узла</span>
|
|
||||||
<span class="n">node_text</span> <span class="o">=</span> <span class="n">node</span><span class="o">.</span><span class="n">inner_text</span><span class="p">()</span>
|
|
||||||
<span class="n">node_class_attr</span> <span class="o">=</span> <span class="n">node</span><span class="o">.</span><span class="n">get_attribute</span><span class="p">(</span><span class="s1">'class'</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="n">is_expanded</span> <span class="o">=</span> <span class="kc">False</span>
|
|
||||||
<span class="n">has_children</span> <span class="o">=</span> <span class="kc">False</span>
|
|
||||||
|
|
||||||
<span class="c1"># Проверяем лист это или начало поддерева</span>
|
|
||||||
<span class="k">if</span> <span class="s2">"v-treeview-node--leaf"</span> <span class="ow">in</span> <span class="n">node_class_attr</span><span class="p">:</span>
|
|
||||||
<span class="k">if</span> <span class="n">debug</span><span class="p">:</span>
|
|
||||||
<span class="n">leaf_msg</span> <span class="o">=</span> <span class="sa">f</span><span class="s1">'[</span><span class="si">{</span><span class="n">level</span><span class="si">}</span><span class="s1">][</span><span class="si">{</span><span class="n">index</span><span class="si">}</span><span class="s1">] </span><span class="si">{</span><span class="n">node_text</span><span class="si">}</span><span class="s1"> (LEAF, Expanded: </span><span class="si">{</span><span class="n">is_expanded</span><span class="si">}</span><span class="s1">'</span>
|
|
||||||
<span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">leaf_msg</span><span class="si">}</span><span class="s2">, Has Children: </span><span class="si">{</span><span class="n">has_children</span><span class="si">}</span><span class="s2">)"</span><span class="p">)</span>
|
|
||||||
<span class="nb">print</span><span class="p">(</span><span class="s2">"-----------------------------------------"</span><span class="p">)</span>
|
|
||||||
<span class="k">else</span><span class="p">:</span>
|
|
||||||
<span class="c1"># Проверяем, является ли узел раскрытым</span>
|
|
||||||
<span class="n">class_attr</span> <span class="o">=</span> <span class="n">node</span><span class="o">.</span><span class="n">locator</span><span class="p">(</span><span class="n">NavigationPanelLocators</span><span class="o">.</span><span class="n">TOGGLE_BUTTON</span><span class="p">)</span><span class="o">.</span><span class="n">get_attribute</span><span class="p">(</span><span class="s1">'class'</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="k">if</span> <span class="s2">"v-treeview-node__toggle--open"</span> <span class="ow">in</span> <span class="n">class_attr</span><span class="p">:</span>
|
|
||||||
<span class="n">is_expanded</span> <span class="o">=</span> <span class="kc">True</span>
|
|
||||||
|
|
||||||
<span class="c1"># Если узел закрыт можем его раскрыть</span>
|
|
||||||
<span class="k">if</span> <span class="n">is_expanded</span> <span class="ow">is</span> <span class="kc">False</span><span class="p">:</span>
|
|
||||||
<span class="n">toggle_button</span> <span class="o">=</span> <span class="n">node</span><span class="o">.</span><span class="n">locator</span><span class="p">(</span><span class="n">NavigationPanelLocators</span><span class="o">.</span><span class="n">TOGGLE_BUTTON</span><span class="p">)</span>
|
|
||||||
<span class="n">toggle_button</span><span class="o">.</span><span class="n">click</span><span class="p">()</span>
|
|
||||||
<span class="c1"># Ждем, пока дочерние элементы прогрузятся/появятся</span>
|
|
||||||
<span class="n">page</span><span class="o">.</span><span class="n">wait_for_timeout</span><span class="p">(</span><span class="mi">300</span><span class="p">)</span>
|
|
||||||
<span class="n">is_expanded</span> <span class="o">=</span> <span class="kc">True</span>
|
|
||||||
|
|
||||||
<span class="c1"># Проверяем, имеет ли узел дочерние элементы</span>
|
|
||||||
<span class="n">children_count</span> <span class="o">=</span> <span class="n">node</span><span class="o">.</span><span class="n">locator</span><span class="p">(</span><span class="s1">'>div.v-treeview-node__children'</span><span class="p">)</span><span class="o">.</span><span class="n">count</span><span class="p">()</span>
|
|
||||||
<span class="n">content</span> <span class="o">=</span> <span class="n">node</span><span class="o">.</span><span class="n">locator</span><span class="p">(</span><span class="s1">'>div.v-treeview-node__children'</span><span class="p">)</span><span class="o">.</span><span class="n">inner_html</span><span class="p">()</span>
|
|
||||||
<span class="k">if</span> <span class="n">children_count</span> <span class="o">></span> <span class="mi">0</span> <span class="ow">and</span> <span class="nb">len</span><span class="p">(</span><span class="n">content</span><span class="p">)</span> <span class="o">!=</span> <span class="mi">0</span><span class="p">:</span>
|
|
||||||
<span class="n">has_children</span> <span class="o">=</span> <span class="kc">True</span>
|
|
||||||
|
|
||||||
<span class="n">edited_node_text</span> <span class="o">=</span> <span class="n">node_text</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="s2">"expand_more</span><span class="se">\n</span><span class="s2">"</span><span class="p">,</span> <span class="s2">""</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="k">if</span> <span class="n">debug</span><span class="p">:</span>
|
|
||||||
<span class="c1"># Выводим информацию об узле</span>
|
|
||||||
<span class="n">node_msg</span> <span class="o">=</span> <span class="sa">f</span><span class="s1">'[</span><span class="si">{</span><span class="n">level</span><span class="si">}</span><span class="s1">][</span><span class="si">{</span><span class="n">index</span><span class="si">}</span><span class="s1">] </span><span class="si">{</span><span class="n">edited_node_text</span><span class="si">}</span><span class="s1"> (NODE, Expanded: </span><span class="si">{</span><span class="n">is_expanded</span><span class="si">}</span><span class="s1">'</span>
|
|
||||||
<span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">node_msg</span><span class="si">}</span><span class="s2">, Has Children: </span><span class="si">{</span><span class="n">has_children</span><span class="si">}</span><span class="s2">)"</span><span class="p">)</span>
|
|
||||||
<span class="nb">print</span><span class="p">(</span><span class="s2">"-----------------------------------------"</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="c1"># Рекурсивный вызов для дочерних элементов</span>
|
|
||||||
<span class="c1"># Ищем дочерние элементы *внутри* текущего узла</span>
|
|
||||||
<span class="k">if</span> <span class="n">has_children</span> <span class="ow">and</span> <span class="n">is_expanded</span><span class="p">:</span>
|
|
||||||
<span class="n">child_nodes_locator</span> <span class="o">=</span> <span class="n">root_locator</span><span class="o">.</span><span class="n">locator</span><span class="p">(</span>
|
|
||||||
<span class="sa">f</span><span class="s2">">div:nth-child(</span><span class="si">{</span><span class="n">index</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="mi">1</span><span class="si">}</span><span class="s2">)"</span>
|
|
||||||
<span class="p">)</span><span class="o">.</span><span class="n">locator</span><span class="p">(</span><span class="s1">'>div.v-treeview-node__children'</span><span class="p">)</span>
|
|
||||||
<span class="n">traverse_tree</span><span class="p">(</span><span class="n">page</span><span class="p">,</span> <span class="n">child_nodes_locator</span><span class="p">,</span> <span class="n">level</span><span class="o">+</span><span class="mi">1</span><span class="p">,</span> <span class="n">debug</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="n">root_locator</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_locator</span><span class="p">(</span><span class="n">node_root_locator</span><span class="p">)</span>
|
|
||||||
<span class="n">traverse_tree</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">page</span><span class="p">,</span> <span class="n">root_locator</span><span class="p">,</span> <span class="n">level</span><span class="o">=</span><span class="n">level</span><span class="p">,</span> <span class="n">debug</span><span class="o">=</span><span class="n">debug</span><span class="p">)</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<span class="c1"># Проверки:</span>
|
|
||||||
<div class="viewcode-block" id="NavigationPanelComponent.check_item_visibility">
|
|
||||||
<a class="viewcode-back" href="../../components.html#components.navbar_component.NavigationPanelComponent.check_item_visibility">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">check_item_visibility</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">locator</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="n">Locator</span><span class="p">,</span> <span class="n">item_name</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Проверяет видимость элемента с указанным текстом.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Args:</span>
|
|
||||||
<span class="sd"> locator: Локатор элемента или строка с CSS/XPath.</span>
|
|
||||||
<span class="sd"> item_name: Текст элемента для проверки.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Note:</span>
|
|
||||||
<span class="sd"> Временная обработка для элементов с текстом 'Шаблоны'.</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
|
|
||||||
<span class="n">msg</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"Navigation panel item '</span><span class="si">{</span><span class="n">item_name</span><span class="si">}</span><span class="s2">' is not visible"</span>
|
|
||||||
|
|
||||||
<span class="c1">## временно: в навигационной панели есть две панели с именем Шаблоны</span>
|
|
||||||
<span class="c1">## для их различия добавлены индексы Шаблоны_1 для Настройки/Шаблоны</span>
|
|
||||||
<span class="c1">## Шаблоны_2 для Настройки/ZTP/Шаблоны</span>
|
|
||||||
<span class="n">loc</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_locator</span><span class="p">(</span><span class="n">locator</span><span class="p">)</span>
|
|
||||||
<span class="k">if</span> <span class="n">item_name</span> <span class="o">==</span> <span class="s2">"Шаблоны_1"</span><span class="p">:</span>
|
|
||||||
<span class="n">loc</span> <span class="o">=</span> <span class="n">loc</span><span class="o">.</span><span class="n">get_by_text</span><span class="p">(</span><span class="s2">"Шаблоны"</span><span class="p">)</span><span class="o">.</span><span class="n">first</span>
|
|
||||||
<span class="k">elif</span> <span class="n">item_name</span> <span class="o">==</span> <span class="s2">"Шаблоны_2"</span><span class="p">:</span>
|
|
||||||
<span class="n">loc</span> <span class="o">=</span> <span class="n">loc</span><span class="o">.</span><span class="n">get_by_text</span><span class="p">(</span><span class="s2">"Шаблоны"</span><span class="p">)</span><span class="o">.</span><span class="n">nth</span><span class="p">(</span><span class="mi">1</span><span class="p">)</span>
|
|
||||||
<span class="k">else</span><span class="p">:</span>
|
|
||||||
<span class="n">loc</span> <span class="o">=</span> <span class="n">loc</span><span class="o">.</span><span class="n">get_by_text</span><span class="p">(</span><span class="n">item_name</span><span class="p">)</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">check_visibility</span><span class="p">(</span><span class="n">loc</span><span class="p">,</span> <span class="n">msg</span><span class="p">)</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="NavigationPanelComponent.is_item_visible">
|
|
||||||
<a class="viewcode-back" href="../../components.html#components.navbar_component.NavigationPanelComponent.is_item_visible">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">is_item_visible</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">locator</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="n">Locator</span><span class="p">,</span> <span class="n">item_name</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="nb">bool</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""</span>
|
|
||||||
<span class="sd"> Проверяет видимость элемента с указанным текстом без выбрасывания исключения.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Args:</span>
|
|
||||||
<span class="sd"> locator: Локатор элемента или строка с CSS/XPath.</span>
|
|
||||||
<span class="sd"> item_name: Текст элемента для проверки.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Returns:</span>
|
|
||||||
<span class="sd"> bool: True если элемент видим, False если нет.</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
<span class="n">element_locator</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">page</span><span class="o">.</span><span class="n">locator</span><span class="p">(</span><span class="n">locator</span><span class="p">)</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span><span class="n">has_text</span><span class="o">=</span><span class="n">item_name</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="c1"># Сначала проверяем что элемент вообще существует</span>
|
|
||||||
<span class="k">if</span> <span class="n">element_locator</span><span class="o">.</span><span class="n">count</span><span class="p">()</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span>
|
|
||||||
<span class="k">return</span> <span class="kc">False</span>
|
|
||||||
|
|
||||||
<span class="k">return</span> <span class="n">element_locator</span><span class="o">.</span><span class="n">is_visible</span><span class="p">()</span></div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</pre></div>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<footer>
|
|
||||||
|
|
||||||
<hr/>
|
|
||||||
|
|
||||||
<div role="contentinfo">
|
|
||||||
<p>© Авторские права 2025, NPO KIS. </p>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
Собрано при помощи <a href="https://www.sphinx-doc.org/">Sphinx</a> с использованием
|
|
||||||
<a href="https://github.com/readthedocs/sphinx_rtd_theme">темы,</a>
|
|
||||||
предоставленной <a href="https://readthedocs.org">Read the Docs</a>.
|
|
||||||
|
|
||||||
|
|
||||||
</footer>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</section>
|
|
||||||
</div>
|
|
||||||
<script>
|
|
||||||
jQuery(function () {
|
|
||||||
SphinxRtdTheme.Navigation.enable(true);
|
|
||||||
});
|
|
||||||
</script>
|
|
||||||
|
|
||||||
</body>
|
|
||||||
</html>
|
|
||||||
|
|
@ -1,215 +0,0 @@
|
||||||
|
|
||||||
|
|
||||||
<!DOCTYPE html>
|
|
||||||
<html class="writer-html5" lang="ru" data-content_root="../../">
|
|
||||||
<head>
|
|
||||||
<meta charset="utf-8" />
|
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
||||||
<title>components.settings_form_component — документация e-nms-qa-automation 0.1.0</title>
|
|
||||||
<link rel="stylesheet" type="text/css" href="../../_static/pygments.css?v=b86133f3" />
|
|
||||||
<link rel="stylesheet" type="text/css" href="../../_static/css/theme.css?v=e59714d7" />
|
|
||||||
|
|
||||||
|
|
||||||
<script src="../../_static/jquery.js?v=5d32c60e"></script>
|
|
||||||
<script src="../../_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script>
|
|
||||||
<script src="../../_static/documentation_options.js?v=6ff560e8"></script>
|
|
||||||
<script src="../../_static/doctools.js?v=9bcbadda"></script>
|
|
||||||
<script src="../../_static/sphinx_highlight.js?v=dc90522c"></script>
|
|
||||||
<script src="../../_static/translations.js?v=cd1d70c9"></script>
|
|
||||||
<script src="../../_static/js/theme.js"></script>
|
|
||||||
<link rel="index" title="Алфавитный указатель" href="../../genindex.html" />
|
|
||||||
<link rel="search" title="Поиск" href="../../search.html" />
|
|
||||||
</head>
|
|
||||||
|
|
||||||
<body class="wy-body-for-nav">
|
|
||||||
<div class="wy-grid-for-nav">
|
|
||||||
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
|
|
||||||
<div class="wy-side-scroll">
|
|
||||||
<div class="wy-side-nav-search" >
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<a href="../../index.html" class="icon icon-home">
|
|
||||||
e-nms-qa-automation
|
|
||||||
</a>
|
|
||||||
<div role="search">
|
|
||||||
<form id="rtd-search-form" class="wy-form" action="../../search.html" method="get">
|
|
||||||
<input type="text" name="q" placeholder="Поиск в документации" aria-label="Поиск в документации" />
|
|
||||||
<input type="hidden" name="check_keywords" value="yes" />
|
|
||||||
<input type="hidden" name="area" value="default" />
|
|
||||||
</form>
|
|
||||||
</div>
|
|
||||||
</div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Меню навигации">
|
|
||||||
<!-- Local TOC -->
|
|
||||||
<div class="local-toc"></div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</nav>
|
|
||||||
|
|
||||||
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Меню навигации для мобильных устройств" >
|
|
||||||
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
|
|
||||||
<a href="../../index.html">e-nms-qa-automation</a>
|
|
||||||
</nav>
|
|
||||||
|
|
||||||
<div class="wy-nav-content">
|
|
||||||
<div class="rst-content">
|
|
||||||
<div role="navigation" aria-label="Навигация по страницам">
|
|
||||||
<ul class="wy-breadcrumbs">
|
|
||||||
<li><a href="../../index.html" class="icon icon-home" aria-label="Home"></a></li>
|
|
||||||
<li class="breadcrumb-item"><a href="../index.html">Код модуля</a></li>
|
|
||||||
<li class="breadcrumb-item active">components.settings_form_component</li>
|
|
||||||
<li class="wy-breadcrumbs-aside">
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
<hr/>
|
|
||||||
</div>
|
|
||||||
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
|
|
||||||
<div itemprop="articleBody">
|
|
||||||
|
|
||||||
<h1>Исходный код components.settings_form_component</h1><div class="highlight"><pre>
|
|
||||||
<span></span><span class="sd">"""Модуль компонента формы ввода и отображения полей настроек. Содержит класс для работы с формами ввода</span>
|
|
||||||
<span class="sd">и отображения полей настроек,их элементами и проверками."""</span>
|
|
||||||
|
|
||||||
<span class="kn">from</span><span class="w"> </span><span class="nn">playwright.sync_api</span><span class="w"> </span><span class="kn">import</span> <span class="n">Page</span><span class="p">,</span> <span class="n">Locator</span>
|
|
||||||
<span class="kn">from</span><span class="w"> </span><span class="nn">tools.logger</span><span class="w"> </span><span class="kn">import</span> <span class="n">get_logger</span>
|
|
||||||
<span class="kn">from</span><span class="w"> </span><span class="nn">locators.settings_form_locators</span><span class="w"> </span><span class="kn">import</span> <span class="n">SettingsFormLocators</span>
|
|
||||||
<span class="kn">from</span><span class="w"> </span><span class="nn">elements.button_element</span><span class="w"> </span><span class="kn">import</span> <span class="n">Button</span>
|
|
||||||
<span class="kn">from</span><span class="w"> </span><span class="nn">components.toolbar_component</span><span class="w"> </span><span class="kn">import</span> <span class="n">ToolbarComponent</span>
|
|
||||||
<span class="kn">from</span><span class="w"> </span><span class="nn">components.base_component</span><span class="w"> </span><span class="kn">import</span> <span class="n">BaseComponent</span>
|
|
||||||
|
|
||||||
<span class="n">logger</span> <span class="o">=</span> <span class="n">get_logger</span><span class="p">(</span><span class="s2">"MODAL_WINDOW"</span><span class="p">)</span>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="SettingsFormComponent">
|
|
||||||
<a class="viewcode-back" href="../../components.html#components.settings_form_component.SettingsFormComponent">[документация]</a>
|
|
||||||
<span class="k">class</span><span class="w"> </span><span class="nc">SettingsFormComponent</span><span class="p">(</span><span class="n">BaseComponent</span><span class="p">):</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Компонент формы ввода и отображения полей настроек. Предоставляет методы для взаимодействия с формой,</span>
|
|
||||||
<span class="sd"> ее содержимым и проверок."""</span>
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="SettingsFormComponent.__init__">
|
|
||||||
<a class="viewcode-back" href="../../components.html#components.settings_form_component.SettingsFormComponent.__init__">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">page</span><span class="p">:</span> <span class="n">Page</span><span class="p">):</span>
|
|
||||||
<span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="fm">__init__</span><span class="p">(</span><span class="n">page</span><span class="p">)</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">toolbar</span> <span class="o">=</span> <span class="n">ToolbarComponent</span><span class="p">(</span><span class="n">page</span><span class="p">,</span> <span class="s2">""</span><span class="p">)</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">content_items</span> <span class="o">=</span> <span class="p">{}</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">buttons</span> <span class="o">=</span> <span class="p">[]</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<span class="c1"># Действия:</span>
|
|
||||||
<div class="viewcode-block" id="SettingsFormComponent.add_content_item">
|
|
||||||
<a class="viewcode-back" href="../../components.html#components.settings_form_component.SettingsFormComponent.add_content_item">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">add_content_item</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">item</span><span class="p">:</span> <span class="nb">object</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Добавляет элемент содержимого в форму по заданному имени."""</span>
|
|
||||||
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">content_items</span><span class="p">[</span><span class="n">name</span><span class="p">]</span> <span class="o">=</span> <span class="n">item</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="SettingsFormComponent.get_content_item">
|
|
||||||
<a class="viewcode-back" href="../../components.html#components.settings_form_component.SettingsFormComponent.get_content_item">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">get_content_item</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="nb">object</span> <span class="o">|</span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Возвращает элемент содержимого по имени или None, если не найден."""</span>
|
|
||||||
|
|
||||||
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">content_items</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">name</span><span class="p">)</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="SettingsFormComponent.add_toolbar_title">
|
|
||||||
<a class="viewcode-back" href="../../components.html#components.settings_form_component.SettingsFormComponent.add_toolbar_title">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">add_toolbar_title</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">title</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Добавляет заголовок в панель инструментов модального окна."""</span>
|
|
||||||
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">toolbar</span><span class="o">.</span><span class="n">add_title</span><span class="p">(</span><span class="n">title</span><span class="p">)</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="SettingsFormComponent.add_button">
|
|
||||||
<a class="viewcode-back" href="../../components.html#components.settings_form_component.SettingsFormComponent.add_button">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">add_button</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">locator</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">name</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Добавляет кнопку в форму."""</span>
|
|
||||||
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">buttons</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">Button</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">page</span><span class="p">,</span> <span class="n">locator</span><span class="p">,</span> <span class="n">name</span><span class="p">))</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="SettingsFormComponent.get_button_by_name">
|
|
||||||
<a class="viewcode-back" href="../../components.html#components.settings_form_component.SettingsFormComponent.get_button_by_name">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">get_button_by_name</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="n">Button</span> <span class="o">|</span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Ищет и возвращает кнопку по имени или None, если не найдена."""</span>
|
|
||||||
|
|
||||||
<span class="k">for</span> <span class="n">button</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">buttons</span><span class="p">:</span>
|
|
||||||
<span class="k">if</span> <span class="n">button</span><span class="o">.</span><span class="n">name</span> <span class="o">==</span> <span class="n">name</span><span class="p">:</span>
|
|
||||||
<span class="k">return</span> <span class="n">button</span>
|
|
||||||
<span class="k">return</span> <span class="kc">None</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="SettingsFormComponent.click_button">
|
|
||||||
<a class="viewcode-back" href="../../components.html#components.settings_form_component.SettingsFormComponent.click_button">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">click_button</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Кликает по кнопке с заданным именем. Вызывает ошибку, если не найдена."""</span>
|
|
||||||
|
|
||||||
<span class="n">button</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_button_by_name</span><span class="p">(</span><span class="n">name</span><span class="p">)</span>
|
|
||||||
<span class="k">if</span> <span class="n">button</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="k">assert</span> <span class="kc">False</span><span class="p">,</span> <span class="sa">f</span><span class="s2">"Button with name '</span><span class="si">{</span><span class="n">name</span><span class="si">}</span><span class="s2">' not found"</span>
|
|
||||||
<span class="n">button</span><span class="o">.</span><span class="n">click</span><span class="p">()</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<span class="c1"># Проверки:</span>
|
|
||||||
<div class="viewcode-block" id="SettingsFormComponent.check_vertical_scrolling">
|
|
||||||
<a class="viewcode-back" href="../../components.html#components.settings_form_component.SettingsFormComponent.check_vertical_scrolling">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">check_vertical_scrolling</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">locator</span><span class="p">:</span> <span class="nb">str</span><span class="o">|</span> <span class="n">Locator</span><span class="p">)</span> <span class="o">-></span> <span class="nb">bool</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Проверяет возможность вертикальной прокрутки формы."""</span>
|
|
||||||
|
|
||||||
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">is_scrollable_vertically</span><span class="p">(</span><span class="n">locator</span><span class="p">)</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="SettingsFormComponent.check_button_visibility">
|
|
||||||
<a class="viewcode-back" href="../../components.html#components.settings_form_component.SettingsFormComponent.check_button_visibility">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">check_button_visibility</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Проверяет наличие кнопки по имени. Вызывает ошибку, если не найдена."""</span>
|
|
||||||
|
|
||||||
<span class="n">button</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_button_by_name</span><span class="p">(</span><span class="n">name</span><span class="p">)</span>
|
|
||||||
<span class="k">if</span> <span class="n">button</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="k">assert</span> <span class="kc">False</span><span class="p">,</span> <span class="sa">f</span><span class="s2">"Button with name '</span><span class="si">{</span><span class="n">name</span><span class="si">}</span><span class="s2">' not found"</span>
|
|
||||||
<span class="n">button</span><span class="o">.</span><span class="n">check_visibility</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Button with name '</span><span class="si">{</span><span class="n">name</span><span class="si">}</span><span class="s2">' is missing"</span><span class="p">)</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="SettingsFormComponent.should_be_toolbar">
|
|
||||||
<a class="viewcode-back" href="../../components.html#components.settings_form_component.SettingsFormComponent.should_be_toolbar">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">should_be_toolbar</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Проверяет наличие тулбара.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Raises:</span>
|
|
||||||
<span class="sd"> AssertionError: Если тулбар или кнопка редактирования отсутствуют.</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">toolbar</span><span class="o">.</span><span class="n">check_toolbar_presence_by_locator_and_title</span><span class="p">(</span><span class="n">SettingsFormLocators</span><span class="o">.</span><span class="n">SETTTINGS_FORM_SCROLL_CONTAINER</span><span class="p">,</span>
|
|
||||||
<span class="s2">"Session settings form toolbar is missing"</span><span class="p">)</span></div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</pre></div>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<footer>
|
|
||||||
|
|
||||||
<hr/>
|
|
||||||
|
|
||||||
<div role="contentinfo">
|
|
||||||
<p>© Авторские права 2025, NPO KIS. </p>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
Собрано при помощи <a href="https://www.sphinx-doc.org/">Sphinx</a> с использованием
|
|
||||||
<a href="https://github.com/readthedocs/sphinx_rtd_theme">темы,</a>
|
|
||||||
предоставленной <a href="https://readthedocs.org">Read the Docs</a>.
|
|
||||||
|
|
||||||
|
|
||||||
</footer>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</section>
|
|
||||||
</div>
|
|
||||||
<script>
|
|
||||||
jQuery(function () {
|
|
||||||
SphinxRtdTheme.Navigation.enable(true);
|
|
||||||
});
|
|
||||||
</script>
|
|
||||||
|
|
||||||
</body>
|
|
||||||
</html>
|
|
||||||
|
|
@ -1,442 +0,0 @@
|
||||||
|
|
||||||
|
|
||||||
<!DOCTYPE html>
|
|
||||||
<html class="writer-html5" lang="ru" data-content_root="../../">
|
|
||||||
<head>
|
|
||||||
<meta charset="utf-8" />
|
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
||||||
<title>components.table_component — документация e-nms-qa-automation 0.1.0</title>
|
|
||||||
<link rel="stylesheet" type="text/css" href="../../_static/pygments.css?v=b86133f3" />
|
|
||||||
<link rel="stylesheet" type="text/css" href="../../_static/css/theme.css?v=e59714d7" />
|
|
||||||
|
|
||||||
|
|
||||||
<script src="../../_static/jquery.js?v=5d32c60e"></script>
|
|
||||||
<script src="../../_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script>
|
|
||||||
<script src="../../_static/documentation_options.js?v=6ff560e8"></script>
|
|
||||||
<script src="../../_static/doctools.js?v=9bcbadda"></script>
|
|
||||||
<script src="../../_static/sphinx_highlight.js?v=dc90522c"></script>
|
|
||||||
<script src="../../_static/translations.js?v=cd1d70c9"></script>
|
|
||||||
<script src="../../_static/js/theme.js"></script>
|
|
||||||
<link rel="index" title="Алфавитный указатель" href="../../genindex.html" />
|
|
||||||
<link rel="search" title="Поиск" href="../../search.html" />
|
|
||||||
</head>
|
|
||||||
|
|
||||||
<body class="wy-body-for-nav">
|
|
||||||
<div class="wy-grid-for-nav">
|
|
||||||
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
|
|
||||||
<div class="wy-side-scroll">
|
|
||||||
<div class="wy-side-nav-search" >
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<a href="../../index.html" class="icon icon-home">
|
|
||||||
e-nms-qa-automation
|
|
||||||
</a>
|
|
||||||
<div role="search">
|
|
||||||
<form id="rtd-search-form" class="wy-form" action="../../search.html" method="get">
|
|
||||||
<input type="text" name="q" placeholder="Поиск в документации" aria-label="Поиск в документации" />
|
|
||||||
<input type="hidden" name="check_keywords" value="yes" />
|
|
||||||
<input type="hidden" name="area" value="default" />
|
|
||||||
</form>
|
|
||||||
</div>
|
|
||||||
</div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Меню навигации">
|
|
||||||
<!-- Local TOC -->
|
|
||||||
<div class="local-toc"></div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</nav>
|
|
||||||
|
|
||||||
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Меню навигации для мобильных устройств" >
|
|
||||||
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
|
|
||||||
<a href="../../index.html">e-nms-qa-automation</a>
|
|
||||||
</nav>
|
|
||||||
|
|
||||||
<div class="wy-nav-content">
|
|
||||||
<div class="rst-content">
|
|
||||||
<div role="navigation" aria-label="Навигация по страницам">
|
|
||||||
<ul class="wy-breadcrumbs">
|
|
||||||
<li><a href="../../index.html" class="icon icon-home" aria-label="Home"></a></li>
|
|
||||||
<li class="breadcrumb-item"><a href="../index.html">Код модуля</a></li>
|
|
||||||
<li class="breadcrumb-item active">components.table_component</li>
|
|
||||||
<li class="wy-breadcrumbs-aside">
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
<hr/>
|
|
||||||
</div>
|
|
||||||
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
|
|
||||||
<div itemprop="articleBody">
|
|
||||||
|
|
||||||
<h1>Исходный код components.table_component</h1><div class="highlight"><pre>
|
|
||||||
<span></span><span class="sd">"""Модуль компонента таблицы. Содержит класс для работы с табличными данными."""</span>
|
|
||||||
|
|
||||||
<span class="kn">from</span><span class="w"> </span><span class="nn">datetime</span><span class="w"> </span><span class="kn">import</span> <span class="n">datetime</span>
|
|
||||||
<span class="kn">from</span><span class="w"> </span><span class="nn">playwright.sync_api</span><span class="w"> </span><span class="kn">import</span> <span class="n">Page</span><span class="p">,</span> <span class="n">expect</span><span class="p">,</span> <span class="n">Locator</span>
|
|
||||||
<span class="kn">from</span><span class="w"> </span><span class="nn">tools.logger</span><span class="w"> </span><span class="kn">import</span> <span class="n">get_logger</span>
|
|
||||||
<span class="kn">from</span><span class="w"> </span><span class="nn">components.base_component</span><span class="w"> </span><span class="kn">import</span> <span class="n">BaseComponent</span>
|
|
||||||
|
|
||||||
|
|
||||||
<span class="n">logger</span> <span class="o">=</span> <span class="n">get_logger</span><span class="p">(</span><span class="s2">"TABLE"</span><span class="p">)</span>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="TableComponent">
|
|
||||||
<a class="viewcode-back" href="../../components.html#components.table_component.TableComponent">[документация]</a>
|
|
||||||
<span class="k">class</span><span class="w"> </span><span class="nc">TableComponent</span><span class="p">(</span><span class="n">BaseComponent</span><span class="p">):</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Компонент таблицы. Предоставляет методы для работы с табличными данными."""</span>
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="TableComponent.__init__">
|
|
||||||
<a class="viewcode-back" href="../../components.html#components.table_component.TableComponent.__init__">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">page</span><span class="p">:</span> <span class="n">Page</span><span class="p">):</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Инициализирует компонент таблицы.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Args:</span>
|
|
||||||
<span class="sd"> page: Экземпляр страницы Playwright.</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
|
|
||||||
<span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="fm">__init__</span><span class="p">(</span><span class="n">page</span><span class="p">)</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<span class="c1"># Действия:</span>
|
|
||||||
<div class="viewcode-block" id="TableComponent.click_arrow_button">
|
|
||||||
<a class="viewcode-back" href="../../components.html#components.table_component.TableComponent.click_arrow_button">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">click_arrow_button</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">table_locator</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="n">Locator</span><span class="p">,</span> <span class="n">index</span><span class="p">:</span> <span class="nb">int</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">""" Нажатие кнопки-стрелочки вверх/вниз в ячейке заголовка таблицы</span>
|
|
||||||
|
|
||||||
<span class="sd"> Args:</span>
|
|
||||||
<span class="sd"> table_locator: Локатор таблицы.</span>
|
|
||||||
<span class="sd"> index: Индекс ячейки в заголовке.</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
|
|
||||||
<span class="n">arrow_button</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_header_cell_button</span><span class="p">(</span><span class="n">table_locator</span><span class="p">,</span> <span class="n">index</span><span class="p">)</span>
|
|
||||||
<span class="k">assert</span> <span class="n">arrow_button</span><span class="o">.</span><span class="n">is_enabled</span><span class="p">(),</span> <span class="sa">f</span><span class="s2">"Arrow button is missing in </span><span class="si">{</span><span class="n">index</span><span class="si">}</span><span class="s2"> header cell"</span>
|
|
||||||
<span class="n">arrow_button</span><span class="o">.</span><span class="n">click</span><span class="p">()</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="TableComponent.datetime2timestamp">
|
|
||||||
<a class="viewcode-back" href="../../components.html#components.table_component.TableComponent.datetime2timestamp">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">datetime2timestamp</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">date_string</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="nb">float</span><span class="o">|</span><span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">""" Конвертация строкового представления даты и времени в Unix timestamp</span>
|
|
||||||
<span class="sd"> Args:</span>
|
|
||||||
<span class="sd"> date_string: Строка с датой и временем в формате d.m.Y H:M:S.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Returns:</span>
|
|
||||||
<span class="sd"> float: Unix timestamp.</span>
|
|
||||||
<span class="sd"> None: конвертация невозможна</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
|
|
||||||
<span class="c1"># Формат, соответствующий строке с датой и временем</span>
|
|
||||||
<span class="n">format_string</span> <span class="o">=</span> <span class="s2">"</span><span class="si">%d</span><span class="s2">.%m.%Y %H:%M:%S"</span>
|
|
||||||
|
|
||||||
<span class="k">try</span><span class="p">:</span>
|
|
||||||
<span class="n">date_object</span> <span class="o">=</span> <span class="n">datetime</span><span class="o">.</span><span class="n">strptime</span><span class="p">(</span><span class="n">date_string</span><span class="p">,</span> <span class="n">format_string</span><span class="p">)</span>
|
|
||||||
<span class="k">return</span> <span class="n">date_object</span><span class="o">.</span><span class="n">timestamp</span><span class="p">()</span>
|
|
||||||
<span class="k">except</span> <span class="ne">ValueError</span><span class="p">:</span>
|
|
||||||
<span class="k">return</span> <span class="kc">None</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="TableComponent.get_arrow_button_state">
|
|
||||||
<a class="viewcode-back" href="../../components.html#components.table_component.TableComponent.get_arrow_button_state">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">get_arrow_button_state</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">table_locator</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="n">Locator</span><span class="p">,</span> <span class="n">index</span><span class="p">:</span> <span class="nb">int</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">""" Получение состояния кнопки-стрелочки вверх/вниз в ячейке заголовка таблицы</span>
|
|
||||||
|
|
||||||
<span class="sd"> Args:</span>
|
|
||||||
<span class="sd"> table_locator: Локатор таблицы.</span>
|
|
||||||
<span class="sd"> index: Индекс ячейки в заголовке.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Returns:</span>
|
|
||||||
<span class="sd"> up, если это стрелочка вверх. down, если это стрелочка вниз.</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
|
|
||||||
<span class="n">arrow_button</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_header_cell_button</span><span class="p">(</span><span class="n">table_locator</span><span class="p">,</span> <span class="n">index</span><span class="p">)</span>
|
|
||||||
<span class="k">assert</span> <span class="n">arrow_button</span><span class="o">.</span><span class="n">is_enabled</span><span class="p">(),</span> <span class="sa">f</span><span class="s2">"Arrow button is missing in </span><span class="si">{</span><span class="n">index</span><span class="si">}</span><span class="s2"> header cell"</span>
|
|
||||||
|
|
||||||
<span class="n">state</span> <span class="o">=</span> <span class="n">arrow_button</span><span class="o">.</span><span class="n">inner_text</span><span class="p">()</span>
|
|
||||||
<span class="k">if</span> <span class="n">state</span> <span class="o">==</span> <span class="s2">"keyboard_arrow_up"</span><span class="p">:</span>
|
|
||||||
<span class="k">return</span> <span class="s2">"up"</span>
|
|
||||||
<span class="k">elif</span> <span class="n">state</span> <span class="o">==</span> <span class="s2">"keyboard_arrow_down"</span><span class="p">:</span>
|
|
||||||
<span class="k">return</span> <span class="s2">"down"</span>
|
|
||||||
<span class="k">else</span><span class="p">:</span>
|
|
||||||
<span class="k">assert</span> <span class="kc">False</span><span class="p">,</span> <span class="sa">f</span><span class="s2">"Got unsupported arrow state: </span><span class="si">{</span><span class="n">state</span><span class="si">}</span><span class="s2">"</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="TableComponent.get_header_cell_button">
|
|
||||||
<a class="viewcode-back" href="../../components.html#components.table_component.TableComponent.get_header_cell_button">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">get_header_cell_button</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">table_locator</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="n">Locator</span><span class="p">,</span> <span class="n">index</span><span class="p">:</span> <span class="nb">int</span><span class="p">)</span> <span class="o">-></span> <span class="n">Locator</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">""" Поиск кнопки в ячейке заголовка таблицы</span>
|
|
||||||
|
|
||||||
<span class="sd"> Args:</span>
|
|
||||||
<span class="sd"> table_locator: Локатор таблицы.</span>
|
|
||||||
<span class="sd"> index: Индекс ячейки в заголовке.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Returns:</span>
|
|
||||||
<span class="sd"> Локатор строки кнопки.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Raises:</span>
|
|
||||||
<span class="sd"> AssertionError: Если индекс вне диапазона.</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
|
|
||||||
<span class="n">table</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_locator</span><span class="p">(</span><span class="n">table_locator</span><span class="p">)</span>
|
|
||||||
<span class="n">header_cells_count</span> <span class="o">=</span> <span class="n">table</span><span class="o">.</span><span class="n">locator</span><span class="p">(</span><span class="s2">"//thead/tr/th"</span><span class="p">)</span><span class="o">.</span><span class="n">count</span><span class="p">()</span>
|
|
||||||
<span class="k">assert</span> <span class="n">index</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">header_cells_count</span><span class="p">),</span> <span class="s2">"Header cell index is out of range"</span>
|
|
||||||
<span class="k">return</span> <span class="n">table</span><span class="o">.</span><span class="n">locator</span><span class="p">(</span><span class="s2">"//thead/tr/th"</span><span class="p">)</span><span class="o">.</span><span class="n">nth</span><span class="p">(</span><span class="n">index</span><span class="p">)</span><span class="o">.</span><span class="n">get_by_role</span><span class="p">(</span><span class="s2">"button"</span><span class="p">)</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="TableComponent.get_row_locator">
|
|
||||||
<a class="viewcode-back" href="../../components.html#components.table_component.TableComponent.get_row_locator">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">get_row_locator</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">table_locator</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="n">Locator</span><span class="p">,</span> <span class="n">row_index</span><span class="p">:</span> <span class="nb">int</span><span class="p">)</span> <span class="o">-></span> <span class="n">Locator</span> <span class="o">|</span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Возвращает локатор строки по индексу.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Args:</span>
|
|
||||||
<span class="sd"> table_locator: Локатор таблицы.</span>
|
|
||||||
<span class="sd"> row_index: Индекс строки.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Returns:</span>
|
|
||||||
<span class="sd"> Локатор строки или None, если индекс вне диапазона.</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
|
|
||||||
<span class="n">table</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_locator</span><span class="p">(</span><span class="n">table_locator</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="n">rows</span> <span class="o">=</span> <span class="n">table</span><span class="o">.</span><span class="n">locator</span><span class="p">(</span><span class="s2">"//tbody/tr"</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="k">if</span> <span class="n">row_index</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">rows</span><span class="o">.</span><span class="n">count</span><span class="p">()):</span>
|
|
||||||
<span class="k">return</span> <span class="n">rows</span><span class="o">.</span><span class="n">nth</span><span class="p">(</span><span class="n">row_index</span><span class="p">)</span>
|
|
||||||
<span class="k">else</span><span class="p">:</span>
|
|
||||||
<span class="k">return</span> <span class="kc">None</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="TableComponent.get_rows_count">
|
|
||||||
<a class="viewcode-back" href="../../components.html#components.table_component.TableComponent.get_rows_count">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">get_rows_count</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">locator</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="n">Locator</span><span class="p">)</span> <span class="o">-></span> <span class="nb">int</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Возвращает количество строк в таблице (без заголовка).</span>
|
|
||||||
|
|
||||||
<span class="sd"> Returns:</span>
|
|
||||||
<span class="sd"> int: Количество строк с данными.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Raises:</span>
|
|
||||||
<span class="sd"> AssertionError: Если таблица пуста.</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
|
|
||||||
<span class="n">table_content</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="n">locator</span><span class="p">)</span>
|
|
||||||
<span class="n">rows_count</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">table_content</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="k">if</span> <span class="n">rows_count</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span>
|
|
||||||
<span class="k">assert</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"The contents of the table are missing"</span>
|
|
||||||
|
|
||||||
<span class="k">return</span> <span class="n">rows_count</span> <span class="o">-</span> <span class="mi">1</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="TableComponent.read">
|
|
||||||
<a class="viewcode-back" href="../../components.html#components.table_component.TableComponent.read">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">read</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">locator</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="n">Locator</span><span class="p">)</span> <span class="o">-></span> <span class="nb">list</span><span class="p">[</span><span class="nb">list</span><span class="p">[</span><span class="nb">str</span><span class="p">]]:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Читает данные таблицы, включая заголовки.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Args:</span>
|
|
||||||
<span class="sd"> locator: Локатор таблицы.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Returns:</span>
|
|
||||||
<span class="sd"> Двумерный список с данными таблицы.</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
|
|
||||||
<span class="n">table_data</span> <span class="o">=</span> <span class="p">[]</span>
|
|
||||||
<span class="n">table</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_locator</span><span class="p">(</span><span class="n">locator</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="c1"># Чтение заголовка таблицы</span>
|
|
||||||
<span class="n">header_cells</span> <span class="o">=</span> <span class="n">table</span><span class="o">.</span><span class="n">locator</span><span class="p">(</span><span class="s2">"//thead/tr"</span><span class="p">)</span>
|
|
||||||
<span class="n">header_cell_text</span> <span class="o">=</span> <span class="n">header_cells</span><span class="o">.</span><span class="n">nth</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span><span class="o">.</span><span class="n">inner_text</span><span class="p">()</span>
|
|
||||||
<span class="n">header_data</span> <span class="o">=</span> <span class="n">header_cell_text</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s1">'</span><span class="se">\n</span><span class="s1">'</span><span class="p">)</span>
|
|
||||||
<span class="n">table_data</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">header_data</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="c1"># Чтение ячеек таблицы</span>
|
|
||||||
<span class="n">rows</span> <span class="o">=</span> <span class="n">table</span><span class="o">.</span><span class="n">locator</span><span class="p">(</span><span class="s2">"//tbody/tr"</span><span class="p">)</span>
|
|
||||||
<span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">rows</span><span class="o">.</span><span class="n">count</span><span class="p">()):</span>
|
|
||||||
<span class="n">row</span> <span class="o">=</span> <span class="n">rows</span><span class="o">.</span><span class="n">nth</span><span class="p">(</span><span class="n">i</span><span class="p">)</span>
|
|
||||||
<span class="n">cells</span> <span class="o">=</span> <span class="n">row</span><span class="o">.</span><span class="n">locator</span><span class="p">(</span><span class="s2">"td"</span><span class="p">)</span>
|
|
||||||
<span class="n">row_data</span> <span class="o">=</span> <span class="p">[]</span>
|
|
||||||
<span class="k">for</span> <span class="n">j</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">cells</span><span class="o">.</span><span class="n">count</span><span class="p">()):</span>
|
|
||||||
<span class="n">cell_text</span> <span class="o">=</span> <span class="n">cells</span><span class="o">.</span><span class="n">nth</span><span class="p">(</span><span class="n">j</span><span class="p">)</span><span class="o">.</span><span class="n">inner_text</span><span class="p">()</span>
|
|
||||||
<span class="n">row_data</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">cell_text</span><span class="p">)</span>
|
|
||||||
<span class="n">table_data</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">row_data</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="k">return</span> <span class="n">table_data</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<span class="c1"># Проверки:</span>
|
|
||||||
<div class="viewcode-block" id="TableComponent.check_table_headers">
|
|
||||||
<a class="viewcode-back" href="../../components.html#components.table_component.TableComponent.check_table_headers">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">check_table_headers</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">actual_headers</span><span class="p">,</span> <span class="n">expected_headers</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">""" Проверка соответствия заголовка таблицы ожидаемому"""</span>
|
|
||||||
|
|
||||||
<span class="n">is_equals</span> <span class="o">=</span> <span class="kc">True</span>
|
|
||||||
|
|
||||||
<span class="n">arrow_state</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"keyboard_arrow_down"</span><span class="p">,</span> <span class="s2">"keyboard_arrow_up"</span><span class="p">]</span>
|
|
||||||
|
|
||||||
<span class="k">for</span> <span class="n">item</span> <span class="ow">in</span> <span class="n">actual_headers</span><span class="p">:</span>
|
|
||||||
<span class="n">item</span> <span class="o">=</span> <span class="n">item</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span>
|
|
||||||
|
|
||||||
<span class="k">if</span> <span class="n">item</span> <span class="ow">in</span> <span class="n">arrow_state</span><span class="p">:</span>
|
|
||||||
<span class="k">continue</span>
|
|
||||||
|
|
||||||
<span class="k">if</span> <span class="n">item</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">expected_headers</span><span class="p">:</span>
|
|
||||||
<span class="n">is_equals</span> <span class="o">=</span> <span class="kc">False</span>
|
|
||||||
|
|
||||||
<span class="k">assert</span> <span class="n">is_equals</span><span class="p">,</span> \
|
|
||||||
<span class="sa">f</span><span class="s2">"Expected events table headers </span><span class="si">{</span><span class="n">expected_headers</span><span class="si">}</span><span class="s2"> are not equal </span><span class="si">{</span><span class="n">actual_headers</span><span class="si">}</span><span class="s2">"</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="TableComponent.check_content">
|
|
||||||
<a class="viewcode-back" href="../../components.html#components.table_component.TableComponent.check_content">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">check_content</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span>
|
|
||||||
<span class="n">locator</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="n">Locator</span><span class="p">,</span>
|
|
||||||
<span class="n">expected_headers</span><span class="p">:</span> <span class="nb">list</span><span class="p">[</span><span class="nb">str</span><span class="p">],</span>
|
|
||||||
<span class="n">check_table_not_empty</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Проверяет содержимое таблицы.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Проверяет заголовки и наличие данных в таблице.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Args:</span>
|
|
||||||
<span class="sd"> locator: Локатор таблицы.</span>
|
|
||||||
<span class="sd"> expected_headers: Список ожидаемых заголовков таблицы.</span>
|
|
||||||
<span class="sd"> check_table_not_empty: Флаг проверки, что таблица не пустая.</span>
|
|
||||||
<span class="sd"> По умолчанию True.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Raises:</span>
|
|
||||||
<span class="sd"> AssertionError: Если таблица пуста (при check_table_not_empty=True)</span>
|
|
||||||
<span class="sd"> или заголовки неверны.</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
|
|
||||||
<span class="n">table_content</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="n">locator</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">table_content</span><span class="p">)</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span>
|
|
||||||
<span class="k">assert</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"The contents of the table are missing"</span>
|
|
||||||
|
|
||||||
<span class="c1"># Проверка заголовков таблицы</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">check_table_headers</span><span class="p">(</span><span class="n">table_content</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="n">expected_headers</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="c1"># Проверка наличия данных в таблице</span>
|
|
||||||
<span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">table_content</span><span class="p">)</span> <span class="o">==</span> <span class="mi">1</span><span class="p">:</span>
|
|
||||||
<span class="k">if</span> <span class="n">check_table_not_empty</span><span class="p">:</span>
|
|
||||||
<span class="k">assert</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"Table body is missing"</span>
|
|
||||||
<span class="k">else</span><span class="p">:</span>
|
|
||||||
<span class="n">logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="s2">"Таблица пустая (не содержит строк с данными)"</span><span class="p">)</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="TableComponent.check_column_descending_order">
|
|
||||||
<a class="viewcode-back" href="../../components.html#components.table_component.TableComponent.check_column_descending_order">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">check_column_descending_order</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span>
|
|
||||||
<span class="n">locator</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="n">Locator</span><span class="p">,</span>
|
|
||||||
<span class="n">index</span><span class="p">:</span> <span class="nb">int</span><span class="p">,</span>
|
|
||||||
<span class="n">convert2timestamp</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> <span class="o">-></span> <span class="nb">bool</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Проверка, что заданный столбец таблицы упорядочен по убыванию.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Args:</span>
|
|
||||||
<span class="sd"> locator: Локатор таблицы.</span>
|
|
||||||
<span class="sd"> index: Индекс столбца.</span>
|
|
||||||
<span class="sd"> convert2timestamp: Конвертировать строковое представление даты и времени в Unix timestamp</span>
|
|
||||||
|
|
||||||
<span class="sd"> Returns:</span>
|
|
||||||
<span class="sd"> True, если столбец таблицы упорядочен по убыванию. Иначе: False</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
|
|
||||||
<span class="n">table_content</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="n">locator</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">table_content</span><span class="p">)</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span>
|
|
||||||
<span class="k">assert</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"The contents of the table are missing"</span>
|
|
||||||
|
|
||||||
<span class="k">del</span> <span class="n">table_content</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span>
|
|
||||||
|
|
||||||
<span class="k">assert</span> <span class="n">index</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">table_content</span><span class="p">[</span><span class="mi">0</span><span class="p">])),</span> \
|
|
||||||
<span class="s2">"Column index is out of range"</span>
|
|
||||||
<span class="n">column</span> <span class="o">=</span> <span class="p">[]</span>
|
|
||||||
<span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">table_content</span><span class="p">)):</span>
|
|
||||||
<span class="k">if</span> <span class="n">convert2timestamp</span><span class="p">:</span>
|
|
||||||
<span class="n">timestamp</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">datetime2timestamp</span><span class="p">(</span><span class="n">table_content</span><span class="p">[</span><span class="n">i</span><span class="p">][</span><span class="n">index</span><span class="p">])</span>
|
|
||||||
<span class="k">assert</span> <span class="n">timestamp</span><span class="p">,</span> <span class="sa">f</span><span class="s2">"Error conversation to timestamp for </span><span class="si">{</span><span class="n">table_content</span><span class="p">[</span><span class="n">i</span><span class="p">][</span><span class="n">index</span><span class="p">]</span><span class="si">}</span><span class="s2">"</span>
|
|
||||||
<span class="n">column</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">timestamp</span><span class="p">)</span>
|
|
||||||
<span class="k">else</span><span class="p">:</span>
|
|
||||||
<span class="n">column</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">table_content</span><span class="p">[</span><span class="n">i</span><span class="p">][</span><span class="n">index</span><span class="p">])</span>
|
|
||||||
|
|
||||||
<span class="k">return</span> <span class="nb">all</span><span class="p">(</span><span class="n">column</span><span class="p">[</span><span class="n">i</span><span class="p">]</span> <span class="o">>=</span> <span class="n">column</span><span class="p">[</span><span class="n">i</span><span class="o">+</span><span class="mi">1</span><span class="p">]</span> <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">column</span><span class="p">)</span> <span class="o">-</span> <span class="mi">1</span><span class="p">))</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="TableComponent.check_first_row_visibility">
|
|
||||||
<a class="viewcode-back" href="../../components.html#components.table_component.TableComponent.check_first_row_visibility">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">check_first_row_visibility</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">locator</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="n">Locator</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Проверяет видимость первой строки таблицы.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Args:</span>
|
|
||||||
<span class="sd"> locator: Локатор таблицы.</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
|
|
||||||
<span class="n">table</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_locator</span><span class="p">(</span><span class="n">locator</span><span class="p">)</span>
|
|
||||||
<span class="n">first_row</span> <span class="o">=</span> <span class="n">table</span><span class="o">.</span><span class="n">locator</span><span class="p">(</span><span class="s2">"//tbody/tr"</span><span class="p">)</span><span class="o">.</span><span class="n">first</span>
|
|
||||||
<span class="n">expect</span><span class="p">(</span><span class="n">first_row</span><span class="p">)</span><span class="o">.</span><span class="n">to_be_visible</span><span class="p">(),</span> <span class="s2">"The first table row is not visible"</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="TableComponent.check_last_row_visibility">
|
|
||||||
<a class="viewcode-back" href="../../components.html#components.table_component.TableComponent.check_last_row_visibility">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">check_last_row_visibility</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">locator</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="n">Locator</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Проверяет видимость последней строки таблицы.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Args:</span>
|
|
||||||
<span class="sd"> locator: Локатор таблицы.</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
|
|
||||||
<span class="n">table</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_locator</span><span class="p">(</span><span class="n">locator</span><span class="p">)</span>
|
|
||||||
<span class="n">last_row</span> <span class="o">=</span> <span class="n">table</span><span class="o">.</span><span class="n">locator</span><span class="p">(</span><span class="s2">"//tbody/tr"</span><span class="p">)</span><span class="o">.</span><span class="n">last</span>
|
|
||||||
<span class="n">expect</span><span class="p">(</span><span class="n">last_row</span><span class="p">)</span><span class="o">.</span><span class="n">to_be_visible</span><span class="p">(),</span> <span class="s2">"The last table row is not visible"</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="TableComponent.check_row_highlighting">
|
|
||||||
<a class="viewcode-back" href="../../components.html#components.table_component.TableComponent.check_row_highlighting">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">check_row_highlighting</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">locator</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="n">Locator</span><span class="p">,</span> <span class="n">row_index</span><span class="p">:</span> <span class="nb">int</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Проверяет изменение цвета строки при наведении.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Args:</span>
|
|
||||||
<span class="sd"> locator: Локатор таблицы.</span>
|
|
||||||
<span class="sd"> row_index: Индекс проверяемой строки.</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
|
|
||||||
<span class="n">table</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_locator</span><span class="p">(</span><span class="n">locator</span><span class="p">)</span>
|
|
||||||
<span class="n">row</span> <span class="o">=</span> <span class="n">table</span><span class="o">.</span><span class="n">locator</span><span class="p">(</span><span class="s2">"//tbody/tr"</span><span class="p">)</span><span class="o">.</span><span class="n">nth</span><span class="p">(</span><span class="n">row_index</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="n">row</span><span class="o">.</span><span class="n">scroll_into_view_if_needed</span><span class="p">()</span>
|
|
||||||
<span class="n">hover_element</span> <span class="o">=</span> <span class="n">row</span><span class="o">.</span><span class="n">locator</span><span class="p">(</span><span class="s2">".body-row-hover"</span><span class="p">)</span>
|
|
||||||
<span class="n">initial_color</span> <span class="o">=</span> <span class="n">hover_element</span><span class="o">.</span><span class="n">evaluate</span><span class="p">(</span><span class="s2">"el => window.getComputedStyle(el).backgroundColor"</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="n">row</span><span class="o">.</span><span class="n">hover</span><span class="p">()</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">page</span><span class="o">.</span><span class="n">wait_for_timeout</span><span class="p">(</span><span class="mi">300</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="n">new_color</span> <span class="o">=</span> <span class="n">hover_element</span><span class="o">.</span><span class="n">evaluate</span><span class="p">(</span><span class="s2">"el => window.getComputedStyle(el).backgroundColor"</span><span class="p">)</span>
|
|
||||||
<span class="k">assert</span> <span class="n">initial_color</span> <span class="o">!=</span> <span class="n">new_color</span><span class="p">,</span> <span class="s2">"Color of row did not change when hovering the cursor"</span></div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</pre></div>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<footer>
|
|
||||||
|
|
||||||
<hr/>
|
|
||||||
|
|
||||||
<div role="contentinfo">
|
|
||||||
<p>© Авторские права 2025, NPO KIS. </p>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
Собрано при помощи <a href="https://www.sphinx-doc.org/">Sphinx</a> с использованием
|
|
||||||
<a href="https://github.com/readthedocs/sphinx_rtd_theme">темы,</a>
|
|
||||||
предоставленной <a href="https://readthedocs.org">Read the Docs</a>.
|
|
||||||
|
|
||||||
|
|
||||||
</footer>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</section>
|
|
||||||
</div>
|
|
||||||
<script>
|
|
||||||
jQuery(function () {
|
|
||||||
SphinxRtdTheme.Navigation.enable(true);
|
|
||||||
});
|
|
||||||
</script>
|
|
||||||
|
|
||||||
</body>
|
|
||||||
</html>
|
|
||||||
|
|
@ -1,376 +0,0 @@
|
||||||
|
|
||||||
|
|
||||||
<!DOCTYPE html>
|
|
||||||
<html class="writer-html5" lang="ru" data-content_root="../../">
|
|
||||||
<head>
|
|
||||||
<meta charset="utf-8" />
|
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
||||||
<title>components.toolbar_component — документация e-nms-qa-automation 0.1.0</title>
|
|
||||||
<link rel="stylesheet" type="text/css" href="../../_static/pygments.css?v=b86133f3" />
|
|
||||||
<link rel="stylesheet" type="text/css" href="../../_static/css/theme.css?v=e59714d7" />
|
|
||||||
|
|
||||||
|
|
||||||
<script src="../../_static/jquery.js?v=5d32c60e"></script>
|
|
||||||
<script src="../../_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script>
|
|
||||||
<script src="../../_static/documentation_options.js?v=6ff560e8"></script>
|
|
||||||
<script src="../../_static/doctools.js?v=9bcbadda"></script>
|
|
||||||
<script src="../../_static/sphinx_highlight.js?v=dc90522c"></script>
|
|
||||||
<script src="../../_static/translations.js?v=cd1d70c9"></script>
|
|
||||||
<script src="../../_static/js/theme.js"></script>
|
|
||||||
<link rel="index" title="Алфавитный указатель" href="../../genindex.html" />
|
|
||||||
<link rel="search" title="Поиск" href="../../search.html" />
|
|
||||||
</head>
|
|
||||||
|
|
||||||
<body class="wy-body-for-nav">
|
|
||||||
<div class="wy-grid-for-nav">
|
|
||||||
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
|
|
||||||
<div class="wy-side-scroll">
|
|
||||||
<div class="wy-side-nav-search" >
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<a href="../../index.html" class="icon icon-home">
|
|
||||||
e-nms-qa-automation
|
|
||||||
</a>
|
|
||||||
<div role="search">
|
|
||||||
<form id="rtd-search-form" class="wy-form" action="../../search.html" method="get">
|
|
||||||
<input type="text" name="q" placeholder="Поиск в документации" aria-label="Поиск в документации" />
|
|
||||||
<input type="hidden" name="check_keywords" value="yes" />
|
|
||||||
<input type="hidden" name="area" value="default" />
|
|
||||||
</form>
|
|
||||||
</div>
|
|
||||||
</div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Меню навигации">
|
|
||||||
<!-- Local TOC -->
|
|
||||||
<div class="local-toc"></div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</nav>
|
|
||||||
|
|
||||||
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Меню навигации для мобильных устройств" >
|
|
||||||
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
|
|
||||||
<a href="../../index.html">e-nms-qa-automation</a>
|
|
||||||
</nav>
|
|
||||||
|
|
||||||
<div class="wy-nav-content">
|
|
||||||
<div class="rst-content">
|
|
||||||
<div role="navigation" aria-label="Навигация по страницам">
|
|
||||||
<ul class="wy-breadcrumbs">
|
|
||||||
<li><a href="../../index.html" class="icon icon-home" aria-label="Home"></a></li>
|
|
||||||
<li class="breadcrumb-item"><a href="../index.html">Код модуля</a></li>
|
|
||||||
<li class="breadcrumb-item active">components.toolbar_component</li>
|
|
||||||
<li class="wy-breadcrumbs-aside">
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
<hr/>
|
|
||||||
</div>
|
|
||||||
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
|
|
||||||
<div itemprop="articleBody">
|
|
||||||
|
|
||||||
<h1>Исходный код components.toolbar_component</h1><div class="highlight"><pre>
|
|
||||||
<span></span><span class="sd">"""Модуль компонента тулбара (панели инструментов).</span>
|
|
||||||
|
|
||||||
<span class="sd">Содержит класс ToolbarComponent для работы с элементами тулбара:</span>
|
|
||||||
<span class="sd">- Управление кнопками и их подсказками</span>
|
|
||||||
<span class="sd">- Проверка видимости элементов</span>
|
|
||||||
<span class="sd">- Взаимодействие с панелью инструментов</span>
|
|
||||||
<span class="sd">"""</span>
|
|
||||||
|
|
||||||
<span class="kn">from</span><span class="w"> </span><span class="nn">playwright.sync_api</span><span class="w"> </span><span class="kn">import</span> <span class="n">Page</span><span class="p">,</span> <span class="n">expect</span><span class="p">,</span> <span class="n">Locator</span>
|
|
||||||
<span class="kn">from</span><span class="w"> </span><span class="nn">tools.logger</span><span class="w"> </span><span class="kn">import</span> <span class="n">get_logger</span>
|
|
||||||
<span class="kn">from</span><span class="w"> </span><span class="nn">locators.toolbar_locators</span><span class="w"> </span><span class="kn">import</span> <span class="n">ToolbarLocators</span>
|
|
||||||
<span class="kn">from</span><span class="w"> </span><span class="nn">elements.tooltip_button_element</span><span class="w"> </span><span class="kn">import</span> <span class="n">TooltipButton</span>
|
|
||||||
<span class="kn">from</span><span class="w"> </span><span class="nn">elements.tab_button_element</span><span class="w"> </span><span class="kn">import</span> <span class="n">TabButton</span>
|
|
||||||
<span class="kn">from</span><span class="w"> </span><span class="nn">elements.button_element</span><span class="w"> </span><span class="kn">import</span> <span class="n">Button</span>
|
|
||||||
<span class="kn">from</span><span class="w"> </span><span class="nn">components.base_component</span><span class="w"> </span><span class="kn">import</span> <span class="n">BaseComponent</span>
|
|
||||||
|
|
||||||
<span class="n">logger</span> <span class="o">=</span> <span class="n">get_logger</span><span class="p">(</span><span class="s2">"TOOLBAR"</span><span class="p">)</span>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="ToolbarComponent">
|
|
||||||
<a class="viewcode-back" href="../../components.html#components.toolbar_component.ToolbarComponent">[документация]</a>
|
|
||||||
<span class="k">class</span><span class="w"> </span><span class="nc">ToolbarComponent</span><span class="p">(</span><span class="n">BaseComponent</span><span class="p">):</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Компонент тулбара. Предоставляет методы для работы с панелью инструментов.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Args:</span>
|
|
||||||
<span class="sd"> page (Page): Экземпляр страницы Playwright</span>
|
|
||||||
<span class="sd"> title (str): Заголовок тулбара</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="ToolbarComponent.__init__">
|
|
||||||
<a class="viewcode-back" href="../../components.html#components.toolbar_component.ToolbarComponent.__init__">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">page</span><span class="p">:</span> <span class="n">Page</span><span class="p">,</span> <span class="n">title</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Инициализирует компонент тулбара с указанным заголовком."""</span>
|
|
||||||
<span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="fm">__init__</span><span class="p">(</span><span class="n">page</span><span class="p">)</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">title</span> <span class="o">=</span> <span class="n">title</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">buttons</span> <span class="o">=</span> <span class="p">[]</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<span class="c1"># Действия:</span>
|
|
||||||
<div class="viewcode-block" id="ToolbarComponent.add_title">
|
|
||||||
<a class="viewcode-back" href="../../components.html#components.toolbar_component.ToolbarComponent.add_title">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">add_title</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">title</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Устанавливает новый заголовок тулбара.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Args:</span>
|
|
||||||
<span class="sd"> title (str): Новый заголовок</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">title</span> <span class="o">=</span> <span class="n">title</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="ToolbarComponent.add_tooltip_button">
|
|
||||||
<a class="viewcode-back" href="../../components.html#components.toolbar_component.ToolbarComponent.add_tooltip_button">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">add_tooltip_button</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">locator</span><span class="p">:</span> <span class="n">Locator</span><span class="p">,</span> <span class="n">name</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Добавляет кнопку с подсказкой в тулбар.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Args:</span>
|
|
||||||
<span class="sd"> locator (Locator): Локатор кнопки</span>
|
|
||||||
<span class="sd"> name (str): Уникальное имя кнопки</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">buttons</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">TooltipButton</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">page</span><span class="p">,</span> <span class="n">locator</span><span class="p">,</span> <span class="n">name</span><span class="p">))</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="ToolbarComponent.add_tab_button">
|
|
||||||
<a class="viewcode-back" href="../../components.html#components.toolbar_component.ToolbarComponent.add_tab_button">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">add_tab_button</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">locator</span><span class="p">:</span> <span class="n">Locator</span><span class="p">,</span> <span class="n">name</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Добавляет кнопку типа v-tab в тулбар.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Args:</span>
|
|
||||||
<span class="sd"> locator (Locator): Локатор кнопки</span>
|
|
||||||
<span class="sd"> name (str): Уникальное имя кнопки</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">buttons</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">TabButton</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">page</span><span class="p">,</span> <span class="n">locator</span><span class="p">,</span> <span class="n">name</span><span class="p">))</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="ToolbarComponent.add_button">
|
|
||||||
<a class="viewcode-back" href="../../components.html#components.toolbar_component.ToolbarComponent.add_button">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">add_button</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">locator</span><span class="p">:</span> <span class="n">Locator</span><span class="p">,</span> <span class="n">name</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Добавляет кнопку в тулбар.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Args:</span>
|
|
||||||
<span class="sd"> locator (Locator): Локатор кнопки</span>
|
|
||||||
<span class="sd"> name (str): Уникальное имя кнопки</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">buttons</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">Button</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">page</span><span class="p">,</span> <span class="n">locator</span><span class="p">,</span> <span class="n">name</span><span class="p">))</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="ToolbarComponent.get_button_by_name">
|
|
||||||
<a class="viewcode-back" href="../../components.html#components.toolbar_component.ToolbarComponent.get_button_by_name">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">get_button_by_name</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">:</span> <span class="nb">str</span>
|
|
||||||
<span class="p">)</span> <span class="o">-></span> <span class="n">TooltipButton</span> <span class="o">|</span> <span class="n">TabButton</span> <span class="o">|</span> <span class="n">Button</span> <span class="o">|</span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Возвращает кнопку по имени.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Args:</span>
|
|
||||||
<span class="sd"> name (str): Имя кнопки</span>
|
|
||||||
|
|
||||||
<span class="sd"> Returns:</span>
|
|
||||||
<span class="sd"> TooltipButton | TabButton | Button | None: Найденная кнопка или None</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
<span class="k">for</span> <span class="n">button</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">buttons</span><span class="p">:</span>
|
|
||||||
<span class="k">if</span> <span class="n">button</span><span class="o">.</span><span class="n">name</span> <span class="o">==</span> <span class="n">name</span><span class="p">:</span>
|
|
||||||
<span class="k">return</span> <span class="n">button</span>
|
|
||||||
<span class="k">return</span> <span class="kc">None</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="ToolbarComponent.click_button">
|
|
||||||
<a class="viewcode-back" href="../../components.html#components.toolbar_component.ToolbarComponent.click_button">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">click_button</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Кликает по кнопке тулбара.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Args:</span>
|
|
||||||
<span class="sd"> name (str): Имя кнопки</span>
|
|
||||||
|
|
||||||
<span class="sd"> Raises:</span>
|
|
||||||
<span class="sd"> AssertionError: Если кнопка не найдена</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
<span class="n">button</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_button_by_name</span><span class="p">(</span><span class="n">name</span><span class="p">)</span>
|
|
||||||
<span class="k">if</span> <span class="n">button</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="k">raise</span> <span class="ne">AssertionError</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Unsupported button name </span><span class="si">{</span><span class="n">name</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span>
|
|
||||||
<span class="n">button</span><span class="o">.</span><span class="n">click</span><span class="p">()</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="ToolbarComponent.get_toolbar_title_text">
|
|
||||||
<a class="viewcode-back" href="../../components.html#components.toolbar_component.ToolbarComponent.get_toolbar_title_text">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">get_toolbar_title_text</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">locator</span><span class="p">:</span> <span class="nb">str</span> <span class="o">=</span> <span class="n">ToolbarLocators</span><span class="o">.</span><span class="n">TITLE</span><span class="p">,</span>
|
|
||||||
<span class="n">filter_text</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
|
|
||||||
<span class="n">timeout</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">5000</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Получает заголовок тулбара окна.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Args:</span>
|
|
||||||
<span class="sd"> locator: Локатор для заголовка тулбара</span>
|
|
||||||
<span class="sd"> filter_text: Текст для фильтрации заголовка (опционально)</span>
|
|
||||||
<span class="sd"> timeout: Таймаут ожидания в миллисекундах</span>
|
|
||||||
|
|
||||||
<span class="sd"> Returns:</span>
|
|
||||||
<span class="sd"> str: Текст заголовка тулбара</span>
|
|
||||||
|
|
||||||
<span class="sd"> Raises:</span>
|
|
||||||
<span class="sd"> Exception: Если не удалось получить заголовок</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
<span class="c1"># Получаем локатор заголовка</span>
|
|
||||||
<span class="n">title_locator</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_locator</span><span class="p">(</span><span class="n">locator</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="c1"># Фильтруем по тексту если указан</span>
|
|
||||||
<span class="k">if</span> <span class="n">filter_text</span><span class="p">:</span>
|
|
||||||
<span class="n">title_locator</span> <span class="o">=</span> <span class="n">title_locator</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span><span class="n">has_text</span><span class="o">=</span><span class="n">filter_text</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="c1"># Ждем появления заголовка с помощью expect</span>
|
|
||||||
<span class="n">expect</span><span class="p">(</span><span class="n">title_locator</span><span class="p">)</span><span class="o">.</span><span class="n">to_be_visible</span><span class="p">(</span><span class="n">timeout</span><span class="o">=</span><span class="n">timeout</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="c1"># Получаем текст заголовка</span>
|
|
||||||
<span class="n">title_text</span> <span class="o">=</span> <span class="n">title_locator</span><span class="o">.</span><span class="n">text_content</span><span class="p">()</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span>
|
|
||||||
<span class="n">logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="s2">"Toolbar title: '</span><span class="si">%s</span><span class="s2">'"</span><span class="p">,</span> <span class="n">title_text</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="k">return</span> <span class="n">title_text</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<span class="c1"># Проверки:</span>
|
|
||||||
<div class="viewcode-block" id="ToolbarComponent.is_button_present">
|
|
||||||
<a class="viewcode-back" href="../../components.html#components.toolbar_component.ToolbarComponent.is_button_present">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">is_button_present</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="nb">bool</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Проверяет наличие кнопки.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Args:</span>
|
|
||||||
<span class="sd"> name (str): Имя кнопки</span>
|
|
||||||
|
|
||||||
<span class="sd"> Returns:</span>
|
|
||||||
<span class="sd"> bool: True если кнопка присутствует</span>
|
|
||||||
|
|
||||||
<span class="sd"> Raises:</span>
|
|
||||||
<span class="sd"> AssertionError: Если имя кнопки не поддерживается</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
<span class="n">button</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_button_by_name</span><span class="p">(</span><span class="n">name</span><span class="p">)</span>
|
|
||||||
<span class="k">if</span> <span class="n">button</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="k">raise</span> <span class="ne">AssertionError</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Unsupported button name </span><span class="si">{</span><span class="n">name</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span>
|
|
||||||
<span class="k">return</span> <span class="n">button</span><span class="o">.</span><span class="n">is_present</span><span class="p">(</span><span class="n">timeout</span><span class="o">=</span><span class="mi">1000</span><span class="p">)</span> <span class="c1"># Ожидание 1 секунда</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="ToolbarComponent.is_button_not_present">
|
|
||||||
<a class="viewcode-back" href="../../components.html#components.toolbar_component.ToolbarComponent.is_button_not_present">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">is_button_not_present</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="nb">bool</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Проверяет отсутствие кнопки.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Args:</span>
|
|
||||||
<span class="sd"> name (str): Имя кнопки</span>
|
|
||||||
|
|
||||||
<span class="sd"> Returns:</span>
|
|
||||||
<span class="sd"> bool: True если кнопка отсутствует</span>
|
|
||||||
|
|
||||||
<span class="sd"> Raises:</span>
|
|
||||||
<span class="sd"> AssertionError: Если имя кнопки не поддерживается</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
<span class="n">button</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_button_by_name</span><span class="p">(</span><span class="n">name</span><span class="p">)</span>
|
|
||||||
<span class="k">if</span> <span class="n">button</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="k">raise</span> <span class="ne">AssertionError</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Unsupported button name </span><span class="si">{</span><span class="n">name</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span>
|
|
||||||
<span class="k">return</span> <span class="n">button</span><span class="o">.</span><span class="n">is_not_present</span><span class="p">(</span><span class="n">timeout</span><span class="o">=</span><span class="mi">1000</span><span class="p">)</span> <span class="c1"># Ожидание 1 секунда</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="ToolbarComponent.check_toolbar_presence">
|
|
||||||
<a class="viewcode-back" href="../../components.html#components.toolbar_component.ToolbarComponent.check_toolbar_presence">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">check_toolbar_presence</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">message</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Проверяет видимость тулбара.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Args:</span>
|
|
||||||
<span class="sd"> message (str): Сообщение об ошибке если тулбар не виден</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
<span class="n">locator</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_locator</span><span class="p">(</span><span class="n">ToolbarLocators</span><span class="o">.</span><span class="n">TITLE</span><span class="p">)</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span>
|
|
||||||
<span class="n">has_text</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">title</span>
|
|
||||||
<span class="p">)</span>
|
|
||||||
<span class="n">expect</span><span class="p">(</span><span class="n">locator</span><span class="p">)</span><span class="o">.</span><span class="n">to_be_visible</span><span class="p">(),</span> <span class="n">message</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="ToolbarComponent.check_toolbar_presence_by_locator">
|
|
||||||
<a class="viewcode-back" href="../../components.html#components.toolbar_component.ToolbarComponent.check_toolbar_presence_by_locator">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">check_toolbar_presence_by_locator</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">locator</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="n">Locator</span><span class="p">,</span>
|
|
||||||
<span class="n">message</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Проверяет видимость тулбара.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Args:</span>
|
|
||||||
<span class="sd"> locator: Локатор тулбара</span>
|
|
||||||
<span class="sd"> message (str): Сообщение об ошибке если тулбар не виден</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
<span class="n">locator</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_locator</span><span class="p">(</span><span class="n">locator</span><span class="p">)</span>
|
|
||||||
<span class="n">expect</span><span class="p">(</span><span class="n">locator</span><span class="p">)</span><span class="o">.</span><span class="n">to_be_visible</span><span class="p">(),</span> <span class="n">message</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="ToolbarComponent.check_toolbar_presence_by_locator_and_title">
|
|
||||||
<a class="viewcode-back" href="../../components.html#components.toolbar_component.ToolbarComponent.check_toolbar_presence_by_locator_and_title">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">check_toolbar_presence_by_locator_and_title</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">locator</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="n">Locator</span><span class="p">,</span>
|
|
||||||
<span class="n">message</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Проверяет видимость тулбара.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Args:</span>
|
|
||||||
<span class="sd"> locator: Локатор тулбара</span>
|
|
||||||
<span class="sd"> message (str): Сообщение об ошибке если тулбар не виден</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
<span class="n">locator</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_locator</span><span class="p">(</span><span class="n">locator</span><span class="p">)</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span><span class="n">has_text</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">title</span><span class="p">)</span>
|
|
||||||
<span class="n">expect</span><span class="p">(</span><span class="n">locator</span><span class="p">)</span><span class="o">.</span><span class="n">to_be_visible</span><span class="p">(),</span> <span class="n">message</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="ToolbarComponent.check_button_visibility">
|
|
||||||
<a class="viewcode-back" href="../../components.html#components.toolbar_component.ToolbarComponent.check_button_visibility">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">check_button_visibility</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Проверяет наличие и видимость кнопки с предварительной прокруткой.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Args:</span>
|
|
||||||
<span class="sd"> name (str): Имя кнопки</span>
|
|
||||||
|
|
||||||
<span class="sd"> Raises:</span>
|
|
||||||
<span class="sd"> AssertionError: Если кнопка не найдена или не видна</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
<span class="n">button</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_button_by_name</span><span class="p">(</span><span class="n">name</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="k">if</span> <span class="n">button</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="k">raise</span> <span class="ne">AssertionError</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Unsupported button name </span><span class="si">{</span><span class="n">name</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="n">button</span><span class="o">.</span><span class="n">locator</span><span class="o">.</span><span class="n">scroll_into_view_if_needed</span><span class="p">()</span>
|
|
||||||
<span class="n">button</span><span class="o">.</span><span class="n">check_visibility</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Button with name </span><span class="si">{</span><span class="n">name</span><span class="si">}</span><span class="s2"> is missing"</span><span class="p">)</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="ToolbarComponent.check_button_tooltip">
|
|
||||||
<a class="viewcode-back" href="../../components.html#components.toolbar_component.ToolbarComponent.check_button_tooltip">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">check_button_tooltip</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">tooltip</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Проверяет текст подсказки кнопки.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Args:</span>
|
|
||||||
<span class="sd"> name (str): Имя кнопки</span>
|
|
||||||
<span class="sd"> tooltip (str): Ожидаемый текст подсказки</span>
|
|
||||||
|
|
||||||
<span class="sd"> Raises:</span>
|
|
||||||
<span class="sd"> AssertionError: Если текст подсказки не совпадает</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
<span class="n">button</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_button_by_name</span><span class="p">(</span><span class="n">name</span><span class="p">)</span>
|
|
||||||
<span class="k">if</span> <span class="n">button</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="k">raise</span> <span class="ne">AssertionError</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Unsupported button name </span><span class="si">{</span><span class="n">name</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span>
|
|
||||||
<span class="n">button</span><span class="o">.</span><span class="n">check_tooltip_with_text</span><span class="p">(</span><span class="n">tooltip</span><span class="p">)</span></div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</pre></div>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<footer>
|
|
||||||
|
|
||||||
<hr/>
|
|
||||||
|
|
||||||
<div role="contentinfo">
|
|
||||||
<p>© Авторские права 2025, NPO KIS. </p>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
Собрано при помощи <a href="https://www.sphinx-doc.org/">Sphinx</a> с использованием
|
|
||||||
<a href="https://github.com/readthedocs/sphinx_rtd_theme">темы,</a>
|
|
||||||
предоставленной <a href="https://readthedocs.org">Read the Docs</a>.
|
|
||||||
|
|
||||||
|
|
||||||
</footer>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</section>
|
|
||||||
</div>
|
|
||||||
<script>
|
|
||||||
jQuery(function () {
|
|
||||||
SphinxRtdTheme.Navigation.enable(true);
|
|
||||||
});
|
|
||||||
</script>
|
|
||||||
|
|
||||||
</body>
|
|
||||||
</html>
|
|
||||||
|
|
@ -1,187 +0,0 @@
|
||||||
|
|
||||||
|
|
||||||
<!DOCTYPE html>
|
|
||||||
<html class="writer-html5" lang="ru" data-content_root="../../">
|
|
||||||
<head>
|
|
||||||
<meta charset="utf-8" />
|
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
||||||
<title>components_derived.container_system_log_events — документация e-nms-qa-automation 0.1.0</title>
|
|
||||||
<link rel="stylesheet" type="text/css" href="../../_static/pygments.css?v=b86133f3" />
|
|
||||||
<link rel="stylesheet" type="text/css" href="../../_static/css/theme.css?v=e59714d7" />
|
|
||||||
|
|
||||||
|
|
||||||
<script src="../../_static/jquery.js?v=5d32c60e"></script>
|
|
||||||
<script src="../../_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script>
|
|
||||||
<script src="../../_static/documentation_options.js?v=6ff560e8"></script>
|
|
||||||
<script src="../../_static/doctools.js?v=9bcbadda"></script>
|
|
||||||
<script src="../../_static/sphinx_highlight.js?v=dc90522c"></script>
|
|
||||||
<script src="../../_static/translations.js?v=cd1d70c9"></script>
|
|
||||||
<script src="../../_static/js/theme.js"></script>
|
|
||||||
<link rel="index" title="Алфавитный указатель" href="../../genindex.html" />
|
|
||||||
<link rel="search" title="Поиск" href="../../search.html" />
|
|
||||||
</head>
|
|
||||||
|
|
||||||
<body class="wy-body-for-nav">
|
|
||||||
<div class="wy-grid-for-nav">
|
|
||||||
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
|
|
||||||
<div class="wy-side-scroll">
|
|
||||||
<div class="wy-side-nav-search" >
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<a href="../../index.html" class="icon icon-home">
|
|
||||||
e-nms-qa-automation
|
|
||||||
</a>
|
|
||||||
<div role="search">
|
|
||||||
<form id="rtd-search-form" class="wy-form" action="../../search.html" method="get">
|
|
||||||
<input type="text" name="q" placeholder="Поиск в документации" aria-label="Поиск в документации" />
|
|
||||||
<input type="hidden" name="check_keywords" value="yes" />
|
|
||||||
<input type="hidden" name="area" value="default" />
|
|
||||||
</form>
|
|
||||||
</div>
|
|
||||||
</div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Меню навигации">
|
|
||||||
<!-- Local TOC -->
|
|
||||||
<div class="local-toc"></div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</nav>
|
|
||||||
|
|
||||||
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Меню навигации для мобильных устройств" >
|
|
||||||
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
|
|
||||||
<a href="../../index.html">e-nms-qa-automation</a>
|
|
||||||
</nav>
|
|
||||||
|
|
||||||
<div class="wy-nav-content">
|
|
||||||
<div class="rst-content">
|
|
||||||
<div role="navigation" aria-label="Навигация по страницам">
|
|
||||||
<ul class="wy-breadcrumbs">
|
|
||||||
<li><a href="../../index.html" class="icon icon-home" aria-label="Home"></a></li>
|
|
||||||
<li class="breadcrumb-item"><a href="../index.html">Код модуля</a></li>
|
|
||||||
<li class="breadcrumb-item active">components_derived.container_system_log_events</li>
|
|
||||||
<li class="wy-breadcrumbs-aside">
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
<hr/>
|
|
||||||
</div>
|
|
||||||
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
|
|
||||||
<div itemprop="articleBody">
|
|
||||||
|
|
||||||
<h1>Исходный код components_derived.container_system_log_events</h1><div class="highlight"><pre>
|
|
||||||
<span></span><span class="sd">"""Модуль контейнера для отображения событий системного журнала.</span>
|
|
||||||
|
|
||||||
<span class="sd">Содержит класс для работы с контейнером для отображения событий</span>
|
|
||||||
<span class="sd">системного журнала через Playwright.</span>
|
|
||||||
<span class="sd">"""</span>
|
|
||||||
|
|
||||||
<span class="kn">from</span><span class="w"> </span><span class="nn">playwright.sync_api</span><span class="w"> </span><span class="kn">import</span> <span class="n">Page</span><span class="p">,</span> <span class="n">Locator</span>
|
|
||||||
<span class="kn">from</span><span class="w"> </span><span class="nn">tools.logger</span><span class="w"> </span><span class="kn">import</span> <span class="n">get_logger</span>
|
|
||||||
<span class="kn">from</span><span class="w"> </span><span class="nn">locators.toolbar_locators</span><span class="w"> </span><span class="kn">import</span> <span class="n">ToolbarLocators</span>
|
|
||||||
<span class="kn">from</span><span class="w"> </span><span class="nn">components.events_container_component</span><span class="w"> </span><span class="kn">import</span> <span class="n">EventsContainerComponent</span>
|
|
||||||
|
|
||||||
<span class="n">logger</span> <span class="o">=</span> <span class="n">get_logger</span><span class="p">(</span><span class="s2">"SYSTEM_LOG_EVENTS_CONTAINER"</span><span class="p">)</span>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="SystemLogEventsContainer">
|
|
||||||
<a class="viewcode-back" href="../../components_derived.html#components_derived.container_system_log_events.SystemLogEventsContainer">[документация]</a>
|
|
||||||
<span class="k">class</span><span class="w"> </span><span class="nc">SystemLogEventsContainer</span><span class="p">(</span><span class="n">EventsContainerComponent</span><span class="p">):</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Компонент контейнера для отображения событий системного журнала.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Предоставляет методы для взаимодействия с элементами</span>
|
|
||||||
<span class="sd"> контейнера для отображения событий системного журнала.</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="SystemLogEventsContainer.__init__">
|
|
||||||
<a class="viewcode-back" href="../../components_derived.html#components_derived.container_system_log_events.SystemLogEventsContainer.__init__">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">page</span><span class="p">:</span> <span class="n">Page</span><span class="p">,</span> <span class="n">locator</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="n">Locator</span><span class="p">):</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Инициализирует компонент контейнера для отображения событий системного журнала.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Args:</span>
|
|
||||||
<span class="sd"> page: Экземпляр страницы Playwright.</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
|
|
||||||
<span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="fm">__init__</span><span class="p">(</span><span class="n">page</span><span class="p">,</span> <span class="n">locator</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">add_tab_to_toolbar</span><span class="p">(</span><span class="n">ToolbarLocators</span><span class="o">.</span><span class="n">TABS</span><span class="p">,</span> <span class="s2">"events"</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="n">sidebar_filter</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_sidebar_filter</span><span class="p">()</span>
|
|
||||||
<span class="n">sidebar_filter</span><span class="o">.</span><span class="n">add_filtering_parameter</span><span class="p">(</span><span class="s2">"filter_type"</span><span class="p">,</span> <span class="s2">"Тип"</span><span class="p">)</span>
|
|
||||||
<span class="n">sidebar_filter</span><span class="o">.</span><span class="n">add_filtering_parameter</span><span class="p">(</span><span class="s2">"filter_strictness"</span><span class="p">,</span> <span class="s2">"Строгость"</span><span class="p">)</span>
|
|
||||||
<span class="n">sidebar_filter</span><span class="o">.</span><span class="n">add_filtering_parameter</span><span class="p">(</span><span class="s2">"filter_host"</span><span class="p">,</span> <span class="s2">"Хост"</span><span class="p">)</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<span class="c1"># Действия:</span>
|
|
||||||
<span class="c1"># Проверки:</span>
|
|
||||||
<div class="viewcode-block" id="SystemLogEventsContainer.check_content">
|
|
||||||
<a class="viewcode-back" href="../../components_derived.html#components_derived.container_system_log_events.SystemLogEventsContainer.check_content">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">check_content</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Проверяет содержимое контейнера для отображения событий системного журнала."""</span>
|
|
||||||
|
|
||||||
<span class="n">expected_headers</span> <span class="o">=</span> <span class="p">[</span><span class="s1">'ТИП'</span><span class="p">,</span> <span class="s1">'ВРЕМЯ'</span><span class="p">,</span> <span class="s1">'СТРОГОСТЬ'</span><span class="p">,</span> <span class="s1">'ХОСТ'</span><span class="p">,</span> <span class="s1">'ОПИСАНИЕ'</span><span class="p">]</span>
|
|
||||||
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">should_be_toolbar</span><span class="p">()</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">should_be_base_toolbar_buttons</span><span class="p">()</span>
|
|
||||||
|
|
||||||
<span class="n">events_tab</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_toolbar_tab_button</span><span class="p">(</span><span class="s2">"events"</span><span class="p">)</span>
|
|
||||||
<span class="n">events_tab_text</span> <span class="o">=</span> <span class="n">events_tab</span><span class="o">.</span><span class="n">get_text</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span>
|
|
||||||
<span class="k">assert</span> <span class="n">events_tab_text</span><span class="o">.</span><span class="n">find</span><span class="p">(</span><span class="s2">"chevron_right"</span><span class="p">)</span> <span class="o">!=</span> <span class="o">-</span><span class="mi">1</span><span class="p">,</span> <span class="s2">"Should be icon 'chevron_right'"</span>
|
|
||||||
<span class="k">assert</span> <span class="n">events_tab_text</span><span class="o">.</span><span class="n">find</span><span class="p">(</span><span class="s2">"События"</span><span class="p">)</span> <span class="o">!=</span> <span class="o">-</span><span class="mi">1</span><span class="p">,</span> <span class="s2">"Tab button with text События is missing on toolbar"</span>
|
|
||||||
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">should_be_events_table</span><span class="p">()</span>
|
|
||||||
<span class="n">events_table</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_events_table_content</span><span class="p">()</span>
|
|
||||||
|
|
||||||
<span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">events_table</span><span class="p">)</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span>
|
|
||||||
<span class="k">assert</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"The contents of the events table are missing"</span>
|
|
||||||
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">check_events_table_headers</span><span class="p">(</span><span class="n">events_table</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="n">expected_headers</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">events_table</span><span class="p">)</span> <span class="o">==</span> <span class="mi">1</span><span class="p">:</span>
|
|
||||||
<span class="k">assert</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"Table body is missing"</span>
|
|
||||||
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">should_be_pagination_buttons</span><span class="p">()</span>
|
|
||||||
|
|
||||||
<span class="n">sidebar_filter</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">click_filter_button</span><span class="p">()</span>
|
|
||||||
<span class="n">sidebar_filter</span><span class="o">.</span><span class="n">check_content</span><span class="p">()</span>
|
|
||||||
|
|
||||||
<span class="n">filter_type_bar</span> <span class="o">=</span> <span class="n">sidebar_filter</span><span class="o">.</span><span class="n">get_filtering_parameter</span><span class="p">(</span><span class="s2">"filter_type"</span><span class="p">)</span>
|
|
||||||
<span class="n">filter_type_title</span> <span class="o">=</span> <span class="n">filter_type_bar</span><span class="o">.</span><span class="n">get_selection_bar_title</span><span class="p">()</span>
|
|
||||||
<span class="k">assert</span> <span class="n">filter_type_title</span> <span class="o">==</span> <span class="s2">"Тип"</span><span class="p">,</span> <span class="s2">"Filtering parameter bar 'Тип' is missing"</span>
|
|
||||||
|
|
||||||
<span class="n">filter_strictness_bar</span> <span class="o">=</span> <span class="n">sidebar_filter</span><span class="o">.</span><span class="n">get_filtering_parameter</span><span class="p">(</span><span class="s2">"filter_strictness"</span><span class="p">)</span>
|
|
||||||
<span class="n">filter_strictness_title</span> <span class="o">=</span> <span class="n">filter_strictness_bar</span><span class="o">.</span><span class="n">get_selection_bar_title</span><span class="p">()</span>
|
|
||||||
<span class="k">assert</span> <span class="n">filter_strictness_title</span> <span class="o">==</span> <span class="s2">"Строгость"</span><span class="p">,</span> <span class="s2">"Filtering parameter bar 'Строгость' is missing"</span>
|
|
||||||
|
|
||||||
<span class="n">filter_host_bar</span> <span class="o">=</span> <span class="n">sidebar_filter</span><span class="o">.</span><span class="n">get_filtering_parameter</span><span class="p">(</span><span class="s2">"filter_host"</span><span class="p">)</span>
|
|
||||||
<span class="n">filter_host_title</span> <span class="o">=</span> <span class="n">filter_host_bar</span><span class="o">.</span><span class="n">get_selection_bar_title</span><span class="p">()</span>
|
|
||||||
<span class="k">assert</span> <span class="n">filter_host_title</span> <span class="o">==</span> <span class="s2">"Хост"</span><span class="p">,</span> <span class="s2">"Filtering parameter bar 'Хост' is missing"</span></div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</pre></div>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<footer>
|
|
||||||
|
|
||||||
<hr/>
|
|
||||||
|
|
||||||
<div role="contentinfo">
|
|
||||||
<p>© Авторские права 2025, NPO KIS. </p>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
Собрано при помощи <a href="https://www.sphinx-doc.org/">Sphinx</a> с использованием
|
|
||||||
<a href="https://github.com/readthedocs/sphinx_rtd_theme">темы,</a>
|
|
||||||
предоставленной <a href="https://readthedocs.org">Read the Docs</a>.
|
|
||||||
|
|
||||||
|
|
||||||
</footer>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</section>
|
|
||||||
</div>
|
|
||||||
<script>
|
|
||||||
jQuery(function () {
|
|
||||||
SphinxRtdTheme.Navigation.enable(true);
|
|
||||||
});
|
|
||||||
</script>
|
|
||||||
|
|
||||||
</body>
|
|
||||||
</html>
|
|
||||||
|
|
@ -1,297 +0,0 @@
|
||||||
|
|
||||||
|
|
||||||
<!DOCTYPE html>
|
|
||||||
<html class="writer-html5" lang="ru" data-content_root="../../">
|
|
||||||
<head>
|
|
||||||
<meta charset="utf-8" />
|
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
||||||
<title>components_derived.date_input_component — документация e-nms-qa-automation 0.1.0</title>
|
|
||||||
<link rel="stylesheet" type="text/css" href="../../_static/pygments.css?v=b86133f3" />
|
|
||||||
<link rel="stylesheet" type="text/css" href="../../_static/css/theme.css?v=e59714d7" />
|
|
||||||
|
|
||||||
|
|
||||||
<script src="../../_static/jquery.js?v=5d32c60e"></script>
|
|
||||||
<script src="../../_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script>
|
|
||||||
<script src="../../_static/documentation_options.js?v=6ff560e8"></script>
|
|
||||||
<script src="../../_static/doctools.js?v=9bcbadda"></script>
|
|
||||||
<script src="../../_static/sphinx_highlight.js?v=dc90522c"></script>
|
|
||||||
<script src="../../_static/translations.js?v=cd1d70c9"></script>
|
|
||||||
<script src="../../_static/js/theme.js"></script>
|
|
||||||
<link rel="index" title="Алфавитный указатель" href="../../genindex.html" />
|
|
||||||
<link rel="search" title="Поиск" href="../../search.html" />
|
|
||||||
</head>
|
|
||||||
|
|
||||||
<body class="wy-body-for-nav">
|
|
||||||
<div class="wy-grid-for-nav">
|
|
||||||
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
|
|
||||||
<div class="wy-side-scroll">
|
|
||||||
<div class="wy-side-nav-search" >
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<a href="../../index.html" class="icon icon-home">
|
|
||||||
e-nms-qa-automation
|
|
||||||
</a>
|
|
||||||
<div role="search">
|
|
||||||
<form id="rtd-search-form" class="wy-form" action="../../search.html" method="get">
|
|
||||||
<input type="text" name="q" placeholder="Поиск в документации" aria-label="Поиск в документации" />
|
|
||||||
<input type="hidden" name="check_keywords" value="yes" />
|
|
||||||
<input type="hidden" name="area" value="default" />
|
|
||||||
</form>
|
|
||||||
</div>
|
|
||||||
</div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Меню навигации">
|
|
||||||
<!-- Local TOC -->
|
|
||||||
<div class="local-toc"></div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</nav>
|
|
||||||
|
|
||||||
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Меню навигации для мобильных устройств" >
|
|
||||||
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
|
|
||||||
<a href="../../index.html">e-nms-qa-automation</a>
|
|
||||||
</nav>
|
|
||||||
|
|
||||||
<div class="wy-nav-content">
|
|
||||||
<div class="rst-content">
|
|
||||||
<div role="navigation" aria-label="Навигация по страницам">
|
|
||||||
<ul class="wy-breadcrumbs">
|
|
||||||
<li><a href="../../index.html" class="icon icon-home" aria-label="Home"></a></li>
|
|
||||||
<li class="breadcrumb-item"><a href="../index.html">Код модуля</a></li>
|
|
||||||
<li class="breadcrumb-item active">components_derived.date_input_component</li>
|
|
||||||
<li class="wy-breadcrumbs-aside">
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
<hr/>
|
|
||||||
</div>
|
|
||||||
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
|
|
||||||
<div itemprop="articleBody">
|
|
||||||
|
|
||||||
<h1>Исходный код components_derived.date_input_component</h1><div class="highlight"><pre>
|
|
||||||
<span></span><span class="sd">"""Модуль компонента задания даты и времени.</span>
|
|
||||||
|
|
||||||
<span class="sd">Содержит класс для работы с компонентом задания даты и времени через Playwright.</span>
|
|
||||||
<span class="sd">"""</span>
|
|
||||||
|
|
||||||
<span class="kn">from</span><span class="w"> </span><span class="nn">playwright.sync_api</span><span class="w"> </span><span class="kn">import</span> <span class="n">Page</span><span class="p">,</span> <span class="n">Locator</span><span class="p">,</span> <span class="n">expect</span>
|
|
||||||
<span class="kn">from</span><span class="w"> </span><span class="nn">tools.logger</span><span class="w"> </span><span class="kn">import</span> <span class="n">get_logger</span>
|
|
||||||
<span class="c1"># from elements.text_element import Text</span>
|
|
||||||
<span class="kn">from</span><span class="w"> </span><span class="nn">elements.text_input_element</span><span class="w"> </span><span class="kn">import</span> <span class="n">TextInput</span>
|
|
||||||
<span class="kn">from</span><span class="w"> </span><span class="nn">elements.button_element</span><span class="w"> </span><span class="kn">import</span> <span class="n">Button</span>
|
|
||||||
<span class="kn">from</span><span class="w"> </span><span class="nn">components.date_picker_component</span><span class="w"> </span><span class="kn">import</span> <span class="n">DatePickerComponent</span>
|
|
||||||
<span class="kn">from</span><span class="w"> </span><span class="nn">components.base_component</span><span class="w"> </span><span class="kn">import</span> <span class="n">BaseComponent</span>
|
|
||||||
|
|
||||||
<span class="n">logger</span> <span class="o">=</span> <span class="n">get_logger</span><span class="p">(</span><span class="s2">"DATE_INPUT"</span><span class="p">)</span>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="DateInput">
|
|
||||||
<a class="viewcode-back" href="../../components_derived.html#components_derived.date_input_component.DateInput">[документация]</a>
|
|
||||||
<span class="k">class</span><span class="w"> </span><span class="nc">DateInput</span><span class="p">(</span><span class="n">BaseComponent</span><span class="p">):</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Компонент задания даты и времени.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Предоставляет методы для взаимодействия с элементами компонентом задания даты и времени.</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="DateInput.__init__">
|
|
||||||
<a class="viewcode-back" href="../../components_derived.html#components_derived.date_input_component.DateInput.__init__">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">page</span><span class="p">:</span> <span class="n">Page</span><span class="p">,</span> <span class="n">locator</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="n">Locator</span><span class="p">):</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Инициализирует компонент задания даты и времени.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Args:</span>
|
|
||||||
<span class="sd"> page: Экземпляр страницы Playwright.</span>
|
|
||||||
<span class="sd"> locator: Локатор формы ввода даты и времени (строка или объект Locator)</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
|
|
||||||
<span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="fm">__init__</span><span class="p">(</span><span class="n">page</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">date_input_locator</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_locator</span><span class="p">(</span><span class="n">locator</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">switch_mode_button</span> <span class="o">=</span> <span class="n">Button</span><span class="p">(</span><span class="n">page</span><span class="p">,</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">date_input_locator</span><span class="o">.</span><span class="n">get_by_role</span><span class="p">(</span><span class="s2">"button"</span><span class="p">),</span>
|
|
||||||
<span class="s2">"switch_mode_button"</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="n">loc</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">date_input_locator</span><span class="o">.</span><span class="n">get_by_placeholder</span><span class="p">(</span><span class="s2">"дд.мм.гггг"</span><span class="p">)</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">date_input_field</span> <span class="o">=</span> <span class="n">TextInput</span><span class="p">(</span><span class="n">page</span><span class="p">,</span> <span class="n">loc</span><span class="p">,</span> <span class="s2">"date_input"</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="n">loc</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">date_input_locator</span><span class="o">.</span><span class="n">get_by_placeholder</span><span class="p">(</span><span class="s2">"00:00"</span><span class="p">)</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">time_input_field</span> <span class="o">=</span> <span class="n">TextInput</span><span class="p">(</span><span class="n">page</span><span class="p">,</span> <span class="n">loc</span><span class="p">,</span> <span class="s2">"time_input"</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">date_picker</span> <span class="o">=</span> <span class="n">DatePickerComponent</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">page</span><span class="p">)</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<span class="c1"># Действия:</span>
|
|
||||||
<div class="viewcode-block" id="DateInput.click_switch_mode_button">
|
|
||||||
<a class="viewcode-back" href="../../components_derived.html#components_derived.date_input_component.DateInput.click_switch_mode_button">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">click_switch_mode_button</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">""" Нажатие на кнопку переключения режимов ввода (текстовый или календарь)."""</span>
|
|
||||||
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">switch_mode_button</span><span class="o">.</span><span class="n">click</span><span class="p">()</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="DateInput.get_date_picker">
|
|
||||||
<a class="viewcode-back" href="../../components_derived.html#components_derived.date_input_component.DateInput.get_date_picker">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">get_date_picker</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">DatePickerComponent</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">""" Возвращает экземпляр компонента средства выбора даты. """</span>
|
|
||||||
|
|
||||||
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">date_picker</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="DateInput.get_date_field_value">
|
|
||||||
<a class="viewcode-back" href="../../components_derived.html#components_derived.date_input_component.DateInput.get_date_field_value">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">get_date_field_value</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">""" Возвращает текущее значение поля ввода даты. """</span>
|
|
||||||
|
|
||||||
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">date_input_field</span><span class="o">.</span><span class="n">get_input_value</span><span class="p">()</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="DateInput.get_time_field_value">
|
|
||||||
<a class="viewcode-back" href="../../components_derived.html#components_derived.date_input_component.DateInput.get_time_field_value">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">get_time_field_value</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">""" Возвращает текущее значение поля ввода времени. """</span>
|
|
||||||
|
|
||||||
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">time_input_field</span><span class="o">.</span><span class="n">get_input_value</span><span class="p">()</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="DateInput.input_date">
|
|
||||||
<a class="viewcode-back" href="../../components_derived.html#components_derived.date_input_component.DateInput.input_date">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">input_date</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">date</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">""" Ввод даты в формате дд.мм.гггг """</span>
|
|
||||||
|
|
||||||
<span class="n">day</span><span class="p">,</span> <span class="n">month</span><span class="p">,</span> <span class="n">year</span> <span class="o">=</span> <span class="n">date</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s1">'.'</span><span class="p">)</span>
|
|
||||||
<span class="k">assert</span> <span class="nb">len</span><span class="p">(</span><span class="n">day</span><span class="p">)</span> <span class="o">==</span> <span class="mi">2</span><span class="p">,</span> <span class="s2">"Incorrect day format: should be 'dd.mm.yyyy'"</span>
|
|
||||||
<span class="k">assert</span> <span class="nb">len</span><span class="p">(</span><span class="n">month</span><span class="p">)</span> <span class="o">==</span> <span class="mi">2</span><span class="p">,</span> <span class="s2">"Incorrect month format: should be 'dd.mm.yyyy'"</span>
|
|
||||||
<span class="k">assert</span> <span class="nb">len</span><span class="p">(</span><span class="n">year</span><span class="p">)</span> <span class="o">==</span> <span class="mi">4</span><span class="p">,</span> <span class="s2">"Incorrect year format: should be 'dd.mm.yyyy'"</span>
|
|
||||||
|
|
||||||
<span class="k">try</span><span class="p">:</span>
|
|
||||||
<span class="n">_</span> <span class="o">=</span> <span class="nb">int</span><span class="p">(</span><span class="n">day</span><span class="p">)</span>
|
|
||||||
<span class="k">except</span> <span class="ne">ValueError</span><span class="p">:</span>
|
|
||||||
<span class="k">assert</span> <span class="kc">False</span><span class="p">,</span> <span class="sa">f</span><span class="s2">"Incorrect day value </span><span class="si">{</span><span class="n">day</span><span class="si">}</span><span class="s2"> for selection"</span>
|
|
||||||
|
|
||||||
<span class="k">try</span><span class="p">:</span>
|
|
||||||
<span class="n">_</span> <span class="o">=</span> <span class="nb">int</span><span class="p">(</span><span class="n">month</span><span class="p">)</span>
|
|
||||||
<span class="k">except</span> <span class="ne">ValueError</span><span class="p">:</span>
|
|
||||||
<span class="k">assert</span> <span class="kc">False</span><span class="p">,</span> <span class="sa">f</span><span class="s2">"Incorrect month value </span><span class="si">{</span><span class="n">month</span><span class="si">}</span><span class="s2"> for selection"</span>
|
|
||||||
|
|
||||||
<span class="k">try</span><span class="p">:</span>
|
|
||||||
<span class="n">_</span> <span class="o">=</span> <span class="nb">int</span><span class="p">(</span><span class="n">year</span><span class="p">)</span>
|
|
||||||
<span class="k">except</span> <span class="ne">ValueError</span><span class="p">:</span>
|
|
||||||
<span class="k">assert</span> <span class="kc">False</span><span class="p">,</span> <span class="sa">f</span><span class="s2">"Incorrect year value </span><span class="si">{</span><span class="n">year</span><span class="si">}</span><span class="s2"> for selection"</span>
|
|
||||||
|
|
||||||
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">is_text_input_mode</span><span class="p">():</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">date_input_field</span><span class="o">.</span><span class="n">check_editable_input</span><span class="p">(</span><span class="s2">"Text field for date input should be editable"</span><span class="p">)</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">date_input_field</span><span class="o">.</span><span class="n">clear</span><span class="p">()</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">date_input_field</span><span class="o">.</span><span class="n">input_value</span><span class="p">(</span><span class="n">date</span><span class="p">)</span>
|
|
||||||
<span class="k">else</span><span class="p">:</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">date_picker</span><span class="o">.</span><span class="n">select_year_and_month</span><span class="p">(</span><span class="n">year</span><span class="p">,</span> <span class="n">month</span><span class="p">)</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">date_picker</span><span class="o">.</span><span class="n">select_day</span><span class="p">(</span><span class="n">day</span><span class="p">)</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="DateInput.input_time">
|
|
||||||
<a class="viewcode-back" href="../../components_derived.html#components_derived.date_input_component.DateInput.input_time">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">input_time</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">time</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">""" Ввод даты в формате чч:мм """</span>
|
|
||||||
|
|
||||||
<span class="n">hours</span><span class="p">,</span> <span class="n">minutes</span> <span class="o">=</span> <span class="n">time</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s1">':'</span><span class="p">)</span>
|
|
||||||
<span class="k">assert</span> <span class="nb">len</span><span class="p">(</span><span class="n">hours</span><span class="p">)</span> <span class="o">==</span> <span class="mi">2</span><span class="p">,</span> <span class="s2">"Incorrect time format: should be 'hh:mm'"</span>
|
|
||||||
<span class="k">assert</span> <span class="nb">len</span><span class="p">(</span><span class="n">minutes</span><span class="p">)</span> <span class="o">==</span> <span class="mi">2</span><span class="p">,</span> <span class="s2">"Incorrect time format: should be 'hh:mm'"</span>
|
|
||||||
|
|
||||||
<span class="k">try</span><span class="p">:</span>
|
|
||||||
<span class="n">_</span> <span class="o">=</span> <span class="nb">int</span><span class="p">(</span><span class="n">hours</span><span class="p">)</span>
|
|
||||||
<span class="k">except</span> <span class="ne">ValueError</span><span class="p">:</span>
|
|
||||||
<span class="k">assert</span> <span class="kc">False</span><span class="p">,</span> <span class="sa">f</span><span class="s2">"Incorrect hours value </span><span class="si">{</span><span class="n">hours</span><span class="si">}</span><span class="s2"> for selection"</span>
|
|
||||||
|
|
||||||
<span class="k">try</span><span class="p">:</span>
|
|
||||||
<span class="n">_</span> <span class="o">=</span> <span class="nb">int</span><span class="p">(</span><span class="n">minutes</span><span class="p">)</span>
|
|
||||||
<span class="k">except</span> <span class="ne">ValueError</span><span class="p">:</span>
|
|
||||||
<span class="k">assert</span> <span class="kc">False</span><span class="p">,</span> <span class="sa">f</span><span class="s2">"Incorrect minutes value </span><span class="si">{</span><span class="n">minutes</span><span class="si">}</span><span class="s2"> for selection"</span>
|
|
||||||
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">time_input_field</span><span class="o">.</span><span class="n">check_editable_input</span><span class="p">(</span><span class="s2">"Text field for date input should be editable"</span><span class="p">)</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">time_input_field</span><span class="o">.</span><span class="n">clear</span><span class="p">()</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">time_input_field</span><span class="o">.</span><span class="n">input_value</span><span class="p">(</span><span class="n">time</span><span class="p">)</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<span class="c1"># Проверки:</span>
|
|
||||||
<div class="viewcode-block" id="DateInput.check_content">
|
|
||||||
<a class="viewcode-back" href="../../components_derived.html#components_derived.date_input_component.DateInput.check_content">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">check_content</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">label</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Проверка состава компонента ввода даты."""</span>
|
|
||||||
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">check_switch_mode_button_visibility</span><span class="p">()</span>
|
|
||||||
|
|
||||||
<span class="n">label_locator</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">date_input_locator</span><span class="o">.</span><span class="n">get_by_label</span><span class="p">(</span><span class="n">label</span><span class="p">)</span>
|
|
||||||
<span class="n">expect</span><span class="p">(</span><span class="n">label_locator</span><span class="p">)</span><span class="o">.</span><span class="n">to_be_visible</span><span class="p">()</span>
|
|
||||||
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">date_input_field</span><span class="o">.</span><span class="n">check_visibility</span><span class="p">(</span><span class="s2">"Text field for date input is missing"</span><span class="p">)</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">date_input_field</span><span class="o">.</span><span class="n">check_empty_input</span><span class="p">(</span><span class="s2">"Text field for date input should be empty"</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">click_switch_mode_button</span><span class="p">()</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">page</span><span class="o">.</span><span class="n">wait_for_timeout</span><span class="p">(</span><span class="mi">300</span><span class="p">)</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">click_switch_mode_button</span><span class="p">()</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">page</span><span class="o">.</span><span class="n">wait_for_timeout</span><span class="p">(</span><span class="mi">300</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">date_picker</span><span class="o">.</span><span class="n">check_content</span><span class="p">()</span>
|
|
||||||
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">click_switch_mode_button</span><span class="p">()</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">click_switch_mode_button</span><span class="p">()</span>
|
|
||||||
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">page</span><span class="o">.</span><span class="n">wait_for_timeout</span><span class="p">(</span><span class="mi">300</span><span class="p">)</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">input_date</span><span class="p">(</span><span class="s2">"11.11.2011"</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="n">label_locator</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">date_input_locator</span><span class="o">.</span><span class="n">get_by_label</span><span class="p">(</span><span class="s2">"Время"</span><span class="p">)</span>
|
|
||||||
<span class="n">expect</span><span class="p">(</span><span class="n">label_locator</span><span class="p">)</span><span class="o">.</span><span class="n">to_be_visible</span><span class="p">()</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">time_input_field</span><span class="o">.</span><span class="n">check_visibility</span><span class="p">(</span><span class="s2">"Text field for time input is missing"</span><span class="p">)</span>
|
|
||||||
<span class="n">current_time_value</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_time_field_value</span><span class="p">()</span>
|
|
||||||
<span class="k">assert</span> <span class="n">current_time_value</span> <span class="o">==</span> <span class="s2">"00:00"</span><span class="p">,</span> \
|
|
||||||
<span class="s2">"Should be empty time input field"</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="DateInput.check_switch_mode_button_visibility">
|
|
||||||
<a class="viewcode-back" href="../../components_derived.html#components_derived.date_input_component.DateInput.check_switch_mode_button_visibility">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">check_switch_mode_button_visibility</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">""" Проверка видимости кнопки переключения режимов ввода."""</span>
|
|
||||||
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">switch_mode_button</span><span class="o">.</span><span class="n">check_visibility</span><span class="p">(</span><span class="s2">"Switch Mode Button is missing"</span><span class="p">)</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="DateInput.is_text_input_mode">
|
|
||||||
<a class="viewcode-back" href="../../components_derived.html#components_derived.date_input_component.DateInput.is_text_input_mode">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">is_text_input_mode</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">bool</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">""" Проверка текстового режима ввода."""</span>
|
|
||||||
|
|
||||||
<span class="n">result</span> <span class="o">=</span> <span class="kc">False</span>
|
|
||||||
|
|
||||||
<span class="n">inner_text</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">switch_mode_button</span><span class="o">.</span><span class="n">get_text</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span>
|
|
||||||
<span class="k">if</span> <span class="n">inner_text</span> <span class="o">==</span> <span class="s2">"keyboard"</span><span class="p">:</span>
|
|
||||||
<span class="n">result</span> <span class="o">=</span> <span class="kc">True</span>
|
|
||||||
<span class="k">return</span> <span class="n">result</span></div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</pre></div>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<footer>
|
|
||||||
|
|
||||||
<hr/>
|
|
||||||
|
|
||||||
<div role="contentinfo">
|
|
||||||
<p>© Авторские права 2025, NPO KIS. </p>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
Собрано при помощи <a href="https://www.sphinx-doc.org/">Sphinx</a> с использованием
|
|
||||||
<a href="https://github.com/readthedocs/sphinx_rtd_theme">темы,</a>
|
|
||||||
предоставленной <a href="https://readthedocs.org">Read the Docs</a>.
|
|
||||||
|
|
||||||
|
|
||||||
</footer>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</section>
|
|
||||||
</div>
|
|
||||||
<script>
|
|
||||||
jQuery(function () {
|
|
||||||
SphinxRtdTheme.Navigation.enable(true);
|
|
||||||
});
|
|
||||||
</script>
|
|
||||||
|
|
||||||
</body>
|
|
||||||
</html>
|
|
||||||
|
|
@ -1,609 +0,0 @@
|
||||||
|
|
||||||
|
|
||||||
<!DOCTYPE html>
|
|
||||||
<html class="writer-html5" lang="ru" data-content_root="../../">
|
|
||||||
<head>
|
|
||||||
<meta charset="utf-8" />
|
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
||||||
<title>components_derived.modal_add_AD_user — документация e-nms-qa-automation 0.1.0</title>
|
|
||||||
<link rel="stylesheet" type="text/css" href="../../_static/pygments.css?v=b86133f3" />
|
|
||||||
<link rel="stylesheet" type="text/css" href="../../_static/css/theme.css?v=e59714d7" />
|
|
||||||
|
|
||||||
|
|
||||||
<script src="../../_static/jquery.js?v=5d32c60e"></script>
|
|
||||||
<script src="../../_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script>
|
|
||||||
<script src="../../_static/documentation_options.js?v=6ff560e8"></script>
|
|
||||||
<script src="../../_static/doctools.js?v=9bcbadda"></script>
|
|
||||||
<script src="../../_static/sphinx_highlight.js?v=dc90522c"></script>
|
|
||||||
<script src="../../_static/translations.js?v=cd1d70c9"></script>
|
|
||||||
<script src="../../_static/js/theme.js"></script>
|
|
||||||
<link rel="index" title="Алфавитный указатель" href="../../genindex.html" />
|
|
||||||
<link rel="search" title="Поиск" href="../../search.html" />
|
|
||||||
</head>
|
|
||||||
|
|
||||||
<body class="wy-body-for-nav">
|
|
||||||
<div class="wy-grid-for-nav">
|
|
||||||
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
|
|
||||||
<div class="wy-side-scroll">
|
|
||||||
<div class="wy-side-nav-search" >
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<a href="../../index.html" class="icon icon-home">
|
|
||||||
e-nms-qa-automation
|
|
||||||
</a>
|
|
||||||
<div role="search">
|
|
||||||
<form id="rtd-search-form" class="wy-form" action="../../search.html" method="get">
|
|
||||||
<input type="text" name="q" placeholder="Поиск в документации" aria-label="Поиск в документации" />
|
|
||||||
<input type="hidden" name="check_keywords" value="yes" />
|
|
||||||
<input type="hidden" name="area" value="default" />
|
|
||||||
</form>
|
|
||||||
</div>
|
|
||||||
</div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Меню навигации">
|
|
||||||
<!-- Local TOC -->
|
|
||||||
<div class="local-toc"></div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</nav>
|
|
||||||
|
|
||||||
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Меню навигации для мобильных устройств" >
|
|
||||||
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
|
|
||||||
<a href="../../index.html">e-nms-qa-automation</a>
|
|
||||||
</nav>
|
|
||||||
|
|
||||||
<div class="wy-nav-content">
|
|
||||||
<div class="rst-content">
|
|
||||||
<div role="navigation" aria-label="Навигация по страницам">
|
|
||||||
<ul class="wy-breadcrumbs">
|
|
||||||
<li><a href="../../index.html" class="icon icon-home" aria-label="Home"></a></li>
|
|
||||||
<li class="breadcrumb-item"><a href="../index.html">Код модуля</a></li>
|
|
||||||
<li class="breadcrumb-item active">components_derived.modal_add_AD_user</li>
|
|
||||||
<li class="wy-breadcrumbs-aside">
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
<hr/>
|
|
||||||
</div>
|
|
||||||
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
|
|
||||||
<div itemprop="articleBody">
|
|
||||||
|
|
||||||
<h1>Исходный код components_derived.modal_add_AD_user</h1><div class="highlight"><pre>
|
|
||||||
<span></span><span class="sd">"""Модуль modal_add_user содержит класс для работы с модальным окном добавления пользователя.</span>
|
|
||||||
|
|
||||||
<span class="sd">Класс AddUserModalWindow наследует базовый функционал ModalWindowComponent</span>
|
|
||||||
<span class="sd">и реализует специфичные методы для работы с формами добавления пользователей.</span>
|
|
||||||
<span class="sd">"""</span>
|
|
||||||
|
|
||||||
<span class="kn">import</span><span class="w"> </span><span class="nn">re</span>
|
|
||||||
<span class="kn">from</span><span class="w"> </span><span class="nn">playwright.sync_api</span><span class="w"> </span><span class="kn">import</span> <span class="n">Page</span>
|
|
||||||
<span class="kn">from</span><span class="w"> </span><span class="nn">tools.logger</span><span class="w"> </span><span class="kn">import</span> <span class="n">get_logger</span>
|
|
||||||
<span class="kn">from</span><span class="w"> </span><span class="nn">locators.modal_window_locators</span><span class="w"> </span><span class="kn">import</span> <span class="n">ModalWindowLocators</span>
|
|
||||||
<span class="kn">from</span><span class="w"> </span><span class="nn">elements.text_input_element</span><span class="w"> </span><span class="kn">import</span> <span class="n">TextInput</span>
|
|
||||||
<span class="kn">from</span><span class="w"> </span><span class="nn">elements.text_element</span><span class="w"> </span><span class="kn">import</span> <span class="n">Text</span>
|
|
||||||
<span class="kn">from</span><span class="w"> </span><span class="nn">elements.checkbox_element</span><span class="w"> </span><span class="kn">import</span> <span class="n">Checkbox</span>
|
|
||||||
<span class="kn">from</span><span class="w"> </span><span class="nn">data.roles_dict</span><span class="w"> </span><span class="kn">import</span> <span class="n">roles_dict</span>
|
|
||||||
<span class="kn">from</span><span class="w"> </span><span class="nn">components.modal_window_component</span><span class="w"> </span><span class="kn">import</span> <span class="n">ModalWindowComponent</span>
|
|
||||||
<span class="kn">from</span><span class="w"> </span><span class="nn">components.dropdown_list_component</span><span class="w"> </span><span class="kn">import</span> <span class="n">DropdownList</span>
|
|
||||||
<span class="kn">from</span><span class="w"> </span><span class="nn">components.confirm_component</span><span class="w"> </span><span class="kn">import</span> <span class="n">ConfirmComponent</span>
|
|
||||||
|
|
||||||
|
|
||||||
<span class="n">logger</span> <span class="o">=</span> <span class="n">get_logger</span><span class="p">(</span><span class="s2">"ADD_USER_FROM_ACTIVE_DIRECTORY_MODAL_WINDOW"</span><span class="p">)</span>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="AddADUserModalWindow">
|
|
||||||
<a class="viewcode-back" href="../../components_derived.html#components_derived.modal_add_AD_user.AddADUserModalWindow">[документация]</a>
|
|
||||||
<span class="k">class</span><span class="w"> </span><span class="nc">AddADUserModalWindow</span><span class="p">(</span><span class="n">ModalWindowComponent</span><span class="p">):</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Модальное окно добавления нового пользователя.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Наследует ModalWindowComponent и добавляет элементы формы:</span>
|
|
||||||
<span class="sd"> - Поля ввода (имя, пароль, email и др.)</span>
|
|
||||||
<span class="sd"> - Чекбоксы (Active Directory, Push-уведомления)</span>
|
|
||||||
<span class="sd"> - Выпадающие списки групп, пользователей AD, ролей</span>
|
|
||||||
<span class="sd"> - Кнопки действий</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="AddADUserModalWindow.__init__">
|
|
||||||
<a class="viewcode-back" href="../../components_derived.html#components_derived.modal_add_AD_user.AddADUserModalWindow.__init__">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">page</span><span class="p">:</span> <span class="n">Page</span><span class="p">):</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Инициализирует элементы формы добавления пользователя."""</span>
|
|
||||||
|
|
||||||
<span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="fm">__init__</span><span class="p">(</span><span class="n">page</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="c1"># Локаторы элементов формы</span>
|
|
||||||
<span class="n">input_form_locator</span> <span class="o">=</span> <span class="n">page</span><span class="o">.</span><span class="n">locator</span><span class="p">(</span><span class="n">ModalWindowLocators</span><span class="o">.</span><span class="n">INPUT_FORM_USER_DATA</span><span class="p">)</span>
|
|
||||||
<span class="n">text_field_locator</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"xpath=</span><span class="si">{</span><span class="n">ModalWindowLocators</span><span class="o">.</span><span class="n">TEXT_FIELD_INPUT_FORM_USER_DATA</span><span class="si">}</span><span class="s2">"</span>
|
|
||||||
<span class="n">label_locator</span> <span class="o">=</span> <span class="n">ModalWindowLocators</span><span class="o">.</span><span class="n">LABEL_INPUT_FORM_USER_DATA</span>
|
|
||||||
|
|
||||||
<span class="c1"># Настройка заголовка и кнопки закрытия тулбара</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">window_title</span> <span class="o">=</span> <span class="s2">"Добавить нового пользователя"</span>
|
|
||||||
<span class="n">locator_button_toolbar_close</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">page</span><span class="o">.</span><span class="n">get_by_role</span><span class="p">(</span><span class="s2">"navigation"</span><span class="p">)</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span>
|
|
||||||
<span class="n">has_text</span><span class="o">=</span><span class="n">re</span><span class="o">.</span><span class="n">compile</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">window_title</span><span class="p">)</span>
|
|
||||||
<span class="p">)</span><span class="o">.</span><span class="n">get_by_role</span><span class="p">(</span><span class="s2">"button"</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">add_toolbar_title</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">window_title</span><span class="p">)</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">add_toolbar_button</span><span class="p">(</span><span class="n">locator_button_toolbar_close</span><span class="p">,</span> <span class="s2">"close"</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="c1"># Добавление элементов формы</span>
|
|
||||||
<span class="n">checkbox_1</span> <span class="o">=</span> <span class="n">Checkbox</span><span class="p">(</span>
|
|
||||||
<span class="n">page</span><span class="p">,</span>
|
|
||||||
<span class="n">input_form_locator</span><span class="o">.</span><span class="n">get_by_role</span><span class="p">(</span><span class="s2">"checkbox"</span><span class="p">)</span><span class="o">.</span><span class="n">nth</span><span class="p">(</span><span class="mi">0</span><span class="p">),</span>
|
|
||||||
<span class="s2">"active_directory"</span>
|
|
||||||
<span class="p">)</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">add_content_item</span><span class="p">(</span><span class="s2">"active_directory_checkbox"</span><span class="p">,</span> <span class="n">checkbox_1</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="n">label_1</span> <span class="o">=</span> <span class="n">Text</span><span class="p">(</span>
|
|
||||||
<span class="n">page</span><span class="p">,</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">page</span><span class="o">.</span><span class="n">locator</span><span class="p">(</span><span class="n">label_locator</span><span class="p">)</span><span class="o">.</span><span class="n">nth</span><span class="p">(</span><span class="mi">0</span><span class="p">),</span>
|
|
||||||
<span class="s2">"active_directory_checkbox_label"</span>
|
|
||||||
<span class="p">)</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">add_content_item</span><span class="p">(</span><span class="s2">"active_directory_checkbox_label"</span><span class="p">,</span> <span class="n">label_1</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="c1"># Начальный набор полей формы</span>
|
|
||||||
<span class="c1"># Поле Группа</span>
|
|
||||||
<span class="n">group_loc</span> <span class="o">=</span> <span class="n">input_form_locator</span><span class="o">.</span><span class="n">get_by_role</span><span class="p">(</span><span class="s2">"combobox"</span><span class="p">)</span><span class="o">.</span><span class="n">nth</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span>
|
|
||||||
<span class="n">group_input</span> <span class="o">=</span> <span class="n">TextInput</span><span class="p">(</span><span class="n">page</span><span class="p">,</span> <span class="n">group_loc</span><span class="p">,</span> <span class="s2">"group_input"</span><span class="p">)</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">add_content_item</span><span class="p">(</span><span class="s2">"group_input"</span><span class="p">,</span> <span class="n">group_input</span><span class="p">)</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">add_content_item</span><span class="p">(</span>
|
|
||||||
<span class="s2">"group_list"</span><span class="p">,</span>
|
|
||||||
<span class="n">DropdownList</span><span class="p">(</span><span class="n">page</span><span class="p">)</span>
|
|
||||||
<span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="n">locator_button_search</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">page</span><span class="o">.</span><span class="n">get_by_role</span><span class="p">(</span><span class="s2">"button"</span><span class="p">,</span> <span class="n">name</span><span class="o">=</span><span class="s2">"Поиск"</span><span class="p">)</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">add_button</span><span class="p">(</span><span class="n">locator_button_search</span><span class="p">,</span> <span class="s2">"search"</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="c1"># Поле Имя</span>
|
|
||||||
<span class="c1"># loc = input_form_locator.locator("xpath=div[2]").locator(text_field_locator)</span>
|
|
||||||
<span class="n">loc</span> <span class="o">=</span> <span class="n">input_form_locator</span><span class="o">.</span><span class="n">locator</span><span class="p">(</span><span class="s2">"xpath=div[3]"</span><span class="p">)</span><span class="o">.</span><span class="n">locator</span><span class="p">(</span><span class="n">text_field_locator</span><span class="p">)</span>
|
|
||||||
<span class="n">name_input</span> <span class="o">=</span> <span class="n">TextInput</span><span class="p">(</span><span class="n">page</span><span class="p">,</span> <span class="n">loc</span><span class="p">,</span> <span class="s2">"name_input"</span><span class="p">)</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">add_content_item</span><span class="p">(</span><span class="s2">"name_input"</span><span class="p">,</span> <span class="n">name_input</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="c1"># Чекбокс "Блокировка" - индекс 1</span>
|
|
||||||
<span class="n">checkbox_2</span> <span class="o">=</span> <span class="n">Checkbox</span><span class="p">(</span>
|
|
||||||
<span class="n">page</span><span class="p">,</span>
|
|
||||||
<span class="n">input_form_locator</span><span class="o">.</span><span class="n">get_by_role</span><span class="p">(</span><span class="s2">"checkbox"</span><span class="p">)</span><span class="o">.</span><span class="n">nth</span><span class="p">(</span><span class="mi">1</span><span class="p">),</span>
|
|
||||||
<span class="s2">"blocking"</span>
|
|
||||||
<span class="p">)</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">add_content_item</span><span class="p">(</span><span class="s2">"blocking_checkbox"</span><span class="p">,</span> <span class="n">checkbox_2</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="c1"># Метка "Блокировка" - индекс 1</span>
|
|
||||||
<span class="n">label_2</span> <span class="o">=</span> <span class="n">Text</span><span class="p">(</span>
|
|
||||||
<span class="n">page</span><span class="p">,</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">page</span><span class="o">.</span><span class="n">locator</span><span class="p">(</span><span class="n">label_locator</span><span class="p">)</span><span class="o">.</span><span class="n">nth</span><span class="p">(</span><span class="mi">1</span><span class="p">),</span>
|
|
||||||
<span class="s2">"blocking_checkbox_label"</span>
|
|
||||||
<span class="p">)</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">add_content_item</span><span class="p">(</span><span class="s2">"blocking_checkbox_label"</span><span class="p">,</span> <span class="n">label_2</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="c1"># Поле Роль</span>
|
|
||||||
<span class="n">role_loc</span> <span class="o">=</span> <span class="n">input_form_locator</span><span class="o">.</span><span class="n">get_by_role</span><span class="p">(</span><span class="s2">"combobox"</span><span class="p">)</span><span class="o">.</span><span class="n">nth</span><span class="p">(</span><span class="mi">1</span><span class="p">)</span>
|
|
||||||
<span class="n">role_input</span> <span class="o">=</span> <span class="n">TextInput</span><span class="p">(</span><span class="n">page</span><span class="p">,</span> <span class="n">role_loc</span><span class="p">,</span> <span class="s2">"role_input"</span><span class="p">)</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">add_content_item</span><span class="p">(</span><span class="s2">"role_input"</span><span class="p">,</span> <span class="n">role_input</span><span class="p">)</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">add_content_item</span><span class="p">(</span>
|
|
||||||
<span class="s2">"roles_list"</span><span class="p">,</span>
|
|
||||||
<span class="n">DropdownList</span><span class="p">(</span><span class="n">page</span><span class="p">)</span>
|
|
||||||
<span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="c1"># Поле Комментарий</span>
|
|
||||||
<span class="n">loc</span> <span class="o">=</span> <span class="n">input_form_locator</span><span class="o">.</span><span class="n">locator</span><span class="p">(</span><span class="s2">"xpath=div[7]"</span><span class="p">)</span><span class="o">.</span><span class="n">locator</span><span class="p">(</span><span class="n">text_field_locator</span><span class="p">)</span>
|
|
||||||
<span class="n">commentary_input</span> <span class="o">=</span> <span class="n">TextInput</span><span class="p">(</span><span class="n">page</span><span class="p">,</span> <span class="n">loc</span><span class="p">,</span> <span class="s2">"commentary_input"</span><span class="p">)</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">add_content_item</span><span class="p">(</span><span class="s2">"commentary_input"</span><span class="p">,</span> <span class="n">commentary_input</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="c1"># Поле E-mail</span>
|
|
||||||
<span class="n">loc</span> <span class="o">=</span> <span class="n">input_form_locator</span><span class="o">.</span><span class="n">locator</span><span class="p">(</span><span class="s2">"xpath=div[8]"</span><span class="p">)</span><span class="o">.</span><span class="n">locator</span><span class="p">(</span><span class="n">text_field_locator</span><span class="p">)</span>
|
|
||||||
<span class="n">email_input</span> <span class="o">=</span> <span class="n">TextInput</span><span class="p">(</span><span class="n">page</span><span class="p">,</span> <span class="n">loc</span><span class="p">,</span> <span class="s2">"email_input"</span><span class="p">)</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">add_content_item</span><span class="p">(</span><span class="s2">"email_input"</span><span class="p">,</span> <span class="n">email_input</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="c1"># Поле Номер для СМС</span>
|
|
||||||
<span class="n">loc</span> <span class="o">=</span> <span class="n">input_form_locator</span><span class="o">.</span><span class="n">locator</span><span class="p">(</span><span class="s2">"xpath=div[9]"</span><span class="p">)</span><span class="o">.</span><span class="n">locator</span><span class="p">(</span><span class="n">text_field_locator</span><span class="p">)</span>
|
|
||||||
<span class="n">phone_input</span> <span class="o">=</span> <span class="n">TextInput</span><span class="p">(</span><span class="n">page</span><span class="p">,</span> <span class="n">loc</span><span class="p">,</span> <span class="s2">"phone_input"</span><span class="p">)</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">add_content_item</span><span class="p">(</span><span class="s2">"phone_input"</span><span class="p">,</span> <span class="n">phone_input</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="c1"># Чекбокс "Подписка на Push-уведомления" - индекс 2</span>
|
|
||||||
<span class="n">checkbox_3</span> <span class="o">=</span> <span class="n">Checkbox</span><span class="p">(</span>
|
|
||||||
<span class="n">page</span><span class="p">,</span>
|
|
||||||
<span class="n">input_form_locator</span><span class="o">.</span><span class="n">get_by_role</span><span class="p">(</span><span class="s2">"checkbox"</span><span class="p">)</span><span class="o">.</span><span class="n">nth</span><span class="p">(</span><span class="mi">2</span><span class="p">),</span>
|
|
||||||
<span class="s2">"push_notification"</span>
|
|
||||||
<span class="p">)</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">add_content_item</span><span class="p">(</span><span class="s2">"push_notification_checkbox"</span><span class="p">,</span> <span class="n">checkbox_3</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="c1"># Метка "Подписка на Push-уведомления" - индекс 2</span>
|
|
||||||
<span class="n">label_3</span> <span class="o">=</span> <span class="n">Text</span><span class="p">(</span>
|
|
||||||
<span class="n">page</span><span class="p">,</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">page</span><span class="o">.</span><span class="n">locator</span><span class="p">(</span><span class="n">label_locator</span><span class="p">)</span><span class="o">.</span><span class="n">nth</span><span class="p">(</span><span class="mi">2</span><span class="p">),</span>
|
|
||||||
<span class="s2">"push_notification_checkbox_label"</span>
|
|
||||||
<span class="p">)</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">add_content_item</span><span class="p">(</span><span class="s2">"push_notification_checkbox_label"</span><span class="p">,</span> <span class="n">label_3</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="c1"># Добавление кнопок действий</span>
|
|
||||||
<span class="n">locator_button_add</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">page</span><span class="o">.</span><span class="n">get_by_role</span><span class="p">(</span><span class="s2">"button"</span><span class="p">,</span> <span class="n">name</span><span class="o">=</span><span class="s2">"Добавить"</span><span class="p">)</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">add_button</span><span class="p">(</span><span class="n">locator_button_add</span><span class="p">,</span> <span class="s2">"add"</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="n">locator_button_close</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">page</span><span class="o">.</span><span class="n">get_by_role</span><span class="p">(</span><span class="s2">"button"</span><span class="p">,</span> <span class="n">name</span><span class="o">=</span><span class="s2">"Закрыть"</span><span class="p">)</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">add_button</span><span class="p">(</span><span class="n">locator_button_close</span><span class="p">,</span> <span class="s2">"close"</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">new_user_confirm</span> <span class="o">=</span> <span class="n">ConfirmComponent</span><span class="p">(</span><span class="n">page</span><span class="p">,</span> <span class="s2">" Отмена "</span><span class="p">,</span> <span class="s2">" Добавить "</span><span class="p">)</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<span class="c1"># Действия:</span>
|
|
||||||
<div class="viewcode-block" id="AddADUserModalWindow.check_active_directory_checkbox">
|
|
||||||
<a class="viewcode-back" href="../../components_derived.html#components_derived.modal_add_AD_user.AddADUserModalWindow.check_active_directory_checkbox">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">check_active_directory_checkbox</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Включает чек-бокс Active Directory. """</span>
|
|
||||||
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">get_content_item</span><span class="p">(</span><span class="s2">"active_directory_checkbox"</span><span class="p">)</span><span class="o">.</span><span class="n">check</span><span class="p">(</span><span class="n">force</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="AddADUserModalWindow.uncheck_active_directory_checkbox">
|
|
||||||
<a class="viewcode-back" href="../../components_derived.html#components_derived.modal_add_AD_user.AddADUserModalWindow.uncheck_active_directory_checkbox">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">uncheck_active_directory_checkbox</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Выключает чек-бокс Active Directory. """</span>
|
|
||||||
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">get_content_item</span><span class="p">(</span><span class="s2">"active_directory_checkbox"</span><span class="p">)</span><span class="o">.</span><span class="n">uncheck</span><span class="p">(</span><span class="n">force</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="AddADUserModalWindow.check_blocking_checkbox">
|
|
||||||
<a class="viewcode-back" href="../../components_derived.html#components_derived.modal_add_AD_user.AddADUserModalWindow.check_blocking_checkbox">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">check_blocking_checkbox</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Включает чек-бокс Блокировка."""</span>
|
|
||||||
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">get_content_item</span><span class="p">(</span><span class="s2">"blocking_checkbox"</span><span class="p">)</span><span class="o">.</span><span class="n">check</span><span class="p">(</span><span class="n">force</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="AddADUserModalWindow.uncheck_blocking_checkbox">
|
|
||||||
<a class="viewcode-back" href="../../components_derived.html#components_derived.modal_add_AD_user.AddADUserModalWindow.uncheck_blocking_checkbox">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">uncheck_blocking_checkbox</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Выключает чек-бокс Блокировка."""</span>
|
|
||||||
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">get_content_item</span><span class="p">(</span><span class="s2">"blocking_checkbox"</span><span class="p">)</span><span class="o">.</span><span class="n">uncheck</span><span class="p">(</span><span class="n">force</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="AddADUserModalWindow.check_push_notification_checkbox">
|
|
||||||
<a class="viewcode-back" href="../../components_derived.html#components_derived.modal_add_AD_user.AddADUserModalWindow.check_push_notification_checkbox">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">check_push_notification_checkbox</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Включает чек-бокс Push-уведомления."""</span>
|
|
||||||
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">get_content_item</span><span class="p">(</span><span class="s2">"push_notification_checkbox"</span><span class="p">)</span><span class="o">.</span><span class="n">check</span><span class="p">(</span><span class="n">force</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="AddADUserModalWindow.uncheck_push_notification_checkbox">
|
|
||||||
<a class="viewcode-back" href="../../components_derived.html#components_derived.modal_add_AD_user.AddADUserModalWindow.uncheck_push_notification_checkbox">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">uncheck_push_notification_checkbox</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Выключает чек-бокс Push-уведомления."""</span>
|
|
||||||
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">get_content_item</span><span class="p">(</span><span class="s2">"push_notification_checkbox"</span><span class="p">)</span><span class="o">.</span><span class="n">uncheck</span><span class="p">(</span><span class="n">force</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="AddADUserModalWindow.update_input_form_fields">
|
|
||||||
<a class="viewcode-back" href="../../components_derived.html#components_derived.modal_add_AD_user.AddADUserModalWindow.update_input_form_fields">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">update_input_form_fields</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expand</span><span class="p">):</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Персчитывает локаторы полей формы ввода при добавлении/удалении дополнительного поля. """</span>
|
|
||||||
|
|
||||||
<span class="n">input_form_locator</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">page</span><span class="o">.</span><span class="n">locator</span><span class="p">(</span><span class="n">ModalWindowLocators</span><span class="o">.</span><span class="n">INPUT_FORM_USER_DATA</span><span class="p">)</span>
|
|
||||||
<span class="c1"># text_field_locator = ModalWindowLocators.TEXT_FIELD_INPUT_FORM_USER_DATA</span>
|
|
||||||
<span class="n">text_field_locator</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"xpath=</span><span class="si">{</span><span class="n">ModalWindowLocators</span><span class="o">.</span><span class="n">TEXT_FIELD_INPUT_FORM_USER_DATA</span><span class="si">}</span><span class="s2">"</span>
|
|
||||||
|
|
||||||
<span class="k">if</span> <span class="n">expand</span><span class="p">:</span>
|
|
||||||
<span class="n">new_loc</span> <span class="o">=</span> <span class="n">input_form_locator</span><span class="o">.</span><span class="n">locator</span><span class="p">(</span><span class="s2">"xpath=div[4]"</span><span class="p">)</span><span class="o">.</span><span class="n">locator</span><span class="p">(</span><span class="n">text_field_locator</span><span class="p">)</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">get_content_item</span><span class="p">(</span><span class="s2">"name_input"</span><span class="p">)</span><span class="o">.</span><span class="n">update_locator</span><span class="p">(</span><span class="n">new_loc</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="n">new_loc</span> <span class="o">=</span> <span class="n">input_form_locator</span><span class="o">.</span><span class="n">locator</span><span class="p">(</span><span class="s2">"xpath=div[8]"</span><span class="p">)</span><span class="o">.</span><span class="n">locator</span><span class="p">(</span><span class="n">text_field_locator</span><span class="p">)</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">get_content_item</span><span class="p">(</span><span class="s2">"commentary_input"</span><span class="p">)</span><span class="o">.</span><span class="n">update_locator</span><span class="p">(</span><span class="n">new_loc</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="n">new_loc</span> <span class="o">=</span> <span class="n">input_form_locator</span><span class="o">.</span><span class="n">locator</span><span class="p">(</span><span class="s2">"xpath=div[9]"</span><span class="p">)</span><span class="o">.</span><span class="n">locator</span><span class="p">(</span><span class="n">text_field_locator</span><span class="p">)</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">get_content_item</span><span class="p">(</span><span class="s2">"email_input"</span><span class="p">)</span><span class="o">.</span><span class="n">update_locator</span><span class="p">(</span><span class="n">new_loc</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="n">new_loc</span> <span class="o">=</span> <span class="n">input_form_locator</span><span class="o">.</span><span class="n">locator</span><span class="p">(</span><span class="s2">"xpath=div[10]"</span><span class="p">)</span><span class="o">.</span><span class="n">locator</span><span class="p">(</span><span class="n">text_field_locator</span><span class="p">)</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">get_content_item</span><span class="p">(</span><span class="s2">"phone_input"</span><span class="p">)</span><span class="o">.</span><span class="n">update_locator</span><span class="p">(</span><span class="n">new_loc</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="n">role_loc</span> <span class="o">=</span> <span class="n">input_form_locator</span><span class="o">.</span><span class="n">get_by_role</span><span class="p">(</span><span class="s2">"combobox"</span><span class="p">)</span><span class="o">.</span><span class="n">nth</span><span class="p">(</span><span class="mi">2</span><span class="p">)</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">get_content_item</span><span class="p">(</span><span class="s2">"role_input"</span><span class="p">)</span><span class="o">.</span><span class="n">update_locator</span><span class="p">(</span><span class="n">role_loc</span><span class="p">)</span>
|
|
||||||
<span class="k">else</span><span class="p">:</span>
|
|
||||||
<span class="n">new_loc</span> <span class="o">=</span> <span class="n">input_form_locator</span><span class="o">.</span><span class="n">locator</span><span class="p">(</span><span class="s2">"xpath=div[3]"</span><span class="p">)</span><span class="o">.</span><span class="n">locator</span><span class="p">(</span><span class="n">text_field_locator</span><span class="p">)</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">get_content_item</span><span class="p">(</span><span class="s2">"name_input"</span><span class="p">)</span><span class="o">.</span><span class="n">update_locator</span><span class="p">(</span><span class="n">new_loc</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="n">new_loc</span> <span class="o">=</span> <span class="n">input_form_locator</span><span class="o">.</span><span class="n">locator</span><span class="p">(</span><span class="s2">"xpath=div[7]"</span><span class="p">)</span><span class="o">.</span><span class="n">locator</span><span class="p">(</span><span class="n">text_field_locator</span><span class="p">)</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">get_content_item</span><span class="p">(</span><span class="s2">"commentary_input"</span><span class="p">)</span><span class="o">.</span><span class="n">update_locator</span><span class="p">(</span><span class="n">new_loc</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="n">new_loc</span> <span class="o">=</span> <span class="n">input_form_locator</span><span class="o">.</span><span class="n">locator</span><span class="p">(</span><span class="s2">"xpath=div[8]"</span><span class="p">)</span><span class="o">.</span><span class="n">locator</span><span class="p">(</span><span class="n">text_field_locator</span><span class="p">)</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">get_content_item</span><span class="p">(</span><span class="s2">"email_input"</span><span class="p">)</span><span class="o">.</span><span class="n">update_locator</span><span class="p">(</span><span class="n">new_loc</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="n">new_loc</span> <span class="o">=</span> <span class="n">input_form_locator</span><span class="o">.</span><span class="n">locator</span><span class="p">(</span><span class="s2">"xpath=div[9]"</span><span class="p">)</span><span class="o">.</span><span class="n">locator</span><span class="p">(</span><span class="n">text_field_locator</span><span class="p">)</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">get_content_item</span><span class="p">(</span><span class="s2">"phone_input"</span><span class="p">)</span><span class="o">.</span><span class="n">update_locator</span><span class="p">(</span><span class="n">new_loc</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="n">role_loc</span> <span class="o">=</span> <span class="n">input_form_locator</span><span class="o">.</span><span class="n">get_by_role</span><span class="p">(</span><span class="s2">"combobox"</span><span class="p">)</span><span class="o">.</span><span class="n">nth</span><span class="p">(</span><span class="mi">1</span><span class="p">)</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">get_content_item</span><span class="p">(</span><span class="s2">"role_input"</span><span class="p">)</span><span class="o">.</span><span class="n">update_locator</span><span class="p">(</span><span class="n">role_loc</span><span class="p">)</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="AddADUserModalWindow.new_user">
|
|
||||||
<a class="viewcode-back" href="../../components_derived.html#components_derived.modal_add_AD_user.AddADUserModalWindow.new_user">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">new_user</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">user_data</span><span class="p">):</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Заполняет форму и добавляет нового пользователя.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Args:</span>
|
|
||||||
<span class="sd"> user_data (dict): Данные пользователя (имя, роль, пароль и др.)</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
|
|
||||||
<span class="n">menu_locator</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">page</span><span class="o">.</span><span class="n">locator</span><span class="p">(</span><span class="n">ModalWindowLocators</span><span class="o">.</span><span class="n">MENU_INPUT_FORM_USER_DATA</span><span class="p">)</span>
|
|
||||||
<span class="n">input_form_locator</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">page</span><span class="o">.</span><span class="n">locator</span><span class="p">(</span><span class="n">ModalWindowLocators</span><span class="o">.</span><span class="n">INPUT_FORM_USER_DATA</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="c1"># Поле "Группа" - выбор из списка</span>
|
|
||||||
<span class="n">group_name</span> <span class="o">=</span> <span class="n">user_data</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"group"</span><span class="p">)</span>
|
|
||||||
<span class="k">if</span> <span class="n">group_name</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="k">assert</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"Value of 'group' is missing"</span>
|
|
||||||
|
|
||||||
<span class="c1"># Поле "Пользователи AD" - выбор из списка</span>
|
|
||||||
<span class="n">name_AD</span> <span class="o">=</span> <span class="n">user_data</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"name_AD"</span><span class="p">)</span>
|
|
||||||
<span class="k">if</span> <span class="n">name_AD</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="k">assert</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"Value of 'name_AD' is missing"</span>
|
|
||||||
|
|
||||||
<span class="c1"># Поле "Имя" - если определено (не None) вводим вручную</span>
|
|
||||||
<span class="n">name</span> <span class="o">=</span> <span class="n">user_data</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"name"</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="c1"># Поле "Роль" - выбор из списка</span>
|
|
||||||
<span class="n">role</span> <span class="o">=</span> <span class="n">user_data</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"role"</span><span class="p">)</span>
|
|
||||||
<span class="k">if</span> <span class="n">role</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="k">assert</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"Value of 'role' is missing"</span>
|
|
||||||
|
|
||||||
<span class="c1"># Поиск и выбор заданной группы из списка существующих</span>
|
|
||||||
<span class="n">group_field</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_content_item</span><span class="p">(</span><span class="s2">"group_input"</span><span class="p">)</span>
|
|
||||||
<span class="n">group_field</span><span class="o">.</span><span class="n">click</span><span class="p">()</span>
|
|
||||||
|
|
||||||
<span class="n">group_list</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_content_item</span><span class="p">(</span><span class="s2">"group_list"</span><span class="p">)</span>
|
|
||||||
<span class="n">group_list</span><span class="o">.</span><span class="n">scroll_until_end</span><span class="p">(</span><span class="n">menu_locator</span><span class="p">)</span>
|
|
||||||
<span class="n">group_names</span> <span class="o">=</span> <span class="n">group_list</span><span class="o">.</span><span class="n">get_item_names</span><span class="p">(</span><span class="n">menu_locator</span><span class="p">)</span>
|
|
||||||
<span class="k">if</span> <span class="n">group_name</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">group_names</span><span class="p">:</span>
|
|
||||||
<span class="k">assert</span> <span class="kc">False</span><span class="p">,</span> <span class="sa">f</span><span class="s2">"Required group name </span><span class="si">{</span><span class="n">group_name</span><span class="si">}</span><span class="s2"> is missing"</span>
|
|
||||||
|
|
||||||
<span class="n">group_list</span><span class="o">.</span><span class="n">check_item_with_text</span><span class="p">(</span><span class="n">group_name</span><span class="p">)</span>
|
|
||||||
<span class="n">group_list</span><span class="o">.</span><span class="n">click_item_with_text</span><span class="p">(</span><span class="n">group_name</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="c1"># Нажатие кнопки "Поиск"</span>
|
|
||||||
<span class="n">search_button</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_button_by_name</span><span class="p">(</span><span class="s2">"search"</span><span class="p">)</span>
|
|
||||||
<span class="n">search_button</span><span class="o">.</span><span class="n">click</span><span class="p">()</span>
|
|
||||||
|
|
||||||
<span class="n">count</span> <span class="o">=</span> <span class="n">input_form_locator</span><span class="o">.</span><span class="n">get_by_role</span><span class="p">(</span><span class="s2">"combobox"</span><span class="p">)</span><span class="o">.</span><span class="n">count</span><span class="p">()</span>
|
|
||||||
<span class="k">if</span> <span class="n">count</span> <span class="o">==</span> <span class="mi">2</span><span class="p">:</span>
|
|
||||||
<span class="k">assert</span> <span class="kc">False</span><span class="p">,</span> <span class="sa">f</span><span class="s2">"Selected group </span><span class="si">{</span><span class="n">group_name</span><span class="si">}</span><span class="s2"> is empty. Use another group."</span>
|
|
||||||
|
|
||||||
<span class="c1"># Если в группе есть пользователи, открывается новое поле, персчет локаторов</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">update_input_form_fields</span><span class="p">(</span><span class="n">expand</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="c1"># Поиск и выбор заданного пользователя AD из списка существующих</span>
|
|
||||||
<span class="n">user_AD_loc</span> <span class="o">=</span> <span class="n">input_form_locator</span><span class="o">.</span><span class="n">get_by_role</span><span class="p">(</span><span class="s2">"combobox"</span><span class="p">)</span><span class="o">.</span><span class="n">nth</span><span class="p">(</span><span class="mi">1</span><span class="p">)</span>
|
|
||||||
<span class="n">user_AD_input</span> <span class="o">=</span> <span class="n">TextInput</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">page</span><span class="p">,</span> <span class="n">user_AD_loc</span><span class="p">,</span> <span class="s2">"user_AD_input"</span><span class="p">)</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">add_content_item</span><span class="p">(</span><span class="s2">"user_AD_input"</span><span class="p">,</span> <span class="n">user_AD_input</span><span class="p">)</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">add_content_item</span><span class="p">(</span>
|
|
||||||
<span class="s2">"user_AD_list"</span><span class="p">,</span>
|
|
||||||
<span class="n">DropdownList</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">page</span><span class="p">)</span>
|
|
||||||
<span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="n">user_AD_input</span><span class="o">.</span><span class="n">click</span><span class="p">()</span>
|
|
||||||
<span class="n">user_AD_list</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_content_item</span><span class="p">(</span><span class="s2">"user_AD_list"</span><span class="p">)</span>
|
|
||||||
<span class="n">user_AD_list</span><span class="o">.</span><span class="n">scroll_until_end</span><span class="p">(</span><span class="n">menu_locator</span><span class="p">)</span>
|
|
||||||
<span class="n">user_AD_names</span> <span class="o">=</span> <span class="n">group_list</span><span class="o">.</span><span class="n">get_item_names</span><span class="p">(</span><span class="n">menu_locator</span><span class="p">)</span>
|
|
||||||
<span class="k">if</span> <span class="n">name_AD</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">user_AD_names</span><span class="p">:</span>
|
|
||||||
<span class="k">assert</span> <span class="kc">False</span><span class="p">,</span> <span class="sa">f</span><span class="s2">"Required user name </span><span class="si">{</span><span class="n">name_AD</span><span class="si">}</span><span class="s2"> is missing"</span>
|
|
||||||
|
|
||||||
<span class="n">user_AD_list</span><span class="o">.</span><span class="n">check_item_with_text</span><span class="p">(</span><span class="n">name_AD</span><span class="p">)</span>
|
|
||||||
<span class="n">user_AD_list</span><span class="o">.</span><span class="n">click_item_with_text</span><span class="p">(</span><span class="n">name_AD</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="c1"># Заполнение поля "Имя" (ручной ввод) если задано</span>
|
|
||||||
<span class="k">if</span> <span class="n">name</span><span class="p">:</span>
|
|
||||||
<span class="n">name_field</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_content_item</span><span class="p">(</span><span class="s2">"name_input"</span><span class="p">)</span>
|
|
||||||
<span class="n">name_field</span><span class="o">.</span><span class="n">input_value</span><span class="p">(</span><span class="n">name</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="c1"># Поиск и выбор заданной роли из списка существующих</span>
|
|
||||||
<span class="n">role_field</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_content_item</span><span class="p">(</span><span class="s2">"role_input"</span><span class="p">)</span>
|
|
||||||
<span class="n">role_field</span><span class="o">.</span><span class="n">click</span><span class="p">()</span>
|
|
||||||
|
|
||||||
<span class="n">roles_list</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_content_item</span><span class="p">(</span><span class="s2">"roles_list"</span><span class="p">)</span>
|
|
||||||
<span class="n">roles_list</span><span class="o">.</span><span class="n">check_item_with_text</span><span class="p">(</span><span class="n">user_data</span><span class="p">[</span><span class="s2">"role"</span><span class="p">])</span>
|
|
||||||
<span class="n">roles_list</span><span class="o">.</span><span class="n">click_item_with_text</span><span class="p">(</span><span class="n">user_data</span><span class="p">[</span><span class="s2">"role"</span><span class="p">])</span>
|
|
||||||
|
|
||||||
<span class="k">if</span> <span class="n">user_data</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"commentary"</span><span class="p">):</span>
|
|
||||||
<span class="n">input_field</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_content_item</span><span class="p">(</span><span class="s2">"commentary_input"</span><span class="p">)</span>
|
|
||||||
<span class="n">input_field</span><span class="o">.</span><span class="n">input_value</span><span class="p">(</span><span class="n">user_data</span><span class="p">[</span><span class="s2">"commentary"</span><span class="p">])</span>
|
|
||||||
|
|
||||||
<span class="k">if</span> <span class="n">user_data</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"email"</span><span class="p">):</span>
|
|
||||||
<span class="n">input_field</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_content_item</span><span class="p">(</span><span class="s2">"email_input"</span><span class="p">)</span>
|
|
||||||
<span class="n">input_field</span><span class="o">.</span><span class="n">input_value</span><span class="p">(</span><span class="n">user_data</span><span class="p">[</span><span class="s2">"email"</span><span class="p">])</span>
|
|
||||||
|
|
||||||
<span class="k">if</span> <span class="n">user_data</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"phone_number"</span><span class="p">):</span>
|
|
||||||
<span class="n">input_field</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_content_item</span><span class="p">(</span><span class="s2">"phone_input"</span><span class="p">)</span>
|
|
||||||
<span class="n">input_field</span><span class="o">.</span><span class="n">input_value</span><span class="p">(</span><span class="n">user_data</span><span class="p">[</span><span class="s2">"phone_number"</span><span class="p">])</span>
|
|
||||||
|
|
||||||
<span class="k">if</span> <span class="n">user_data</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"blocking_checked"</span><span class="p">):</span>
|
|
||||||
<span class="n">checkbox</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_content_item</span><span class="p">(</span><span class="s2">"blocking_checkbox"</span><span class="p">)</span>
|
|
||||||
<span class="k">if</span> <span class="n">user_data</span><span class="p">[</span><span class="s2">"blocking_checked"</span><span class="p">]:</span>
|
|
||||||
<span class="n">checkbox</span><span class="o">.</span><span class="n">check</span><span class="p">()</span>
|
|
||||||
<span class="k">else</span><span class="p">:</span>
|
|
||||||
<span class="n">checkbox</span><span class="o">.</span><span class="n">uncheck</span><span class="p">()</span>
|
|
||||||
|
|
||||||
<span class="k">if</span> <span class="n">user_data</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"push_notification_checked"</span><span class="p">):</span>
|
|
||||||
<span class="n">checkbox</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_content_item</span><span class="p">(</span><span class="s2">"push_notification_checkbox"</span><span class="p">)</span>
|
|
||||||
<span class="k">if</span> <span class="n">user_data</span><span class="p">[</span><span class="s2">"push_notification_checked"</span><span class="p">]:</span>
|
|
||||||
<span class="n">checkbox</span><span class="o">.</span><span class="n">check</span><span class="p">()</span>
|
|
||||||
<span class="k">else</span><span class="p">:</span>
|
|
||||||
<span class="n">checkbox</span><span class="o">.</span><span class="n">uncheck</span><span class="p">()</span>
|
|
||||||
|
|
||||||
<span class="c1"># Отправка формы</span>
|
|
||||||
<span class="n">add_button</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_button_by_name</span><span class="p">(</span><span class="s2">"add"</span><span class="p">)</span>
|
|
||||||
<span class="n">add_button</span><span class="o">.</span><span class="n">click</span><span class="p">()</span>
|
|
||||||
|
|
||||||
<span class="c1"># Подтверждение действия</span>
|
|
||||||
<span class="n">title</span> <span class="o">=</span> <span class="s2">"Добавить нового пользователя"</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">new_user_confirm</span><span class="o">.</span><span class="n">check_title</span><span class="p">(</span>
|
|
||||||
<span class="n">title</span><span class="p">,</span>
|
|
||||||
<span class="sa">f</span><span class="s2">"Confirmation dialog window with title '</span><span class="si">{</span><span class="n">title</span><span class="si">}</span><span class="s2">' is missing"</span>
|
|
||||||
<span class="p">)</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">new_user_confirm</span><span class="o">.</span><span class="n">click_allow_button</span><span class="p">()</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="AddADUserModalWindow.close_window">
|
|
||||||
<a class="viewcode-back" href="../../components_derived.html#components_derived.modal_add_AD_user.AddADUserModalWindow.close_window">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">close_window</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Закрывает модальное окно через кнопку 'Закрыть'."""</span>
|
|
||||||
|
|
||||||
<span class="n">close_button</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_button_by_name</span><span class="p">(</span><span class="s2">"close"</span><span class="p">)</span>
|
|
||||||
<span class="n">close_button</span><span class="o">.</span><span class="n">click</span><span class="p">()</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="AddADUserModalWindow.close_window_by_toolbar_button">
|
|
||||||
<a class="viewcode-back" href="../../components_derived.html#components_derived.modal_add_AD_user.AddADUserModalWindow.close_window_by_toolbar_button">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">close_window_by_toolbar_button</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Закрывает модальное окно через кнопку в тулбаре."""</span>
|
|
||||||
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">click_toolbar_close_button</span><span class="p">()</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<span class="c1"># Проверки:</span>
|
|
||||||
<div class="viewcode-block" id="AddADUserModalWindow.check_content">
|
|
||||||
<a class="viewcode-back" href="../../components_derived.html#components_derived.modal_add_AD_user.AddADUserModalWindow.check_content">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">check_content</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Проверяет наличие и корректность всех элементов формы."""</span>
|
|
||||||
|
|
||||||
<span class="n">input_form_locator</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">page</span><span class="o">.</span><span class="n">locator</span><span class="p">(</span><span class="n">ModalWindowLocators</span><span class="o">.</span><span class="n">INPUT_FORM_USER_DATA</span><span class="p">)</span>
|
|
||||||
<span class="n">menu_locator</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">page</span><span class="o">.</span><span class="n">locator</span><span class="p">(</span><span class="n">ModalWindowLocators</span><span class="o">.</span><span class="n">MENU_INPUT_FORM_USER_DATA</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">check_by_window_title</span><span class="p">()</span>
|
|
||||||
|
|
||||||
<span class="n">is_checked</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_content_item</span><span class="p">(</span><span class="s2">"active_directory_checkbox"</span><span class="p">)</span><span class="o">.</span><span class="n">is_checked</span><span class="p">()</span>
|
|
||||||
<span class="k">if</span> <span class="ow">not</span> <span class="n">is_checked</span><span class="p">:</span>
|
|
||||||
<span class="k">assert</span> <span class="kc">False</span><span class="p">,</span> \
|
|
||||||
<span class="s2">"The checkbox 'Active Directory'should be checked for the add user from Active Directory window"</span>
|
|
||||||
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">check_toolbar_button_visibility</span><span class="p">(</span><span class="s2">"close"</span><span class="p">)</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">check_toolbar_button_tooltip</span><span class="p">(</span><span class="s2">"close"</span><span class="p">,</span> <span class="s2">"Закрыть"</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="n">no_op_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"roles_list"</span><span class="p">,</span> <span class="s2">"group_list"</span><span class="p">]</span>
|
|
||||||
|
|
||||||
<span class="k">for</span> <span class="n">name</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">content_items</span><span class="o">.</span><span class="n">keys</span><span class="p">():</span>
|
|
||||||
<span class="n">item</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_content_item</span><span class="p">(</span><span class="n">name</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="k">if</span> <span class="n">name</span> <span class="o">==</span> <span class="s2">"active_directory_checkbox_label"</span><span class="p">:</span>
|
|
||||||
<span class="n">item</span><span class="o">.</span><span class="n">check_have_text</span><span class="p">(</span>
|
|
||||||
<span class="s2">"Active Directory"</span><span class="p">,</span>
|
|
||||||
<span class="s2">"Label 'Active Directory' is missing"</span>
|
|
||||||
<span class="p">)</span>
|
|
||||||
<span class="k">elif</span> <span class="n">name</span> <span class="o">==</span> <span class="s2">"blocking_checkbox_label"</span><span class="p">:</span>
|
|
||||||
<span class="n">item</span><span class="o">.</span><span class="n">check_have_text</span><span class="p">(</span>
|
|
||||||
<span class="s2">"Блокировка"</span><span class="p">,</span>
|
|
||||||
<span class="s2">"Label 'Блокировка' is missing"</span>
|
|
||||||
<span class="p">)</span>
|
|
||||||
<span class="k">elif</span> <span class="n">name</span> <span class="o">==</span> <span class="s2">"push_notification_checkbox_label"</span><span class="p">:</span>
|
|
||||||
<span class="n">item</span><span class="o">.</span><span class="n">check_have_text</span><span class="p">(</span>
|
|
||||||
<span class="s2">"Подписка на Push-уведомления"</span><span class="p">,</span>
|
|
||||||
<span class="s2">"Label 'Подписка на Push-уведомления' is missing"</span>
|
|
||||||
<span class="p">)</span>
|
|
||||||
<span class="k">elif</span> <span class="n">name</span> <span class="o">==</span> <span class="s2">"group_input"</span><span class="p">:</span>
|
|
||||||
<span class="n">item</span><span class="o">.</span><span class="n">click</span><span class="p">()</span>
|
|
||||||
<span class="n">group_list</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_content_item</span><span class="p">(</span><span class="s2">"group_list"</span><span class="p">)</span>
|
|
||||||
<span class="n">group_list</span><span class="o">.</span><span class="n">check_visibility</span><span class="p">(</span><span class="n">menu_locator</span><span class="p">,</span>
|
|
||||||
<span class="s2">"Groups list is missing"</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="n">is_scrollable_vertically</span> <span class="o">=</span> <span class="n">group_list</span><span class="o">.</span><span class="n">check_vertical_scrolling</span><span class="p">(</span><span class="n">menu_locator</span><span class="p">)</span>
|
|
||||||
<span class="k">assert</span> <span class="n">is_scrollable_vertically</span><span class="p">,</span> <span class="s2">"Groups list should be scrollable_vertically"</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">page</span><span class="o">.</span><span class="n">keyboard</span><span class="o">.</span><span class="n">press</span><span class="p">(</span><span class="s2">"Escape"</span><span class="p">)</span>
|
|
||||||
<span class="k">elif</span> <span class="n">name</span> <span class="o">==</span> <span class="s2">"role_input"</span><span class="p">:</span>
|
|
||||||
<span class="n">item</span><span class="o">.</span><span class="n">click</span><span class="p">()</span>
|
|
||||||
<span class="n">roles_list</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_content_item</span><span class="p">(</span><span class="s2">"roles_list"</span><span class="p">)</span>
|
|
||||||
<span class="n">roles_list</span><span class="o">.</span><span class="n">check_visibility</span><span class="p">(</span><span class="n">menu_locator</span><span class="p">,</span>
|
|
||||||
<span class="s2">"Roles list is missing"</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="n">is_scrollable_vertically</span> <span class="o">=</span> <span class="n">roles_list</span><span class="o">.</span><span class="n">check_vertical_scrolling</span><span class="p">(</span><span class="n">menu_locator</span><span class="p">)</span>
|
|
||||||
<span class="k">assert</span> <span class="ow">not</span> <span class="n">is_scrollable_vertically</span><span class="p">,</span> \
|
|
||||||
<span class="s2">"Roles list should not be scrollable_vertically"</span>
|
|
||||||
|
|
||||||
<span class="k">for</span> <span class="n">role</span> <span class="ow">in</span> <span class="n">roles_dict</span><span class="o">.</span><span class="n">values</span><span class="p">():</span>
|
|
||||||
<span class="c1"># временно, пока есть несоответствие со списком ролей в вкладке Сессии</span>
|
|
||||||
<span class="k">if</span> <span class="n">role</span> <span class="o">==</span> <span class="s2">"Пользователь"</span><span class="p">:</span>
|
|
||||||
<span class="k">continue</span>
|
|
||||||
<span class="n">roles_list</span><span class="o">.</span><span class="n">check_item_with_text</span><span class="p">(</span><span class="n">role</span><span class="p">)</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">page</span><span class="o">.</span><span class="n">keyboard</span><span class="o">.</span><span class="n">press</span><span class="p">(</span><span class="s2">"Escape"</span><span class="p">)</span>
|
|
||||||
<span class="k">elif</span> <span class="n">name</span> <span class="ow">in</span> <span class="n">no_op_names</span><span class="p">:</span>
|
|
||||||
<span class="k">continue</span>
|
|
||||||
<span class="k">else</span><span class="p">:</span>
|
|
||||||
<span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">"check item: </span><span class="si">{</span><span class="n">name</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span>
|
|
||||||
<span class="n">item</span><span class="o">.</span><span class="n">check_visibility</span><span class="p">(</span>
|
|
||||||
<span class="sa">f</span><span class="s2">"Modal window content item with name '</span><span class="si">{</span><span class="n">name</span><span class="si">}</span><span class="s2">' is missing"</span>
|
|
||||||
<span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="c1"># Дополнительная проверка состояния чекбоксов</span>
|
|
||||||
<span class="n">blocking_checkbox</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_content_item</span><span class="p">(</span><span class="s2">"blocking_checkbox"</span><span class="p">)</span>
|
|
||||||
<span class="n">is_blocking_checked</span> <span class="o">=</span> <span class="n">blocking_checkbox</span><span class="o">.</span><span class="n">is_checked</span><span class="p">()</span>
|
|
||||||
<span class="k">assert</span> <span class="ow">not</span> <span class="n">is_blocking_checked</span><span class="p">,</span> <span class="p">(</span>
|
|
||||||
<span class="s2">"Checkbox 'Блокировка' should not be checked by default"</span>
|
|
||||||
<span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="n">push_checkbox</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_content_item</span><span class="p">(</span><span class="s2">"push_notification_checkbox"</span><span class="p">)</span>
|
|
||||||
<span class="n">is_push_checked</span> <span class="o">=</span> <span class="n">push_checkbox</span><span class="o">.</span><span class="n">is_checked</span><span class="p">()</span>
|
|
||||||
<span class="k">assert</span> <span class="ow">not</span> <span class="n">is_push_checked</span><span class="p">,</span> <span class="p">(</span>
|
|
||||||
<span class="s2">"Checkbox 'Подписка на Push-уведомления' should not be checked by default"</span>
|
|
||||||
<span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">check_button_visibility</span><span class="p">(</span><span class="s2">"search"</span><span class="p">)</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">check_button_visibility</span><span class="p">(</span><span class="s2">"add"</span><span class="p">)</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">check_button_visibility</span><span class="p">(</span><span class="s2">"close"</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="n">search_button</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_button_by_name</span><span class="p">(</span><span class="s2">"search"</span><span class="p">)</span>
|
|
||||||
<span class="n">search_button</span><span class="o">.</span><span class="n">click</span><span class="p">()</span>
|
|
||||||
|
|
||||||
<span class="c1"># Проверка что поле "Пользователи AD" появилось после поиска</span>
|
|
||||||
<span class="n">user_AD_loc</span> <span class="o">=</span> <span class="n">input_form_locator</span><span class="o">.</span><span class="n">get_by_role</span><span class="p">(</span><span class="s2">"combobox"</span><span class="p">)</span><span class="o">.</span><span class="n">nth</span><span class="p">(</span><span class="mi">1</span><span class="p">)</span>
|
|
||||||
<span class="n">user_AD_input</span> <span class="o">=</span> <span class="n">TextInput</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">page</span><span class="p">,</span> <span class="n">user_AD_loc</span><span class="p">,</span> <span class="s2">"user_AD_input"</span><span class="p">)</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">add_content_item</span><span class="p">(</span><span class="s2">"user_AD_input"</span><span class="p">,</span> <span class="n">user_AD_input</span><span class="p">)</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">add_content_item</span><span class="p">(</span>
|
|
||||||
<span class="s2">"user_AD_list"</span><span class="p">,</span>
|
|
||||||
<span class="n">DropdownList</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">page</span><span class="p">)</span>
|
|
||||||
<span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="n">user_AD_input</span><span class="o">.</span><span class="n">click</span><span class="p">()</span>
|
|
||||||
<span class="n">user_AD_list</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_content_item</span><span class="p">(</span><span class="s2">"user_AD_list"</span><span class="p">)</span>
|
|
||||||
<span class="n">user_AD_list</span><span class="o">.</span><span class="n">check_visibility</span><span class="p">(</span><span class="n">menu_locator</span><span class="p">,</span>
|
|
||||||
<span class="s2">"Users AD list is missing"</span><span class="p">)</span>
|
|
||||||
<span class="n">is_scrollable_vertically</span> <span class="o">=</span> <span class="n">user_AD_list</span><span class="o">.</span><span class="n">check_vertical_scrolling</span><span class="p">(</span><span class="n">menu_locator</span><span class="p">)</span>
|
|
||||||
<span class="k">assert</span> <span class="n">is_scrollable_vertically</span><span class="p">,</span> <span class="s2">"Users AD list should be scrollable_vertically"</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">page</span><span class="o">.</span><span class="n">keyboard</span><span class="o">.</span><span class="n">press</span><span class="p">(</span><span class="s2">"Escape"</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">update_input_form_fields</span><span class="p">(</span><span class="n">expand</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">get_content_item</span><span class="p">(</span><span class="s2">"name_input"</span><span class="p">)</span><span class="o">.</span><span class="n">check_visibility</span><span class="p">(</span>
|
|
||||||
<span class="s2">"Modal window content item with name 'name_input' is missing"</span><span class="p">)</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">get_content_item</span><span class="p">(</span><span class="s2">"role_input"</span><span class="p">)</span><span class="o">.</span><span class="n">check_visibility</span><span class="p">(</span>
|
|
||||||
<span class="s2">"Modal window content item with name 'role_input' is missing"</span><span class="p">)</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">get_content_item</span><span class="p">(</span><span class="s2">"commentary_input"</span><span class="p">)</span><span class="o">.</span><span class="n">check_visibility</span><span class="p">(</span>
|
|
||||||
<span class="s2">"Modal window content item with name 'commentary_input' is missing"</span><span class="p">)</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">get_content_item</span><span class="p">(</span><span class="s2">"email_input"</span><span class="p">)</span><span class="o">.</span><span class="n">check_visibility</span><span class="p">(</span>
|
|
||||||
<span class="s2">"Modal window content item with name 'email_input' is missing"</span><span class="p">)</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">get_content_item</span><span class="p">(</span><span class="s2">"phone_input"</span><span class="p">)</span><span class="o">.</span><span class="n">check_visibility</span><span class="p">(</span>
|
|
||||||
<span class="s2">"Modal window content item with name 'phone_input' is missing"</span><span class="p">)</span></div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</pre></div>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<footer>
|
|
||||||
|
|
||||||
<hr/>
|
|
||||||
|
|
||||||
<div role="contentinfo">
|
|
||||||
<p>© Авторские права 2025, NPO KIS. </p>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
Собрано при помощи <a href="https://www.sphinx-doc.org/">Sphinx</a> с использованием
|
|
||||||
<a href="https://github.com/readthedocs/sphinx_rtd_theme">темы,</a>
|
|
||||||
предоставленной <a href="https://readthedocs.org">Read the Docs</a>.
|
|
||||||
|
|
||||||
|
|
||||||
</footer>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</section>
|
|
||||||
</div>
|
|
||||||
<script>
|
|
||||||
jQuery(function () {
|
|
||||||
SphinxRtdTheme.Navigation.enable(true);
|
|
||||||
});
|
|
||||||
</script>
|
|
||||||
|
|
||||||
</body>
|
|
||||||
</html>
|
|
||||||
|
|
@ -1,466 +0,0 @@
|
||||||
|
|
||||||
|
|
||||||
<!DOCTYPE html>
|
|
||||||
<html class="writer-html5" lang="ru" data-content_root="../../">
|
|
||||||
<head>
|
|
||||||
<meta charset="utf-8" />
|
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
||||||
<title>components_derived.modal_add_local_user — документация e-nms-qa-automation 0.1.0</title>
|
|
||||||
<link rel="stylesheet" type="text/css" href="../../_static/pygments.css?v=b86133f3" />
|
|
||||||
<link rel="stylesheet" type="text/css" href="../../_static/css/theme.css?v=e59714d7" />
|
|
||||||
|
|
||||||
|
|
||||||
<script src="../../_static/jquery.js?v=5d32c60e"></script>
|
|
||||||
<script src="../../_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script>
|
|
||||||
<script src="../../_static/documentation_options.js?v=6ff560e8"></script>
|
|
||||||
<script src="../../_static/doctools.js?v=9bcbadda"></script>
|
|
||||||
<script src="../../_static/sphinx_highlight.js?v=dc90522c"></script>
|
|
||||||
<script src="../../_static/translations.js?v=cd1d70c9"></script>
|
|
||||||
<script src="../../_static/js/theme.js"></script>
|
|
||||||
<link rel="index" title="Алфавитный указатель" href="../../genindex.html" />
|
|
||||||
<link rel="search" title="Поиск" href="../../search.html" />
|
|
||||||
</head>
|
|
||||||
|
|
||||||
<body class="wy-body-for-nav">
|
|
||||||
<div class="wy-grid-for-nav">
|
|
||||||
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
|
|
||||||
<div class="wy-side-scroll">
|
|
||||||
<div class="wy-side-nav-search" >
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<a href="../../index.html" class="icon icon-home">
|
|
||||||
e-nms-qa-automation
|
|
||||||
</a>
|
|
||||||
<div role="search">
|
|
||||||
<form id="rtd-search-form" class="wy-form" action="../../search.html" method="get">
|
|
||||||
<input type="text" name="q" placeholder="Поиск в документации" aria-label="Поиск в документации" />
|
|
||||||
<input type="hidden" name="check_keywords" value="yes" />
|
|
||||||
<input type="hidden" name="area" value="default" />
|
|
||||||
</form>
|
|
||||||
</div>
|
|
||||||
</div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Меню навигации">
|
|
||||||
<!-- Local TOC -->
|
|
||||||
<div class="local-toc"></div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</nav>
|
|
||||||
|
|
||||||
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Меню навигации для мобильных устройств" >
|
|
||||||
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
|
|
||||||
<a href="../../index.html">e-nms-qa-automation</a>
|
|
||||||
</nav>
|
|
||||||
|
|
||||||
<div class="wy-nav-content">
|
|
||||||
<div class="rst-content">
|
|
||||||
<div role="navigation" aria-label="Навигация по страницам">
|
|
||||||
<ul class="wy-breadcrumbs">
|
|
||||||
<li><a href="../../index.html" class="icon icon-home" aria-label="Home"></a></li>
|
|
||||||
<li class="breadcrumb-item"><a href="../index.html">Код модуля</a></li>
|
|
||||||
<li class="breadcrumb-item active">components_derived.modal_add_local_user</li>
|
|
||||||
<li class="wy-breadcrumbs-aside">
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
<hr/>
|
|
||||||
</div>
|
|
||||||
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
|
|
||||||
<div itemprop="articleBody">
|
|
||||||
|
|
||||||
<h1>Исходный код components_derived.modal_add_local_user</h1><div class="highlight"><pre>
|
|
||||||
<span></span><span class="sd">"""Модуль modal_add_local_user содержит класс для работы</span>
|
|
||||||
<span class="sd">с модальным окном добавления локального пользователя.</span>
|
|
||||||
|
|
||||||
<span class="sd">Класс AddLocalUserModalWindow наследует базовый функционал ModalWindowComponent</span>
|
|
||||||
<span class="sd">и реализует специфичные методы для работы с формами добавления пользователей.</span>
|
|
||||||
<span class="sd">"""</span>
|
|
||||||
|
|
||||||
<span class="kn">import</span><span class="w"> </span><span class="nn">re</span>
|
|
||||||
<span class="kn">from</span><span class="w"> </span><span class="nn">playwright.sync_api</span><span class="w"> </span><span class="kn">import</span> <span class="n">Page</span>
|
|
||||||
<span class="kn">from</span><span class="w"> </span><span class="nn">tools.logger</span><span class="w"> </span><span class="kn">import</span> <span class="n">get_logger</span>
|
|
||||||
<span class="kn">from</span><span class="w"> </span><span class="nn">locators.modal_window_locators</span><span class="w"> </span><span class="kn">import</span> <span class="n">ModalWindowLocators</span>
|
|
||||||
<span class="kn">from</span><span class="w"> </span><span class="nn">elements.text_input_element</span><span class="w"> </span><span class="kn">import</span> <span class="n">TextInput</span>
|
|
||||||
<span class="kn">from</span><span class="w"> </span><span class="nn">elements.text_element</span><span class="w"> </span><span class="kn">import</span> <span class="n">Text</span>
|
|
||||||
<span class="kn">from</span><span class="w"> </span><span class="nn">elements.checkbox_element</span><span class="w"> </span><span class="kn">import</span> <span class="n">Checkbox</span>
|
|
||||||
<span class="kn">from</span><span class="w"> </span><span class="nn">data.roles_dict</span><span class="w"> </span><span class="kn">import</span> <span class="n">roles_dict</span>
|
|
||||||
<span class="kn">from</span><span class="w"> </span><span class="nn">components.modal_window_component</span><span class="w"> </span><span class="kn">import</span> <span class="n">ModalWindowComponent</span>
|
|
||||||
<span class="kn">from</span><span class="w"> </span><span class="nn">components.dropdown_list_component</span><span class="w"> </span><span class="kn">import</span> <span class="n">DropdownList</span>
|
|
||||||
<span class="kn">from</span><span class="w"> </span><span class="nn">components.confirm_component</span><span class="w"> </span><span class="kn">import</span> <span class="n">ConfirmComponent</span>
|
|
||||||
|
|
||||||
|
|
||||||
<span class="n">logger</span> <span class="o">=</span> <span class="n">get_logger</span><span class="p">(</span><span class="s2">"ADD_LOCAL_USER_MODAL_WINDOW"</span><span class="p">)</span>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="AddLocalUserModalWindow">
|
|
||||||
<a class="viewcode-back" href="../../components_derived.html#components_derived.modal_add_local_user.AddLocalUserModalWindow">[документация]</a>
|
|
||||||
<span class="k">class</span><span class="w"> </span><span class="nc">AddLocalUserModalWindow</span><span class="p">(</span><span class="n">ModalWindowComponent</span><span class="p">):</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Модальное окно добавления нового пользователя.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Наследует ModalWindowComponent и добавляет элементы формы:</span>
|
|
||||||
<span class="sd"> - Поля ввода (имя, пароль, email и др.)</span>
|
|
||||||
<span class="sd"> - Чекбоксы (Active Directory, Блокировка, Push-уведомления)</span>
|
|
||||||
<span class="sd"> - Выпадающий список ролей</span>
|
|
||||||
<span class="sd"> - Кнопки действий</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="AddLocalUserModalWindow.__init__">
|
|
||||||
<a class="viewcode-back" href="../../components_derived.html#components_derived.modal_add_local_user.AddLocalUserModalWindow.__init__">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">page</span><span class="p">:</span> <span class="n">Page</span><span class="p">):</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Инициализирует элементы формы добавления пользователя."""</span>
|
|
||||||
|
|
||||||
<span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="fm">__init__</span><span class="p">(</span><span class="n">page</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="c1"># Локаторы элементов формы</span>
|
|
||||||
<span class="n">text_field_locator</span> <span class="o">=</span> <span class="n">ModalWindowLocators</span><span class="o">.</span><span class="n">TEXT_FIELD_INPUT_FORM_USER_DATA</span>
|
|
||||||
<span class="n">input_form_locator</span> <span class="o">=</span> <span class="n">ModalWindowLocators</span><span class="o">.</span><span class="n">INPUT_FORM_USER_DATA</span>
|
|
||||||
<span class="n">label_locator</span> <span class="o">=</span> <span class="n">ModalWindowLocators</span><span class="o">.</span><span class="n">LABEL_INPUT_FORM_USER_DATA</span>
|
|
||||||
|
|
||||||
<span class="c1"># Настройка заголовка и кнопки закрытия тулбара</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">window_title</span> <span class="o">=</span> <span class="s2">"Добавить нового пользователя"</span>
|
|
||||||
<span class="n">locator_button_toolbar_close</span> <span class="o">=</span> <span class="p">(</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">page</span><span class="o">.</span><span class="n">get_by_role</span><span class="p">(</span><span class="s2">"navigation"</span><span class="p">)</span>
|
|
||||||
<span class="o">.</span><span class="n">filter</span><span class="p">(</span><span class="n">has_text</span><span class="o">=</span><span class="n">re</span><span class="o">.</span><span class="n">compile</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">window_title</span><span class="p">))</span>
|
|
||||||
<span class="o">.</span><span class="n">get_by_role</span><span class="p">(</span><span class="s2">"button"</span><span class="p">)</span>
|
|
||||||
<span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">add_toolbar_title</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">window_title</span><span class="p">)</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">add_toolbar_button</span><span class="p">(</span><span class="n">locator_button_toolbar_close</span><span class="p">,</span> <span class="s2">"close"</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="c1"># Добавление элементов формы по порядку расположения в окне</span>
|
|
||||||
<span class="n">checkbox_1</span> <span class="o">=</span> <span class="n">Checkbox</span><span class="p">(</span>
|
|
||||||
<span class="n">page</span><span class="p">,</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">page</span><span class="o">.</span><span class="n">locator</span><span class="p">(</span><span class="n">input_form_locator</span><span class="p">)</span><span class="o">.</span><span class="n">get_by_role</span><span class="p">(</span><span class="s2">"checkbox"</span><span class="p">)</span><span class="o">.</span><span class="n">nth</span><span class="p">(</span><span class="mi">0</span><span class="p">),</span>
|
|
||||||
<span class="s2">"active_directory"</span>
|
|
||||||
<span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">add_content_item</span><span class="p">(</span><span class="s2">"active_directory_checkbox"</span><span class="p">,</span> <span class="n">checkbox_1</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="n">label_1</span> <span class="o">=</span> <span class="n">Text</span><span class="p">(</span>
|
|
||||||
<span class="n">page</span><span class="p">,</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">page</span><span class="o">.</span><span class="n">locator</span><span class="p">(</span><span class="n">label_locator</span><span class="p">)</span><span class="o">.</span><span class="n">nth</span><span class="p">(</span><span class="mi">0</span><span class="p">),</span>
|
|
||||||
<span class="s2">"active_directory_checkbox_label"</span>
|
|
||||||
<span class="p">)</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">add_content_item</span><span class="p">(</span><span class="s2">"active_directory_checkbox_label"</span><span class="p">,</span> <span class="n">label_1</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="c1"># Поле Имя</span>
|
|
||||||
<span class="n">loc</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">input_form_locator</span><span class="si">}</span><span class="s2">/div[2]/</span><span class="si">{</span><span class="n">text_field_locator</span><span class="si">}</span><span class="s2">"</span>
|
|
||||||
<span class="n">name_input</span> <span class="o">=</span> <span class="n">TextInput</span><span class="p">(</span><span class="n">page</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">page</span><span class="o">.</span><span class="n">locator</span><span class="p">(</span><span class="n">loc</span><span class="p">),</span> <span class="s2">"name_input"</span><span class="p">)</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">add_content_item</span><span class="p">(</span><span class="s2">"name_input"</span><span class="p">,</span> <span class="n">name_input</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="c1"># Чекбокс "Блокировка" - индекс 1</span>
|
|
||||||
<span class="n">checkbox_2</span> <span class="o">=</span> <span class="n">Checkbox</span><span class="p">(</span>
|
|
||||||
<span class="n">page</span><span class="p">,</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">page</span><span class="o">.</span><span class="n">locator</span><span class="p">(</span><span class="n">input_form_locator</span><span class="p">)</span><span class="o">.</span><span class="n">get_by_role</span><span class="p">(</span><span class="s2">"checkbox"</span><span class="p">)</span><span class="o">.</span><span class="n">nth</span><span class="p">(</span><span class="mi">1</span><span class="p">),</span>
|
|
||||||
<span class="s2">"blocking"</span>
|
|
||||||
<span class="p">)</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">add_content_item</span><span class="p">(</span><span class="s2">"blocking_checkbox"</span><span class="p">,</span> <span class="n">checkbox_2</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="c1"># Метка "Блокировка" - индекс 1</span>
|
|
||||||
<span class="n">label_2</span> <span class="o">=</span> <span class="n">Text</span><span class="p">(</span>
|
|
||||||
<span class="n">page</span><span class="p">,</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">page</span><span class="o">.</span><span class="n">locator</span><span class="p">(</span><span class="n">label_locator</span><span class="p">)</span><span class="o">.</span><span class="n">nth</span><span class="p">(</span><span class="mi">1</span><span class="p">),</span>
|
|
||||||
<span class="s2">"blocking_checkbox_label"</span>
|
|
||||||
<span class="p">)</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">add_content_item</span><span class="p">(</span><span class="s2">"blocking_checkbox_label"</span><span class="p">,</span> <span class="n">label_2</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="c1"># Поле Роль</span>
|
|
||||||
<span class="n">role_loc</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">page</span><span class="o">.</span><span class="n">locator</span><span class="p">(</span><span class="n">input_form_locator</span><span class="p">)</span><span class="o">.</span><span class="n">get_by_role</span><span class="p">(</span><span class="s2">"combobox"</span><span class="p">)</span><span class="o">.</span><span class="n">nth</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span>
|
|
||||||
<span class="n">role_input</span> <span class="o">=</span> <span class="n">TextInput</span><span class="p">(</span><span class="n">page</span><span class="p">,</span> <span class="n">role_loc</span><span class="p">,</span> <span class="s2">"role_input"</span><span class="p">)</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">add_content_item</span><span class="p">(</span><span class="s2">"role_input"</span><span class="p">,</span> <span class="n">role_input</span><span class="p">)</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">add_content_item</span><span class="p">(</span><span class="s2">"roles_list"</span><span class="p">,</span> <span class="n">DropdownList</span><span class="p">(</span><span class="n">page</span><span class="p">))</span>
|
|
||||||
|
|
||||||
<span class="c1"># Поле Пароль</span>
|
|
||||||
<span class="n">loc</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">input_form_locator</span><span class="si">}</span><span class="s2">/div[5]/</span><span class="si">{</span><span class="n">text_field_locator</span><span class="si">}</span><span class="s2">"</span>
|
|
||||||
<span class="n">password_input</span> <span class="o">=</span> <span class="n">TextInput</span><span class="p">(</span><span class="n">page</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">page</span><span class="o">.</span><span class="n">locator</span><span class="p">(</span><span class="n">loc</span><span class="p">),</span> <span class="s2">"password_input"</span><span class="p">)</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">add_content_item</span><span class="p">(</span><span class="s2">"password_input"</span><span class="p">,</span> <span class="n">password_input</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="c1"># Поле Комментарий</span>
|
|
||||||
<span class="n">loc</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">input_form_locator</span><span class="si">}</span><span class="s2">/div[6]/</span><span class="si">{</span><span class="n">text_field_locator</span><span class="si">}</span><span class="s2">"</span>
|
|
||||||
<span class="n">commentary_input</span> <span class="o">=</span> <span class="n">TextInput</span><span class="p">(</span><span class="n">page</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">page</span><span class="o">.</span><span class="n">locator</span><span class="p">(</span><span class="n">loc</span><span class="p">),</span> <span class="s2">"commentary_input"</span><span class="p">)</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">add_content_item</span><span class="p">(</span><span class="s2">"commentary_input"</span><span class="p">,</span> <span class="n">commentary_input</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="c1"># Поле E-mail</span>
|
|
||||||
<span class="n">loc</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">input_form_locator</span><span class="si">}</span><span class="s2">/div[7]/</span><span class="si">{</span><span class="n">text_field_locator</span><span class="si">}</span><span class="s2">"</span>
|
|
||||||
<span class="n">email_input</span> <span class="o">=</span> <span class="n">TextInput</span><span class="p">(</span><span class="n">page</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">page</span><span class="o">.</span><span class="n">locator</span><span class="p">(</span><span class="n">loc</span><span class="p">),</span> <span class="s2">"email_input"</span><span class="p">)</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">add_content_item</span><span class="p">(</span><span class="s2">"email_input"</span><span class="p">,</span> <span class="n">email_input</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="c1"># Поле Номер для СМС</span>
|
|
||||||
<span class="n">loc</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">input_form_locator</span><span class="si">}</span><span class="s2">/div[8]/</span><span class="si">{</span><span class="n">text_field_locator</span><span class="si">}</span><span class="s2">"</span>
|
|
||||||
<span class="n">phone_input</span> <span class="o">=</span> <span class="n">TextInput</span><span class="p">(</span><span class="n">page</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">page</span><span class="o">.</span><span class="n">locator</span><span class="p">(</span><span class="n">loc</span><span class="p">),</span> <span class="s2">"phone_input"</span><span class="p">)</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">add_content_item</span><span class="p">(</span><span class="s2">"phone_input"</span><span class="p">,</span> <span class="n">phone_input</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="c1"># Чекбокс "Подписка на Push-уведомления" - индекс 2</span>
|
|
||||||
<span class="n">checkbox_3</span> <span class="o">=</span> <span class="n">Checkbox</span><span class="p">(</span>
|
|
||||||
<span class="n">page</span><span class="p">,</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">page</span><span class="o">.</span><span class="n">locator</span><span class="p">(</span><span class="n">ModalWindowLocators</span><span class="o">.</span><span class="n">INPUT_FORM_USER_DATA</span><span class="p">)</span>
|
|
||||||
<span class="o">.</span><span class="n">get_by_role</span><span class="p">(</span><span class="s2">"checkbox"</span><span class="p">)</span><span class="o">.</span><span class="n">nth</span><span class="p">(</span><span class="mi">2</span><span class="p">),</span>
|
|
||||||
<span class="s2">"push_notification"</span>
|
|
||||||
<span class="p">)</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">add_content_item</span><span class="p">(</span><span class="s2">"push_notification_checkbox"</span><span class="p">,</span> <span class="n">checkbox_3</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="c1"># Метка "Подписка на Push-уведомления" - индекс 2</span>
|
|
||||||
<span class="n">label_3</span> <span class="o">=</span> <span class="n">Text</span><span class="p">(</span>
|
|
||||||
<span class="n">page</span><span class="p">,</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">page</span><span class="o">.</span><span class="n">locator</span><span class="p">(</span><span class="n">label_locator</span><span class="p">)</span><span class="o">.</span><span class="n">nth</span><span class="p">(</span><span class="mi">2</span><span class="p">),</span>
|
|
||||||
<span class="s2">"push_notification_checkbox_label"</span>
|
|
||||||
<span class="p">)</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">add_content_item</span><span class="p">(</span><span class="s2">"push_notification_checkbox_label"</span><span class="p">,</span> <span class="n">label_3</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="c1"># Добавление кнопок действий</span>
|
|
||||||
<span class="n">locator_button_add</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">page</span><span class="o">.</span><span class="n">get_by_role</span><span class="p">(</span><span class="s2">"button"</span><span class="p">,</span> <span class="n">name</span><span class="o">=</span><span class="s2">"Добавить"</span><span class="p">)</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">add_button</span><span class="p">(</span><span class="n">locator_button_add</span><span class="p">,</span> <span class="s2">"add"</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="n">locator_button_close</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">page</span><span class="o">.</span><span class="n">get_by_role</span><span class="p">(</span><span class="s2">"button"</span><span class="p">,</span> <span class="n">name</span><span class="o">=</span><span class="s2">"Закрыть"</span><span class="p">)</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">add_button</span><span class="p">(</span><span class="n">locator_button_close</span><span class="p">,</span> <span class="s2">"close"</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="c1"># Добавление компонента подтверждения/отмены заведения пользователя</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">new_user_confirm</span> <span class="o">=</span> <span class="n">ConfirmComponent</span><span class="p">(</span><span class="n">page</span><span class="p">,</span> <span class="s2">" Отмена "</span><span class="p">,</span> <span class="s2">" Добавить "</span><span class="p">)</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<span class="c1"># Действия:</span>
|
|
||||||
<div class="viewcode-block" id="AddLocalUserModalWindow.check_active_directory_checkbox">
|
|
||||||
<a class="viewcode-back" href="../../components_derived.html#components_derived.modal_add_local_user.AddLocalUserModalWindow.check_active_directory_checkbox">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">check_active_directory_checkbox</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Включает чек-бокс Active Directory."""</span>
|
|
||||||
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">get_content_item</span><span class="p">(</span><span class="s2">"active_directory_checkbox"</span><span class="p">)</span><span class="o">.</span><span class="n">check</span><span class="p">(</span><span class="n">force</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="AddLocalUserModalWindow.uncheck_active_directory_checkbox">
|
|
||||||
<a class="viewcode-back" href="../../components_derived.html#components_derived.modal_add_local_user.AddLocalUserModalWindow.uncheck_active_directory_checkbox">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">uncheck_active_directory_checkbox</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Выключает чек-бокс Active Directory."""</span>
|
|
||||||
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">get_content_item</span><span class="p">(</span><span class="s2">"active_directory_checkbox"</span><span class="p">)</span><span class="o">.</span><span class="n">uncheck</span><span class="p">(</span><span class="n">force</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="AddLocalUserModalWindow.check_blocking_checkbox">
|
|
||||||
<a class="viewcode-back" href="../../components_derived.html#components_derived.modal_add_local_user.AddLocalUserModalWindow.check_blocking_checkbox">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">check_blocking_checkbox</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Включает чек-бокс Блокировка."""</span>
|
|
||||||
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">get_content_item</span><span class="p">(</span><span class="s2">"blocking_checkbox"</span><span class="p">)</span><span class="o">.</span><span class="n">check</span><span class="p">(</span><span class="n">force</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="AddLocalUserModalWindow.uncheck_blocking_checkbox">
|
|
||||||
<a class="viewcode-back" href="../../components_derived.html#components_derived.modal_add_local_user.AddLocalUserModalWindow.uncheck_blocking_checkbox">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">uncheck_blocking_checkbox</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Выключает чек-бокс Блокировка."""</span>
|
|
||||||
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">get_content_item</span><span class="p">(</span><span class="s2">"blocking_checkbox"</span><span class="p">)</span><span class="o">.</span><span class="n">uncheck</span><span class="p">(</span><span class="n">force</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="AddLocalUserModalWindow.check_push_notification_checkbox">
|
|
||||||
<a class="viewcode-back" href="../../components_derived.html#components_derived.modal_add_local_user.AddLocalUserModalWindow.check_push_notification_checkbox">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">check_push_notification_checkbox</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Включает чек-бокс Push-уведомления."""</span>
|
|
||||||
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">get_content_item</span><span class="p">(</span><span class="s2">"push_notification_checkbox"</span><span class="p">)</span><span class="o">.</span><span class="n">check</span><span class="p">(</span><span class="n">force</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="AddLocalUserModalWindow.uncheck_push_notification_checkbox">
|
|
||||||
<a class="viewcode-back" href="../../components_derived.html#components_derived.modal_add_local_user.AddLocalUserModalWindow.uncheck_push_notification_checkbox">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">uncheck_push_notification_checkbox</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Выключает чек-бокс Push-уведомления."""</span>
|
|
||||||
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">get_content_item</span><span class="p">(</span><span class="s2">"push_notification_checkbox"</span><span class="p">)</span><span class="o">.</span><span class="n">uncheck</span><span class="p">(</span><span class="n">force</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="AddLocalUserModalWindow.new_user">
|
|
||||||
<a class="viewcode-back" href="../../components_derived.html#components_derived.modal_add_local_user.AddLocalUserModalWindow.new_user">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">new_user</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">user_data</span><span class="p">):</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Заполняет форму и добавляет нового пользователя.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Args:</span>
|
|
||||||
<span class="sd"> user_data (dict): Данные пользователя (имя, роль, пароль и др.)</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
|
|
||||||
<span class="n">fields</span> <span class="o">=</span> <span class="n">user_data</span><span class="o">.</span><span class="n">keys</span><span class="p">()</span>
|
|
||||||
|
|
||||||
<span class="k">if</span> <span class="s2">"name"</span> <span class="ow">in</span> <span class="n">fields</span><span class="p">:</span>
|
|
||||||
<span class="n">input_field</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_content_item</span><span class="p">(</span><span class="s2">"name_input"</span><span class="p">)</span>
|
|
||||||
<span class="n">input_field</span><span class="o">.</span><span class="n">input_value</span><span class="p">(</span><span class="n">user_data</span><span class="p">[</span><span class="s2">"name"</span><span class="p">])</span>
|
|
||||||
|
|
||||||
<span class="k">if</span> <span class="s2">"role"</span> <span class="ow">in</span> <span class="n">fields</span><span class="p">:</span>
|
|
||||||
<span class="n">role_field</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_content_item</span><span class="p">(</span><span class="s2">"role_input"</span><span class="p">)</span>
|
|
||||||
<span class="n">role_field</span><span class="o">.</span><span class="n">click</span><span class="p">()</span>
|
|
||||||
|
|
||||||
<span class="n">roles_list</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_content_item</span><span class="p">(</span><span class="s2">"roles_list"</span><span class="p">)</span>
|
|
||||||
<span class="n">roles_list</span><span class="o">.</span><span class="n">check_item_with_text</span><span class="p">(</span><span class="n">user_data</span><span class="p">[</span><span class="s2">"role"</span><span class="p">])</span>
|
|
||||||
<span class="n">roles_list</span><span class="o">.</span><span class="n">click_item_with_text</span><span class="p">(</span><span class="n">user_data</span><span class="p">[</span><span class="s2">"role"</span><span class="p">])</span>
|
|
||||||
|
|
||||||
<span class="k">if</span> <span class="s2">"password"</span> <span class="ow">in</span> <span class="n">fields</span><span class="p">:</span>
|
|
||||||
<span class="n">input_field</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_content_item</span><span class="p">(</span><span class="s2">"password_input"</span><span class="p">)</span>
|
|
||||||
<span class="n">input_field</span><span class="o">.</span><span class="n">input_value</span><span class="p">(</span><span class="n">user_data</span><span class="p">[</span><span class="s2">"password"</span><span class="p">])</span>
|
|
||||||
|
|
||||||
<span class="k">if</span> <span class="s2">"commentary"</span> <span class="ow">in</span> <span class="n">fields</span><span class="p">:</span>
|
|
||||||
<span class="n">input_field</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_content_item</span><span class="p">(</span><span class="s2">"commentary_input"</span><span class="p">)</span>
|
|
||||||
<span class="n">input_field</span><span class="o">.</span><span class="n">input_value</span><span class="p">(</span><span class="n">user_data</span><span class="p">[</span><span class="s2">"commentary"</span><span class="p">])</span>
|
|
||||||
|
|
||||||
<span class="k">if</span> <span class="s2">"email"</span> <span class="ow">in</span> <span class="n">fields</span><span class="p">:</span>
|
|
||||||
<span class="n">input_field</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_content_item</span><span class="p">(</span><span class="s2">"email_input"</span><span class="p">)</span>
|
|
||||||
<span class="n">input_field</span><span class="o">.</span><span class="n">input_value</span><span class="p">(</span><span class="n">user_data</span><span class="p">[</span><span class="s2">"email"</span><span class="p">])</span>
|
|
||||||
|
|
||||||
<span class="k">if</span> <span class="s2">"phone_number"</span> <span class="ow">in</span> <span class="n">fields</span><span class="p">:</span>
|
|
||||||
<span class="n">input_field</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_content_item</span><span class="p">(</span><span class="s2">"phone_input"</span><span class="p">)</span>
|
|
||||||
<span class="n">input_field</span><span class="o">.</span><span class="n">input_value</span><span class="p">(</span><span class="n">user_data</span><span class="p">[</span><span class="s2">"phone_number"</span><span class="p">])</span>
|
|
||||||
|
|
||||||
<span class="k">if</span> <span class="s2">"blocking_checked"</span> <span class="ow">in</span> <span class="n">fields</span><span class="p">:</span>
|
|
||||||
<span class="n">checkbox</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_content_item</span><span class="p">(</span><span class="s2">"blocking_checkbox"</span><span class="p">)</span>
|
|
||||||
<span class="k">if</span> <span class="n">user_data</span><span class="p">[</span><span class="s2">"blocking_checked"</span><span class="p">]:</span>
|
|
||||||
<span class="n">checkbox</span><span class="o">.</span><span class="n">check</span><span class="p">()</span>
|
|
||||||
<span class="k">else</span><span class="p">:</span>
|
|
||||||
<span class="n">checkbox</span><span class="o">.</span><span class="n">uncheck</span><span class="p">()</span>
|
|
||||||
|
|
||||||
<span class="k">if</span> <span class="s2">"push_notification_checked"</span> <span class="ow">in</span> <span class="n">fields</span><span class="p">:</span>
|
|
||||||
<span class="n">checkbox</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_content_item</span><span class="p">(</span><span class="s2">"push_notification_checkbox"</span><span class="p">)</span>
|
|
||||||
<span class="k">if</span> <span class="n">user_data</span><span class="p">[</span><span class="s2">"push_notification_checked"</span><span class="p">]:</span>
|
|
||||||
<span class="n">checkbox</span><span class="o">.</span><span class="n">check</span><span class="p">()</span>
|
|
||||||
<span class="k">else</span><span class="p">:</span>
|
|
||||||
<span class="n">checkbox</span><span class="o">.</span><span class="n">uncheck</span><span class="p">()</span>
|
|
||||||
|
|
||||||
<span class="c1"># Отправка формы</span>
|
|
||||||
<span class="n">add_button</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_button_by_name</span><span class="p">(</span><span class="s2">"add"</span><span class="p">)</span>
|
|
||||||
<span class="n">add_button</span><span class="o">.</span><span class="n">click</span><span class="p">()</span>
|
|
||||||
|
|
||||||
<span class="c1"># Подтверждение действия</span>
|
|
||||||
<span class="n">title</span> <span class="o">=</span> <span class="s2">"Добавить нового пользователя"</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">new_user_confirm</span><span class="o">.</span><span class="n">check_title</span><span class="p">(</span>
|
|
||||||
<span class="n">title</span><span class="p">,</span>
|
|
||||||
<span class="sa">f</span><span class="s2">"Confirmation dialog window with title '</span><span class="si">{</span><span class="n">title</span><span class="si">}</span><span class="s2">' is missing"</span>
|
|
||||||
<span class="p">)</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">new_user_confirm</span><span class="o">.</span><span class="n">click_allow_button</span><span class="p">()</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="AddLocalUserModalWindow.close_window">
|
|
||||||
<a class="viewcode-back" href="../../components_derived.html#components_derived.modal_add_local_user.AddLocalUserModalWindow.close_window">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">close_window</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Закрывает модальное окно через кнопку 'Закрыть'."""</span>
|
|
||||||
|
|
||||||
<span class="n">close_button</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_button_by_name</span><span class="p">(</span><span class="s2">"close"</span><span class="p">)</span>
|
|
||||||
<span class="n">close_button</span><span class="o">.</span><span class="n">click</span><span class="p">()</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="AddLocalUserModalWindow.close_window_by_toolbar_button">
|
|
||||||
<a class="viewcode-back" href="../../components_derived.html#components_derived.modal_add_local_user.AddLocalUserModalWindow.close_window_by_toolbar_button">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">close_window_by_toolbar_button</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Закрывает модальное окно через кнопку в тулбаре."""</span>
|
|
||||||
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">click_toolbar_close_button</span><span class="p">()</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<span class="c1"># Проверки:</span>
|
|
||||||
<div class="viewcode-block" id="AddLocalUserModalWindow.check_content">
|
|
||||||
<a class="viewcode-back" href="../../components_derived.html#components_derived.modal_add_local_user.AddLocalUserModalWindow.check_content">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">check_content</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Проверяет наличие и корректность всех элементов формы."""</span>
|
|
||||||
|
|
||||||
<span class="n">menu_locator</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">page</span><span class="o">.</span><span class="n">locator</span><span class="p">(</span><span class="n">ModalWindowLocators</span><span class="o">.</span><span class="n">MENU_INPUT_FORM_USER_DATA</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">check_by_window_title</span><span class="p">()</span>
|
|
||||||
|
|
||||||
<span class="n">is_checked</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_content_item</span><span class="p">(</span><span class="s2">"active_directory_checkbox"</span><span class="p">)</span><span class="o">.</span><span class="n">is_checked</span><span class="p">()</span>
|
|
||||||
<span class="k">if</span> <span class="n">is_checked</span><span class="p">:</span>
|
|
||||||
<span class="k">assert</span> <span class="kc">False</span><span class="p">,</span> <span class="p">(</span>
|
|
||||||
<span class="s2">"The checkbox 'Active Directory' should not be checked for "</span>
|
|
||||||
<span class="s2">"the add local user window"</span>
|
|
||||||
<span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">check_toolbar_button_visibility</span><span class="p">(</span><span class="s2">"close"</span><span class="p">)</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">check_toolbar_button_tooltip</span><span class="p">(</span><span class="s2">"close"</span><span class="p">,</span> <span class="s2">"Закрыть"</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="n">input_fields</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"name_input"</span><span class="p">,</span> <span class="s2">"password_input"</span><span class="p">,</span>
|
|
||||||
<span class="s2">"commentary_input"</span><span class="p">,</span> <span class="s2">"email_input"</span><span class="p">,</span> <span class="s2">"phone_input"</span><span class="p">]</span>
|
|
||||||
|
|
||||||
<span class="k">for</span> <span class="n">name</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">content_items</span><span class="p">:</span>
|
|
||||||
<span class="n">item</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_content_item</span><span class="p">(</span><span class="n">name</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="k">if</span> <span class="n">name</span> <span class="o">==</span> <span class="s2">"active_directory_checkbox_label"</span><span class="p">:</span>
|
|
||||||
<span class="n">item</span><span class="o">.</span><span class="n">check_have_text</span><span class="p">(</span>
|
|
||||||
<span class="s2">"Active Directory"</span><span class="p">,</span>
|
|
||||||
<span class="s2">"Label 'Active Directory' is missing"</span>
|
|
||||||
<span class="p">)</span>
|
|
||||||
<span class="k">elif</span> <span class="n">name</span> <span class="o">==</span> <span class="s2">"blocking_checkbox_label"</span><span class="p">:</span>
|
|
||||||
<span class="n">item</span><span class="o">.</span><span class="n">check_have_text</span><span class="p">(</span>
|
|
||||||
<span class="s2">"Блокировка"</span><span class="p">,</span>
|
|
||||||
<span class="s2">"Label 'Блокировка' is missing"</span>
|
|
||||||
<span class="p">)</span>
|
|
||||||
<span class="k">elif</span> <span class="n">name</span> <span class="o">==</span> <span class="s2">"push_notification_checkbox_label"</span><span class="p">:</span>
|
|
||||||
<span class="n">item</span><span class="o">.</span><span class="n">check_have_text</span><span class="p">(</span>
|
|
||||||
<span class="s2">"Подписка на Push-уведомления"</span><span class="p">,</span>
|
|
||||||
<span class="s2">"Label 'Подписка на Push-уведомления' is missing"</span>
|
|
||||||
<span class="p">)</span>
|
|
||||||
<span class="k">elif</span> <span class="n">name</span> <span class="o">==</span> <span class="s2">"role_input"</span><span class="p">:</span>
|
|
||||||
<span class="n">item</span><span class="o">.</span><span class="n">click</span><span class="p">()</span>
|
|
||||||
<span class="n">roles_list</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_content_item</span><span class="p">(</span><span class="s2">"roles_list"</span><span class="p">)</span>
|
|
||||||
<span class="n">roles_list</span><span class="o">.</span><span class="n">check_visibility</span><span class="p">(</span><span class="n">menu_locator</span><span class="p">,</span> <span class="s2">"Roles list is missing"</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="n">is_scrollable_vertically</span> <span class="o">=</span> <span class="n">roles_list</span><span class="o">.</span><span class="n">check_vertical_scrolling</span><span class="p">(</span><span class="n">menu_locator</span><span class="p">)</span>
|
|
||||||
<span class="k">assert</span> <span class="ow">not</span> <span class="n">is_scrollable_vertically</span><span class="p">,</span> <span class="p">(</span>
|
|
||||||
<span class="s2">"Roles list should not be scrollable_vertically"</span>
|
|
||||||
<span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="k">for</span> <span class="n">role</span> <span class="ow">in</span> <span class="n">roles_dict</span><span class="o">.</span><span class="n">values</span><span class="p">():</span>
|
|
||||||
<span class="c1"># временно, пока есть несоответствие со списком ролей в вкладке Сессии</span>
|
|
||||||
<span class="k">if</span> <span class="n">role</span> <span class="o">==</span> <span class="s2">"Пользователь"</span><span class="p">:</span>
|
|
||||||
<span class="k">continue</span>
|
|
||||||
<span class="n">roles_list</span><span class="o">.</span><span class="n">check_item_with_text</span><span class="p">(</span><span class="n">role</span><span class="p">)</span>
|
|
||||||
<span class="k">elif</span> <span class="n">name</span> <span class="ow">in</span> <span class="n">input_fields</span><span class="p">:</span>
|
|
||||||
<span class="n">item</span><span class="o">.</span><span class="n">check_editable_input</span><span class="p">(</span>
|
|
||||||
<span class="sa">f</span><span class="s2">"Input field with name '</span><span class="si">{</span><span class="n">name</span><span class="si">}</span><span class="s2">' should be editable"</span>
|
|
||||||
<span class="p">)</span>
|
|
||||||
<span class="k">elif</span> <span class="n">name</span> <span class="o">==</span> <span class="s2">"roles_list"</span><span class="p">:</span>
|
|
||||||
<span class="k">continue</span>
|
|
||||||
<span class="k">else</span><span class="p">:</span>
|
|
||||||
<span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">"check item: </span><span class="si">{</span><span class="n">name</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span>
|
|
||||||
<span class="nb">print</span><span class="p">(</span><span class="n">item</span><span class="p">)</span>
|
|
||||||
<span class="n">item</span><span class="o">.</span><span class="n">check_visibility</span><span class="p">(</span>
|
|
||||||
<span class="sa">f</span><span class="s2">"Modal window content item with name '</span><span class="si">{</span><span class="n">name</span><span class="si">}</span><span class="s2">' is missing"</span>
|
|
||||||
<span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="c1"># Дополнительная проверка состояния чекбоксов</span>
|
|
||||||
<span class="n">blocking_checkbox</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_content_item</span><span class="p">(</span><span class="s2">"blocking_checkbox"</span><span class="p">)</span>
|
|
||||||
<span class="n">is_blocking_checked</span> <span class="o">=</span> <span class="n">blocking_checkbox</span><span class="o">.</span><span class="n">is_checked</span><span class="p">()</span>
|
|
||||||
<span class="k">assert</span> <span class="ow">not</span> <span class="n">is_blocking_checked</span><span class="p">,</span> <span class="p">(</span>
|
|
||||||
<span class="s2">"Checkbox 'Блокировка' should not be checked by default"</span>
|
|
||||||
<span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="n">push_checkbox</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_content_item</span><span class="p">(</span><span class="s2">"push_notification_checkbox"</span><span class="p">)</span>
|
|
||||||
<span class="n">is_push_checked</span> <span class="o">=</span> <span class="n">push_checkbox</span><span class="o">.</span><span class="n">is_checked</span><span class="p">()</span>
|
|
||||||
<span class="k">assert</span> <span class="ow">not</span> <span class="n">is_push_checked</span><span class="p">,</span> <span class="p">(</span>
|
|
||||||
<span class="s2">"Checkbox 'Подписка на Push-уведомления' should not be checked by default"</span>
|
|
||||||
<span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">check_button_visibility</span><span class="p">(</span><span class="s2">"add"</span><span class="p">)</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">check_button_visibility</span><span class="p">(</span><span class="s2">"close"</span><span class="p">)</span></div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</pre></div>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<footer>
|
|
||||||
|
|
||||||
<hr/>
|
|
||||||
|
|
||||||
<div role="contentinfo">
|
|
||||||
<p>© Авторские права 2025, NPO KIS. </p>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
Собрано при помощи <a href="https://www.sphinx-doc.org/">Sphinx</a> с использованием
|
|
||||||
<a href="https://github.com/readthedocs/sphinx_rtd_theme">темы,</a>
|
|
||||||
предоставленной <a href="https://readthedocs.org">Read the Docs</a>.
|
|
||||||
|
|
||||||
|
|
||||||
</footer>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</section>
|
|
||||||
</div>
|
|
||||||
<script>
|
|
||||||
jQuery(function () {
|
|
||||||
SphinxRtdTheme.Navigation.enable(true);
|
|
||||||
});
|
|
||||||
</script>
|
|
||||||
|
|
||||||
</body>
|
|
||||||
</html>
|
|
||||||
|
|
@ -1,323 +0,0 @@
|
||||||
|
|
||||||
|
|
||||||
<!DOCTYPE html>
|
|
||||||
<html class="writer-html5" lang="ru" data-content_root="../../">
|
|
||||||
<head>
|
|
||||||
<meta charset="utf-8" />
|
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
||||||
<title>components_derived.modal_change_password — документация e-nms-qa-automation 0.1.0</title>
|
|
||||||
<link rel="stylesheet" type="text/css" href="../../_static/pygments.css?v=b86133f3" />
|
|
||||||
<link rel="stylesheet" type="text/css" href="../../_static/css/theme.css?v=e59714d7" />
|
|
||||||
|
|
||||||
|
|
||||||
<script src="../../_static/jquery.js?v=5d32c60e"></script>
|
|
||||||
<script src="../../_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script>
|
|
||||||
<script src="../../_static/documentation_options.js?v=6ff560e8"></script>
|
|
||||||
<script src="../../_static/doctools.js?v=9bcbadda"></script>
|
|
||||||
<script src="../../_static/sphinx_highlight.js?v=dc90522c"></script>
|
|
||||||
<script src="../../_static/translations.js?v=cd1d70c9"></script>
|
|
||||||
<script src="../../_static/js/theme.js"></script>
|
|
||||||
<link rel="index" title="Алфавитный указатель" href="../../genindex.html" />
|
|
||||||
<link rel="search" title="Поиск" href="../../search.html" />
|
|
||||||
</head>
|
|
||||||
|
|
||||||
<body class="wy-body-for-nav">
|
|
||||||
<div class="wy-grid-for-nav">
|
|
||||||
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
|
|
||||||
<div class="wy-side-scroll">
|
|
||||||
<div class="wy-side-nav-search" >
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<a href="../../index.html" class="icon icon-home">
|
|
||||||
e-nms-qa-automation
|
|
||||||
</a>
|
|
||||||
<div role="search">
|
|
||||||
<form id="rtd-search-form" class="wy-form" action="../../search.html" method="get">
|
|
||||||
<input type="text" name="q" placeholder="Поиск в документации" aria-label="Поиск в документации" />
|
|
||||||
<input type="hidden" name="check_keywords" value="yes" />
|
|
||||||
<input type="hidden" name="area" value="default" />
|
|
||||||
</form>
|
|
||||||
</div>
|
|
||||||
</div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Меню навигации">
|
|
||||||
<!-- Local TOC -->
|
|
||||||
<div class="local-toc"></div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</nav>
|
|
||||||
|
|
||||||
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Меню навигации для мобильных устройств" >
|
|
||||||
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
|
|
||||||
<a href="../../index.html">e-nms-qa-automation</a>
|
|
||||||
</nav>
|
|
||||||
|
|
||||||
<div class="wy-nav-content">
|
|
||||||
<div class="rst-content">
|
|
||||||
<div role="navigation" aria-label="Навигация по страницам">
|
|
||||||
<ul class="wy-breadcrumbs">
|
|
||||||
<li><a href="../../index.html" class="icon icon-home" aria-label="Home"></a></li>
|
|
||||||
<li class="breadcrumb-item"><a href="../index.html">Код модуля</a></li>
|
|
||||||
<li class="breadcrumb-item active">components_derived.modal_change_password</li>
|
|
||||||
<li class="wy-breadcrumbs-aside">
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
<hr/>
|
|
||||||
</div>
|
|
||||||
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
|
|
||||||
<div itemprop="articleBody">
|
|
||||||
|
|
||||||
<h1>Исходный код components_derived.modal_change_password</h1><div class="highlight"><pre>
|
|
||||||
<span></span><span class="sd">"""Модуль modal_change_password содержит класс для работы с окном изменения пароля текущего пользователя.</span>
|
|
||||||
|
|
||||||
<span class="sd">Класс ChangePasswordModalWindow наследует базовый функционал ModalWindowComponent</span>
|
|
||||||
<span class="sd">и реализует методы для изменения пароля пользователя.</span>
|
|
||||||
<span class="sd">"""</span>
|
|
||||||
|
|
||||||
<span class="kn">from</span><span class="w"> </span><span class="nn">playwright.sync_api</span><span class="w"> </span><span class="kn">import</span> <span class="n">Page</span>
|
|
||||||
<span class="kn">from</span><span class="w"> </span><span class="nn">tools.logger</span><span class="w"> </span><span class="kn">import</span> <span class="n">get_logger</span>
|
|
||||||
<span class="kn">from</span><span class="w"> </span><span class="nn">locators.text_input_locators</span><span class="w"> </span><span class="kn">import</span> <span class="n">TextInputLocators</span>
|
|
||||||
<span class="kn">from</span><span class="w"> </span><span class="nn">locators.modal_window_locators</span><span class="w"> </span><span class="kn">import</span> <span class="n">ModalWindowLocators</span>
|
|
||||||
<span class="kn">from</span><span class="w"> </span><span class="nn">elements.text_element</span><span class="w"> </span><span class="kn">import</span> <span class="n">Text</span>
|
|
||||||
<span class="kn">from</span><span class="w"> </span><span class="nn">elements.text_input_element</span><span class="w"> </span><span class="kn">import</span> <span class="n">TextInput</span>
|
|
||||||
<span class="kn">from</span><span class="w"> </span><span class="nn">elements.icon_element</span><span class="w"> </span><span class="kn">import</span> <span class="n">Icon</span>
|
|
||||||
<span class="kn">from</span><span class="w"> </span><span class="nn">data.environment</span><span class="w"> </span><span class="kn">import</span> <span class="n">host</span>
|
|
||||||
<span class="kn">from</span><span class="w"> </span><span class="nn">components.modal_window_component</span><span class="w"> </span><span class="kn">import</span> <span class="n">ModalWindowComponent</span>
|
|
||||||
<span class="kn">from</span><span class="w"> </span><span class="nn">components.alert_component</span><span class="w"> </span><span class="kn">import</span> <span class="n">AlertComponent</span>
|
|
||||||
|
|
||||||
<span class="n">logger</span> <span class="o">=</span> <span class="n">get_logger</span><span class="p">(</span><span class="s2">"CHANGE_PASSWORD_MODAL_WINDOW"</span><span class="p">)</span>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="ChangePasswordModalWindow">
|
|
||||||
<a class="viewcode-back" href="../../components_derived.html#components_derived.modal_change_password.ChangePasswordModalWindow">[документация]</a>
|
|
||||||
<span class="k">class</span><span class="w"> </span><span class="nc">ChangePasswordModalWindow</span><span class="p">(</span><span class="n">ModalWindowComponent</span><span class="p">):</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Модальное окно изменения пароля текущего пользователя.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Наследует ModalWindowComponent и добавляет:</span>
|
|
||||||
<span class="sd"> - Поля задания пароля</span>
|
|
||||||
<span class="sd"> - Кнопки действий (Сохранить, Отменить)</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="ChangePasswordModalWindow.__init__">
|
|
||||||
<a class="viewcode-back" href="../../components_derived.html#components_derived.modal_change_password.ChangePasswordModalWindow.__init__">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">page</span><span class="p">:</span> <span class="n">Page</span><span class="p">):</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Инициализирует элементы формы редактирования пользователя."""</span>
|
|
||||||
|
|
||||||
<span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="fm">__init__</span><span class="p">(</span><span class="n">page</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="n">modal_window_locator</span> <span class="o">=</span> <span class="n">page</span><span class="o">.</span><span class="n">locator</span><span class="p">(</span><span class="n">ModalWindowLocators</span><span class="o">.</span><span class="n">MODAL_WINDOW</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="c1"># Тулбар с заголовком</span>
|
|
||||||
<span class="n">user_name</span> <span class="o">=</span> <span class="n">host</span><span class="o">.</span><span class="n">get_current_user_name</span><span class="p">()</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">add_toolbar_title</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Изменить пароль для пользователя </span><span class="si">{</span><span class="n">user_name</span><span class="si">}</span><span class="s2">?"</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="c1"># Поля ввода пароля</span>
|
|
||||||
<span class="n">loc</span> <span class="o">=</span> <span class="n">modal_window_locator</span><span class="o">.</span><span class="n">get_by_label</span><span class="p">(</span><span class="s2">"Введите текущий пароль *"</span><span class="p">)</span>
|
|
||||||
<span class="n">old_password_input</span> <span class="o">=</span> <span class="n">TextInput</span><span class="p">(</span><span class="n">page</span><span class="p">,</span> <span class="n">loc</span><span class="p">,</span> <span class="s2">"old_password_input"</span><span class="p">)</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">add_content_item</span><span class="p">(</span><span class="s2">"old_password_input"</span><span class="p">,</span> <span class="n">old_password_input</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="n">icon_locator</span> <span class="o">=</span> <span class="n">loc</span><span class="o">.</span><span class="n">locator</span><span class="p">(</span><span class="s2">"xpath=../.."</span><span class="p">)</span><span class="o">.</span><span class="n">locator</span><span class="p">(</span><span class="n">TextInputLocators</span><span class="o">.</span><span class="n">ICON_PASSWORD_HIDING</span><span class="p">)</span>
|
|
||||||
<span class="n">old_password_hidden_icon</span> <span class="o">=</span> <span class="n">Icon</span><span class="p">(</span><span class="n">page</span><span class="p">,</span> <span class="n">icon_locator</span><span class="p">,</span>
|
|
||||||
<span class="s2">"old password hidden icon"</span><span class="p">)</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">add_content_item</span><span class="p">(</span><span class="s2">"old_password_hidden_icon"</span><span class="p">,</span> <span class="n">old_password_hidden_icon</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="n">loc</span> <span class="o">=</span> <span class="n">modal_window_locator</span><span class="o">.</span><span class="n">get_by_label</span><span class="p">(</span><span class="s2">"Введите новый пароль *"</span><span class="p">)</span>
|
|
||||||
<span class="n">new_password_input</span> <span class="o">=</span> <span class="n">TextInput</span><span class="p">(</span><span class="n">page</span><span class="p">,</span> <span class="n">loc</span><span class="p">,</span> <span class="s2">"new_password_input"</span><span class="p">)</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">add_content_item</span><span class="p">(</span><span class="s2">"new_password_input"</span><span class="p">,</span> <span class="n">new_password_input</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="n">icon_locator</span> <span class="o">=</span> <span class="n">loc</span><span class="o">.</span><span class="n">locator</span><span class="p">(</span><span class="s2">"xpath=../.."</span><span class="p">)</span><span class="o">.</span><span class="n">locator</span><span class="p">(</span><span class="n">TextInputLocators</span><span class="o">.</span><span class="n">ICON_PASSWORD_HIDING</span><span class="p">)</span>
|
|
||||||
<span class="n">new_password_hidden_icon</span> <span class="o">=</span> <span class="n">Icon</span><span class="p">(</span><span class="n">page</span><span class="p">,</span> <span class="n">icon_locator</span><span class="p">,</span>
|
|
||||||
<span class="s2">"new password hidden icon"</span><span class="p">)</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">add_content_item</span><span class="p">(</span><span class="s2">"new_password_hidden_icon"</span><span class="p">,</span> <span class="n">new_password_hidden_icon</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="n">loc</span> <span class="o">=</span> <span class="n">modal_window_locator</span><span class="o">.</span><span class="n">get_by_label</span><span class="p">(</span><span class="s2">"Введите повторно новый пароль *"</span><span class="p">)</span>
|
|
||||||
<span class="n">confirm_password_input</span> <span class="o">=</span> <span class="n">TextInput</span><span class="p">(</span><span class="n">page</span><span class="p">,</span> <span class="n">loc</span><span class="p">,</span> <span class="s2">"confirm_password_input"</span><span class="p">)</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">add_content_item</span><span class="p">(</span><span class="s2">"confirm_password_input"</span><span class="p">,</span> <span class="n">confirm_password_input</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="n">icon_locator</span> <span class="o">=</span> <span class="n">loc</span><span class="o">.</span><span class="n">locator</span><span class="p">(</span><span class="s2">"xpath=../.."</span><span class="p">)</span><span class="o">.</span><span class="n">locator</span><span class="p">(</span><span class="n">TextInputLocators</span><span class="o">.</span><span class="n">ICON_PASSWORD_HIDING</span><span class="p">)</span>
|
|
||||||
<span class="n">confirm_password_hidden_icon</span> <span class="o">=</span> <span class="n">Icon</span><span class="p">(</span><span class="n">page</span><span class="p">,</span> <span class="n">icon_locator</span><span class="p">,</span>
|
|
||||||
<span class="s2">"confirm password hidden icon"</span><span class="p">)</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">add_content_item</span><span class="p">(</span><span class="s2">"confirm_password_hidden_icon"</span><span class="p">,</span> <span class="n">confirm_password_hidden_icon</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="n">input_form_error_message</span> <span class="o">=</span> <span class="n">Text</span><span class="p">(</span><span class="n">page</span><span class="p">,</span>
|
|
||||||
<span class="n">modal_window_locator</span><span class="o">.</span><span class="n">locator</span><span class="p">(</span><span class="n">TextInputLocators</span><span class="o">.</span><span class="n">INPUT_FORM_MESSAGE</span><span class="p">),</span>
|
|
||||||
<span class="s2">"input form error message"</span><span class="p">)</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">add_content_item</span><span class="p">(</span><span class="s2">"input_form_error_message"</span><span class="p">,</span> <span class="n">input_form_error_message</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="c1"># Добавление кнопок действий</span>
|
|
||||||
<span class="n">locator_button_save</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">page</span><span class="o">.</span><span class="n">get_by_role</span><span class="p">(</span><span class="s2">"button"</span><span class="p">,</span> <span class="n">name</span><span class="o">=</span><span class="s2">"Сохранить"</span><span class="p">)</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">add_button</span><span class="p">(</span><span class="n">locator_button_save</span><span class="p">,</span> <span class="s2">"save"</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="n">locator_button_cancel</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">page</span><span class="o">.</span><span class="n">get_by_role</span><span class="p">(</span><span class="s2">"button"</span><span class="p">,</span> <span class="n">name</span><span class="o">=</span><span class="s2">"Отменить"</span><span class="p">)</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">add_button</span><span class="p">(</span><span class="n">locator_button_cancel</span><span class="p">,</span> <span class="s2">"cancel"</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="c1"># Alert при успешном добавлении пользователя</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">alert</span> <span class="o">=</span> <span class="n">AlertComponent</span><span class="p">(</span><span class="n">page</span><span class="p">)</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<span class="c1"># Действия:</span>
|
|
||||||
<div class="viewcode-block" id="ChangePasswordModalWindow.click_cancel_button">
|
|
||||||
<a class="viewcode-back" href="../../components_derived.html#components_derived.modal_change_password.ChangePasswordModalWindow.click_cancel_button">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">click_cancel_button</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Нажимает кнопку 'Отменить'"""</span>
|
|
||||||
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">get_button_by_name</span><span class="p">(</span><span class="s2">"cancel"</span><span class="p">)</span><span class="o">.</span><span class="n">click</span><span class="p">()</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="ChangePasswordModalWindow.click_old_password_hidden_icon">
|
|
||||||
<a class="viewcode-back" href="../../components_derived.html#components_derived.modal_change_password.ChangePasswordModalWindow.click_old_password_hidden_icon">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">click_old_password_hidden_icon</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Нажатие на иконку скрытия старого пароля."""</span>
|
|
||||||
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">get_content_item</span><span class="p">(</span><span class="s2">"old_password_hidden_icon"</span><span class="p">)</span><span class="o">.</span><span class="n">click</span><span class="p">()</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="ChangePasswordModalWindow.click_new_password_hidden_icon">
|
|
||||||
<a class="viewcode-back" href="../../components_derived.html#components_derived.modal_change_password.ChangePasswordModalWindow.click_new_password_hidden_icon">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">click_new_password_hidden_icon</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Нажатие на иконку скрытия нового пароля."""</span>
|
|
||||||
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">get_content_item</span><span class="p">(</span><span class="s2">"new_password_hidden_icon"</span><span class="p">)</span><span class="o">.</span><span class="n">click</span><span class="p">()</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="ChangePasswordModalWindow.click_confirm_password_hidden_icon">
|
|
||||||
<a class="viewcode-back" href="../../components_derived.html#components_derived.modal_change_password.ChangePasswordModalWindow.click_confirm_password_hidden_icon">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">click_confirm_password_hidden_icon</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Нажатие на иконку скрытия пароля подтверждения."""</span>
|
|
||||||
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">get_content_item</span><span class="p">(</span><span class="s2">"confirm_password_hidden_icon"</span><span class="p">)</span><span class="o">.</span><span class="n">click</span><span class="p">()</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="ChangePasswordModalWindow.change_password">
|
|
||||||
<a class="viewcode-back" href="../../components_derived.html#components_derived.modal_change_password.ChangePasswordModalWindow.change_password">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">change_password</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">old_password</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">new_password</span><span class="p">:</span> <span class="nb">str</span><span class="p">):</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Заполняет элементы формы, нажимает кнопку 'Сохранить'"""</span>
|
|
||||||
|
|
||||||
<span class="n">error</span> <span class="o">=</span> <span class="s2">""</span>
|
|
||||||
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">get_content_item</span><span class="p">(</span><span class="s2">"old_password_input"</span><span class="p">)</span><span class="o">.</span><span class="n">input_value</span><span class="p">(</span><span class="n">old_password</span><span class="p">)</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">get_content_item</span><span class="p">(</span><span class="s2">"new_password_input"</span><span class="p">)</span><span class="o">.</span><span class="n">input_value</span><span class="p">(</span><span class="n">new_password</span><span class="p">)</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">get_content_item</span><span class="p">(</span><span class="s2">"confirm_password_input"</span><span class="p">)</span><span class="o">.</span><span class="n">input_value</span><span class="p">(</span><span class="n">new_password</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="n">button_save</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_button_by_name</span><span class="p">(</span><span class="s2">"save"</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="k">if</span> <span class="n">button_save</span><span class="o">.</span><span class="n">is_disabled</span><span class="p">():</span>
|
|
||||||
<span class="n">error_message</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_content_item</span><span class="p">(</span><span class="s2">"input_form_error_message"</span><span class="p">)</span>
|
|
||||||
<span class="n">error</span> <span class="o">=</span> <span class="n">error_message</span><span class="o">.</span><span class="n">get_text</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span>
|
|
||||||
<span class="k">return</span> <span class="kc">False</span><span class="p">,</span> <span class="n">error</span>
|
|
||||||
|
|
||||||
<span class="n">button_save</span><span class="o">.</span><span class="n">click</span><span class="p">()</span>
|
|
||||||
|
|
||||||
<span class="n">is_changed</span> <span class="o">=</span> <span class="kc">False</span>
|
|
||||||
|
|
||||||
<span class="n">alert_type</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">alert</span><span class="o">.</span><span class="n">get_alert_type</span><span class="p">()</span>
|
|
||||||
<span class="k">if</span> <span class="n">alert_type</span> <span class="o">==</span> <span class="s2">"success"</span><span class="p">:</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">alert</span><span class="o">.</span><span class="n">check_alert_presence</span><span class="p">(</span><span class="s1">' Пароль успешно изменён '</span><span class="p">)</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">alert</span><span class="o">.</span><span class="n">check_alert_absence</span><span class="p">(</span><span class="s1">' Пароль успешно изменён '</span><span class="p">)</span>
|
|
||||||
<span class="n">is_changed</span> <span class="o">=</span> <span class="kc">True</span>
|
|
||||||
<span class="k">elif</span> <span class="n">alert_type</span> <span class="o">==</span> <span class="s2">"error"</span><span class="p">:</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">alert</span><span class="o">.</span><span class="n">check_alert_presence</span><span class="p">(</span><span class="s1">' Неверно указан текущий пароль '</span><span class="p">)</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">alert</span><span class="o">.</span><span class="n">check_alert_absence</span><span class="p">(</span><span class="s1">' Неверно указан текущий пароль '</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="n">error</span> <span class="o">=</span> <span class="s2">"Old password is not equal real password"</span>
|
|
||||||
<span class="k">else</span><span class="p">:</span>
|
|
||||||
<span class="n">error</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"Got unexpected alert type </span><span class="si">{</span><span class="n">alert_type</span><span class="si">}</span><span class="s2">"</span>
|
|
||||||
|
|
||||||
<span class="k">return</span> <span class="n">is_changed</span><span class="p">,</span> <span class="n">error</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="ChangePasswordModalWindow.get_password_inputs">
|
|
||||||
<a class="viewcode-back" href="../../components_derived.html#components_derived.modal_change_password.ChangePasswordModalWindow.get_password_inputs">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">get_password_inputs</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="p">[]:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Возвращает список полей ввода пароля (для тестовых целей)."""</span>
|
|
||||||
|
|
||||||
<span class="n">text_inputs</span> <span class="o">=</span> <span class="p">[]</span>
|
|
||||||
<span class="n">text_inputs</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">get_content_item</span><span class="p">(</span><span class="s2">"old_password_input"</span><span class="p">))</span>
|
|
||||||
<span class="n">text_inputs</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">get_content_item</span><span class="p">(</span><span class="s2">"new_password_input"</span><span class="p">))</span>
|
|
||||||
<span class="n">text_inputs</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">get_content_item</span><span class="p">(</span><span class="s2">"confirm_password_input"</span><span class="p">))</span>
|
|
||||||
<span class="k">return</span> <span class="n">text_inputs</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<span class="c1"># Проверки:</span>
|
|
||||||
<div class="viewcode-block" id="ChangePasswordModalWindow.check_content">
|
|
||||||
<a class="viewcode-back" href="../../components_derived.html#components_derived.modal_change_password.ChangePasswordModalWindow.check_content">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">check_content</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Проверяет наличие и корректность всех элементов формы."""</span>
|
|
||||||
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">check_by_window_title</span><span class="p">()</span>
|
|
||||||
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">get_content_item</span><span class="p">(</span><span class="s2">"old_password_input"</span><span class="p">)</span><span class="o">.</span><span class="n">check_visibility</span><span class="p">(</span>
|
|
||||||
<span class="s2">"Old password input form is missing"</span>
|
|
||||||
<span class="p">)</span>
|
|
||||||
<span class="n">old_password_hidden_icon</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_content_item</span><span class="p">(</span><span class="s2">"old_password_hidden_icon"</span><span class="p">)</span>
|
|
||||||
<span class="n">old_password_hidden_icon</span><span class="o">.</span><span class="n">check_visibility</span><span class="p">(</span>
|
|
||||||
<span class="s2">"Old password hidden icon is missing"</span>
|
|
||||||
<span class="p">)</span>
|
|
||||||
<span class="n">is_hidden_state</span> <span class="o">=</span> <span class="n">old_password_hidden_icon</span><span class="o">.</span><span class="n">is_password_hidden</span><span class="p">()</span>
|
|
||||||
<span class="k">assert</span> <span class="n">is_hidden_state</span><span class="p">,</span> <span class="s2">"Old password hidden icon should be in hidden state"</span>
|
|
||||||
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">get_content_item</span><span class="p">(</span><span class="s2">"new_password_input"</span><span class="p">)</span><span class="o">.</span><span class="n">check_visibility</span><span class="p">(</span>
|
|
||||||
<span class="s2">"New password input form is missing"</span>
|
|
||||||
<span class="p">)</span>
|
|
||||||
<span class="n">new_password_hidden_icon</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_content_item</span><span class="p">(</span><span class="s2">"new_password_hidden_icon"</span><span class="p">)</span>
|
|
||||||
<span class="n">new_password_hidden_icon</span><span class="o">.</span><span class="n">check_visibility</span><span class="p">(</span>
|
|
||||||
<span class="s2">"New password hidden icon is missing"</span>
|
|
||||||
<span class="p">)</span>
|
|
||||||
<span class="n">is_hidden_state</span> <span class="o">=</span> <span class="n">new_password_hidden_icon</span><span class="o">.</span><span class="n">is_password_hidden</span><span class="p">()</span>
|
|
||||||
<span class="k">assert</span> <span class="n">is_hidden_state</span><span class="p">,</span> <span class="s2">"New password hidden icon should be in hidden state"</span>
|
|
||||||
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">get_content_item</span><span class="p">(</span><span class="s2">"confirm_password_input"</span><span class="p">)</span><span class="o">.</span><span class="n">check_visibility</span><span class="p">(</span>
|
|
||||||
<span class="s2">"Confirm password input form is missing"</span>
|
|
||||||
<span class="p">)</span>
|
|
||||||
<span class="n">confirm_password_hidden_icon</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_content_item</span><span class="p">(</span><span class="s2">"confirm_password_hidden_icon"</span><span class="p">)</span>
|
|
||||||
<span class="n">confirm_password_hidden_icon</span><span class="o">.</span><span class="n">check_visibility</span><span class="p">(</span>
|
|
||||||
<span class="s2">"Confirm password hidden icon is missing"</span>
|
|
||||||
<span class="p">)</span>
|
|
||||||
<span class="n">is_hidden_state</span> <span class="o">=</span> <span class="n">confirm_password_hidden_icon</span><span class="o">.</span><span class="n">is_password_hidden</span><span class="p">()</span>
|
|
||||||
<span class="k">assert</span> <span class="n">is_hidden_state</span><span class="p">,</span> <span class="s2">"Confirm password hidden icon should be in hidden state"</span>
|
|
||||||
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">check_button_visibility</span><span class="p">(</span><span class="s2">"cancel"</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="n">button_save</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_button_by_name</span><span class="p">(</span><span class="s2">"save"</span><span class="p">)</span>
|
|
||||||
<span class="n">is_disabled</span> <span class="o">=</span> <span class="n">button_save</span><span class="o">.</span><span class="n">is_disabled</span><span class="p">()</span>
|
|
||||||
<span class="k">assert</span> <span class="n">is_disabled</span><span class="p">,</span> <span class="s2">"Button 'Сохранить' should be hidden"</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="ChangePasswordModalWindow.check_error_message">
|
|
||||||
<a class="viewcode-back" href="../../components_derived.html#components_derived.modal_change_password.ChangePasswordModalWindow.check_error_message">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">check_error_message</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">text</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Проверяет сообщение об ошибке, возникшее при заполнении полей формы."""</span>
|
|
||||||
|
|
||||||
<span class="n">error_message</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_content_item</span><span class="p">(</span><span class="s2">"input_form_error_message"</span><span class="p">)</span>
|
|
||||||
<span class="n">error_message</span><span class="o">.</span><span class="n">check_have_text</span><span class="p">(</span><span class="n">text</span><span class="p">,</span> <span class="s2">"Unexpected error message"</span><span class="p">)</span></div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</pre></div>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<footer>
|
|
||||||
|
|
||||||
<hr/>
|
|
||||||
|
|
||||||
<div role="contentinfo">
|
|
||||||
<p>© Авторские права 2025, NPO KIS. </p>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
Собрано при помощи <a href="https://www.sphinx-doc.org/">Sphinx</a> с использованием
|
|
||||||
<a href="https://github.com/readthedocs/sphinx_rtd_theme">темы,</a>
|
|
||||||
предоставленной <a href="https://readthedocs.org">Read the Docs</a>.
|
|
||||||
|
|
||||||
|
|
||||||
</footer>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</section>
|
|
||||||
</div>
|
|
||||||
<script>
|
|
||||||
jQuery(function () {
|
|
||||||
SphinxRtdTheme.Navigation.enable(true);
|
|
||||||
});
|
|
||||||
</script>
|
|
||||||
|
|
||||||
</body>
|
|
||||||
</html>
|
|
||||||
|
|
@ -1,442 +0,0 @@
|
||||||
|
|
||||||
|
|
||||||
<!DOCTYPE html>
|
|
||||||
<html class="writer-html5" lang="ru" data-content_root="../../">
|
|
||||||
<head>
|
|
||||||
<meta charset="utf-8" />
|
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
||||||
<title>components_derived.modal_edit_user — документация e-nms-qa-automation 0.1.0</title>
|
|
||||||
<link rel="stylesheet" type="text/css" href="../../_static/pygments.css?v=b86133f3" />
|
|
||||||
<link rel="stylesheet" type="text/css" href="../../_static/css/theme.css?v=e59714d7" />
|
|
||||||
|
|
||||||
|
|
||||||
<script src="../../_static/jquery.js?v=5d32c60e"></script>
|
|
||||||
<script src="../../_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script>
|
|
||||||
<script src="../../_static/documentation_options.js?v=6ff560e8"></script>
|
|
||||||
<script src="../../_static/doctools.js?v=9bcbadda"></script>
|
|
||||||
<script src="../../_static/sphinx_highlight.js?v=dc90522c"></script>
|
|
||||||
<script src="../../_static/translations.js?v=cd1d70c9"></script>
|
|
||||||
<script src="../../_static/js/theme.js"></script>
|
|
||||||
<link rel="index" title="Алфавитный указатель" href="../../genindex.html" />
|
|
||||||
<link rel="search" title="Поиск" href="../../search.html" />
|
|
||||||
</head>
|
|
||||||
|
|
||||||
<body class="wy-body-for-nav">
|
|
||||||
<div class="wy-grid-for-nav">
|
|
||||||
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
|
|
||||||
<div class="wy-side-scroll">
|
|
||||||
<div class="wy-side-nav-search" >
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<a href="../../index.html" class="icon icon-home">
|
|
||||||
e-nms-qa-automation
|
|
||||||
</a>
|
|
||||||
<div role="search">
|
|
||||||
<form id="rtd-search-form" class="wy-form" action="../../search.html" method="get">
|
|
||||||
<input type="text" name="q" placeholder="Поиск в документации" aria-label="Поиск в документации" />
|
|
||||||
<input type="hidden" name="check_keywords" value="yes" />
|
|
||||||
<input type="hidden" name="area" value="default" />
|
|
||||||
</form>
|
|
||||||
</div>
|
|
||||||
</div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Меню навигации">
|
|
||||||
<!-- Local TOC -->
|
|
||||||
<div class="local-toc"></div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</nav>
|
|
||||||
|
|
||||||
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Меню навигации для мобильных устройств" >
|
|
||||||
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
|
|
||||||
<a href="../../index.html">e-nms-qa-automation</a>
|
|
||||||
</nav>
|
|
||||||
|
|
||||||
<div class="wy-nav-content">
|
|
||||||
<div class="rst-content">
|
|
||||||
<div role="navigation" aria-label="Навигация по страницам">
|
|
||||||
<ul class="wy-breadcrumbs">
|
|
||||||
<li><a href="../../index.html" class="icon icon-home" aria-label="Home"></a></li>
|
|
||||||
<li class="breadcrumb-item"><a href="../index.html">Код модуля</a></li>
|
|
||||||
<li class="breadcrumb-item active">components_derived.modal_edit_user</li>
|
|
||||||
<li class="wy-breadcrumbs-aside">
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
<hr/>
|
|
||||||
</div>
|
|
||||||
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
|
|
||||||
<div itemprop="articleBody">
|
|
||||||
|
|
||||||
<h1>Исходный код components_derived.modal_edit_user</h1><div class="highlight"><pre>
|
|
||||||
<span></span><span class="sd">"""Модуль modal_edit_user содержит класс для работы с окном редактирования пользователя.</span>
|
|
||||||
|
|
||||||
<span class="sd">Класс EditUserModalWindow наследует базовый функционал ModalWindowComponent</span>
|
|
||||||
<span class="sd">и реализует методы для редактирования данных пользователя.</span>
|
|
||||||
<span class="sd">"""</span>
|
|
||||||
|
|
||||||
<span class="kn">import</span><span class="w"> </span><span class="nn">re</span>
|
|
||||||
<span class="kn">from</span><span class="w"> </span><span class="nn">playwright.sync_api</span><span class="w"> </span><span class="kn">import</span> <span class="n">Page</span>
|
|
||||||
<span class="kn">from</span><span class="w"> </span><span class="nn">tools.logger</span><span class="w"> </span><span class="kn">import</span> <span class="n">get_logger</span>
|
|
||||||
<span class="kn">from</span><span class="w"> </span><span class="nn">locators.modal_window_locators</span><span class="w"> </span><span class="kn">import</span> <span class="n">ModalWindowLocators</span>
|
|
||||||
<span class="kn">from</span><span class="w"> </span><span class="nn">elements.text_input_element</span><span class="w"> </span><span class="kn">import</span> <span class="n">TextInput</span>
|
|
||||||
<span class="kn">from</span><span class="w"> </span><span class="nn">elements.text_element</span><span class="w"> </span><span class="kn">import</span> <span class="n">Text</span>
|
|
||||||
<span class="kn">from</span><span class="w"> </span><span class="nn">elements.checkbox_element</span><span class="w"> </span><span class="kn">import</span> <span class="n">Checkbox</span>
|
|
||||||
<span class="kn">from</span><span class="w"> </span><span class="nn">components.modal_window_component</span><span class="w"> </span><span class="kn">import</span> <span class="n">ModalWindowComponent</span>
|
|
||||||
<span class="kn">from</span><span class="w"> </span><span class="nn">components.dropdown_list_component</span><span class="w"> </span><span class="kn">import</span> <span class="n">DropdownList</span>
|
|
||||||
<span class="kn">from</span><span class="w"> </span><span class="nn">components.confirm_component</span><span class="w"> </span><span class="kn">import</span> <span class="n">ConfirmComponent</span>
|
|
||||||
|
|
||||||
<span class="n">logger</span> <span class="o">=</span> <span class="n">get_logger</span><span class="p">(</span><span class="s2">"EDIT_USER_MODAL_WINDOW"</span><span class="p">)</span>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="EditUserModalWindow">
|
|
||||||
<a class="viewcode-back" href="../../components_derived.html#components_derived.modal_edit_user.EditUserModalWindow">[документация]</a>
|
|
||||||
<span class="k">class</span><span class="w"> </span><span class="nc">EditUserModalWindow</span><span class="p">(</span><span class="n">ModalWindowComponent</span><span class="p">):</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Модальное окно редактирования пользователя.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Наследует ModalWindowComponent и добавляет:</span>
|
|
||||||
<span class="sd"> - Поля редактирования данных</span>
|
|
||||||
<span class="sd"> - Чекбоксы настроек</span>
|
|
||||||
<span class="sd"> - Выпадающий список ролей</span>
|
|
||||||
<span class="sd"> - Кнопки действий (Сохранить, Удалить и др.)</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="EditUserModalWindow.__init__">
|
|
||||||
<a class="viewcode-back" href="../../components_derived.html#components_derived.modal_edit_user.EditUserModalWindow.__init__">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">page</span><span class="p">:</span> <span class="n">Page</span><span class="p">,</span> <span class="n">user_name</span><span class="p">:</span> <span class="nb">str</span><span class="p">):</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Инициализирует элементы формы редактирования пользователя."""</span>
|
|
||||||
|
|
||||||
<span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="fm">__init__</span><span class="p">(</span><span class="n">page</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="c1"># Локаторы элементов формы</span>
|
|
||||||
<span class="c1"># text_field_locator = ModalWindowLocators.TEXT_FIELD_INPUT_FORM_USER_DATA</span>
|
|
||||||
<span class="n">text_field_locator</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"xpath=</span><span class="si">{</span><span class="n">ModalWindowLocators</span><span class="o">.</span><span class="n">TEXT_FIELD_INPUT_FORM_USER_DATA</span><span class="si">}</span><span class="s2">"</span>
|
|
||||||
<span class="n">input_form_locator</span> <span class="o">=</span> <span class="n">ModalWindowLocators</span><span class="o">.</span><span class="n">INPUT_FORM_USER_DATA</span>
|
|
||||||
<span class="n">label_locator</span> <span class="o">=</span> <span class="n">ModalWindowLocators</span><span class="o">.</span><span class="n">LABEL_INPUT_FORM_USER_DATA</span>
|
|
||||||
|
|
||||||
<span class="c1"># Настройка заголовка и кнопки закрытия</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">window_title</span> <span class="o">=</span> <span class="n">user_name</span>
|
|
||||||
<span class="n">locator_button_toolbar_close</span> <span class="o">=</span> <span class="p">(</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">page</span><span class="o">.</span><span class="n">get_by_role</span><span class="p">(</span><span class="s2">"navigation"</span><span class="p">)</span>
|
|
||||||
<span class="o">.</span><span class="n">filter</span><span class="p">(</span><span class="n">has_text</span><span class="o">=</span><span class="n">re</span><span class="o">.</span><span class="n">compile</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">window_title</span><span class="p">))</span>
|
|
||||||
<span class="o">.</span><span class="n">get_by_role</span><span class="p">(</span><span class="s2">"button"</span><span class="p">)</span>
|
|
||||||
<span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">add_toolbar_title</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">window_title</span><span class="p">)</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">add_toolbar_button</span><span class="p">(</span><span class="n">locator_button_toolbar_close</span><span class="p">,</span> <span class="s2">"close"</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="c1"># Добавление полей формы</span>
|
|
||||||
<span class="c1"># Поле Имя</span>
|
|
||||||
<span class="n">loc</span> <span class="o">=</span> <span class="p">(</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">page</span><span class="o">.</span><span class="n">locator</span><span class="p">(</span><span class="n">input_form_locator</span><span class="p">)</span>
|
|
||||||
<span class="o">.</span><span class="n">locator</span><span class="p">(</span><span class="s2">"xpath=div[1]"</span><span class="p">)</span>
|
|
||||||
<span class="o">.</span><span class="n">locator</span><span class="p">(</span><span class="n">text_field_locator</span><span class="p">)</span>
|
|
||||||
<span class="p">)</span>
|
|
||||||
<span class="n">name_input</span> <span class="o">=</span> <span class="n">TextInput</span><span class="p">(</span><span class="n">page</span><span class="p">,</span> <span class="n">loc</span><span class="p">,</span> <span class="s2">"name_input"</span><span class="p">)</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">add_content_item</span><span class="p">(</span><span class="s2">"name_input"</span><span class="p">,</span> <span class="n">name_input</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="c1"># Поле Роль</span>
|
|
||||||
<span class="n">role_loc</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">page</span><span class="o">.</span><span class="n">locator</span><span class="p">(</span><span class="n">input_form_locator</span><span class="p">)</span><span class="o">.</span><span class="n">get_by_role</span><span class="p">(</span><span class="s2">"combobox"</span><span class="p">)</span><span class="o">.</span><span class="n">nth</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span>
|
|
||||||
<span class="n">role_input</span> <span class="o">=</span> <span class="n">TextInput</span><span class="p">(</span><span class="n">page</span><span class="p">,</span> <span class="n">role_loc</span><span class="p">,</span> <span class="s2">"role_input"</span><span class="p">)</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">add_content_item</span><span class="p">(</span><span class="s2">"role_input"</span><span class="p">,</span> <span class="n">role_input</span><span class="p">)</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">add_content_item</span><span class="p">(</span><span class="s2">"roles_list"</span><span class="p">,</span> <span class="n">DropdownList</span><span class="p">(</span><span class="n">page</span><span class="p">))</span>
|
|
||||||
|
|
||||||
<span class="c1"># Поле Комментарий</span>
|
|
||||||
<span class="n">loc</span> <span class="o">=</span> <span class="p">(</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">page</span><span class="o">.</span><span class="n">locator</span><span class="p">(</span><span class="n">input_form_locator</span><span class="p">)</span>
|
|
||||||
<span class="o">.</span><span class="n">locator</span><span class="p">(</span><span class="s2">"xpath=div[4]"</span><span class="p">)</span>
|
|
||||||
<span class="o">.</span><span class="n">locator</span><span class="p">(</span><span class="n">text_field_locator</span><span class="p">)</span>
|
|
||||||
<span class="p">)</span>
|
|
||||||
<span class="n">commentary_input</span> <span class="o">=</span> <span class="n">TextInput</span><span class="p">(</span><span class="n">page</span><span class="p">,</span> <span class="n">loc</span><span class="p">,</span> <span class="s2">"commentary_input"</span><span class="p">)</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">add_content_item</span><span class="p">(</span><span class="s2">"commentary_input"</span><span class="p">,</span> <span class="n">commentary_input</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="c1"># Поле E-mail</span>
|
|
||||||
<span class="n">loc</span> <span class="o">=</span> <span class="p">(</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">page</span><span class="o">.</span><span class="n">locator</span><span class="p">(</span><span class="n">input_form_locator</span><span class="p">)</span>
|
|
||||||
<span class="o">.</span><span class="n">locator</span><span class="p">(</span><span class="s2">"xpath=div[5]"</span><span class="p">)</span>
|
|
||||||
<span class="o">.</span><span class="n">locator</span><span class="p">(</span><span class="n">text_field_locator</span><span class="p">)</span>
|
|
||||||
<span class="p">)</span>
|
|
||||||
<span class="n">email_input</span> <span class="o">=</span> <span class="n">TextInput</span><span class="p">(</span><span class="n">page</span><span class="p">,</span> <span class="n">loc</span><span class="p">,</span> <span class="s2">"email_input"</span><span class="p">)</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">add_content_item</span><span class="p">(</span><span class="s2">"email_input"</span><span class="p">,</span> <span class="n">email_input</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="c1"># Поле Номер для СМС</span>
|
|
||||||
<span class="n">loc</span> <span class="o">=</span> <span class="p">(</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">page</span><span class="o">.</span><span class="n">locator</span><span class="p">(</span><span class="n">input_form_locator</span><span class="p">)</span>
|
|
||||||
<span class="o">.</span><span class="n">locator</span><span class="p">(</span><span class="s2">"xpath=div[6]"</span><span class="p">)</span>
|
|
||||||
<span class="o">.</span><span class="n">locator</span><span class="p">(</span><span class="n">text_field_locator</span><span class="p">)</span>
|
|
||||||
<span class="p">)</span>
|
|
||||||
<span class="n">phone_input</span> <span class="o">=</span> <span class="n">TextInput</span><span class="p">(</span><span class="n">page</span><span class="p">,</span> <span class="n">loc</span><span class="p">,</span> <span class="s2">"phone_input"</span><span class="p">)</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">add_content_item</span><span class="p">(</span><span class="s2">"phone_input"</span><span class="p">,</span> <span class="n">phone_input</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="c1"># Добавление чекбоксов и их меток</span>
|
|
||||||
|
|
||||||
<span class="c1"># Чекбокс "Блокировка" - теперь индекс 0 (т.к. нет Active Directory)</span>
|
|
||||||
<span class="n">checkbox_1</span> <span class="o">=</span> <span class="n">Checkbox</span><span class="p">(</span>
|
|
||||||
<span class="n">page</span><span class="p">,</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">page</span><span class="o">.</span><span class="n">locator</span><span class="p">(</span><span class="n">ModalWindowLocators</span><span class="o">.</span><span class="n">INPUT_FORM_USER_DATA</span><span class="p">)</span>
|
|
||||||
<span class="o">.</span><span class="n">get_by_role</span><span class="p">(</span><span class="s2">"checkbox"</span><span class="p">)</span><span class="o">.</span><span class="n">nth</span><span class="p">(</span><span class="mi">0</span><span class="p">),</span>
|
|
||||||
<span class="s2">"blocking"</span>
|
|
||||||
<span class="p">)</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">add_content_item</span><span class="p">(</span><span class="s2">"blocking_checkbox"</span><span class="p">,</span> <span class="n">checkbox_1</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="c1"># Метка "Блокировка" - индекс 0</span>
|
|
||||||
<span class="n">label_1</span> <span class="o">=</span> <span class="n">Text</span><span class="p">(</span>
|
|
||||||
<span class="n">page</span><span class="p">,</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">page</span><span class="o">.</span><span class="n">locator</span><span class="p">(</span><span class="n">label_locator</span><span class="p">)</span><span class="o">.</span><span class="n">nth</span><span class="p">(</span><span class="mi">0</span><span class="p">),</span>
|
|
||||||
<span class="s2">"blocking_checkbox_label"</span>
|
|
||||||
<span class="p">)</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">add_content_item</span><span class="p">(</span><span class="s2">"blocking_checkbox_label"</span><span class="p">,</span> <span class="n">label_1</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="c1"># Чекбокс "Подписка на Push-уведомления" - индекс 1</span>
|
|
||||||
<span class="n">checkbox_2</span> <span class="o">=</span> <span class="n">Checkbox</span><span class="p">(</span>
|
|
||||||
<span class="n">page</span><span class="p">,</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">page</span><span class="o">.</span><span class="n">locator</span><span class="p">(</span><span class="n">ModalWindowLocators</span><span class="o">.</span><span class="n">INPUT_FORM_USER_DATA</span><span class="p">)</span>
|
|
||||||
<span class="o">.</span><span class="n">get_by_role</span><span class="p">(</span><span class="s2">"checkbox"</span><span class="p">)</span><span class="o">.</span><span class="n">nth</span><span class="p">(</span><span class="mi">1</span><span class="p">),</span>
|
|
||||||
<span class="s2">"push_notification"</span>
|
|
||||||
<span class="p">)</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">add_content_item</span><span class="p">(</span><span class="s2">"push_notification_checkbox"</span><span class="p">,</span> <span class="n">checkbox_2</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="c1"># Метка "Подписка на Push-уведомления" - индекс 1</span>
|
|
||||||
<span class="n">label_2</span> <span class="o">=</span> <span class="n">Text</span><span class="p">(</span>
|
|
||||||
<span class="n">page</span><span class="p">,</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">page</span><span class="o">.</span><span class="n">locator</span><span class="p">(</span><span class="n">label_locator</span><span class="p">)</span><span class="o">.</span><span class="n">nth</span><span class="p">(</span><span class="mi">1</span><span class="p">),</span>
|
|
||||||
<span class="s2">"push_notification_checkbox_label"</span>
|
|
||||||
<span class="p">)</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">add_content_item</span><span class="p">(</span><span class="s2">"push_notification_checkbox_label"</span><span class="p">,</span> <span class="n">label_2</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="c1"># Добавление кнопок действий</span>
|
|
||||||
<span class="n">locator_button_save</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">page</span><span class="o">.</span><span class="n">get_by_role</span><span class="p">(</span><span class="s2">"button"</span><span class="p">,</span> <span class="n">name</span><span class="o">=</span><span class="s2">"Сохранить"</span><span class="p">)</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">add_button</span><span class="p">(</span><span class="n">locator_button_save</span><span class="p">,</span> <span class="s2">"save"</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="n">locator_button_delete</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">page</span><span class="o">.</span><span class="n">get_by_role</span><span class="p">(</span><span class="s2">"button"</span><span class="p">,</span> <span class="n">name</span><span class="o">=</span><span class="s2">"Удалить"</span><span class="p">)</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">add_button</span><span class="p">(</span><span class="n">locator_button_delete</span><span class="p">,</span> <span class="s2">"delete"</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="n">locator_button_reset</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">page</span><span class="o">.</span><span class="n">get_by_role</span><span class="p">(</span><span class="s2">"button"</span><span class="p">,</span> <span class="n">name</span><span class="o">=</span><span class="s2">"Сбросить пароль"</span><span class="p">)</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">add_button</span><span class="p">(</span><span class="n">locator_button_reset</span><span class="p">,</span> <span class="s2">"reset_password"</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="n">locator_button_close</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">page</span><span class="o">.</span><span class="n">get_by_role</span><span class="p">(</span><span class="s2">"button"</span><span class="p">,</span> <span class="n">name</span><span class="o">=</span><span class="s2">"Закрыть"</span><span class="p">)</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">add_button</span><span class="p">(</span><span class="n">locator_button_close</span><span class="p">,</span> <span class="s2">"close"</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="c1"># Инициализация компонентов подтверждения</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">save_user_confirm</span> <span class="o">=</span> <span class="n">ConfirmComponent</span><span class="p">(</span><span class="n">page</span><span class="p">,</span> <span class="s2">" Отмена "</span><span class="p">,</span> <span class="s2">" Сохранить "</span><span class="p">)</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">delete_user_confirm</span> <span class="o">=</span> <span class="n">ConfirmComponent</span><span class="p">(</span><span class="n">page</span><span class="p">,</span> <span class="s2">" Отмена "</span><span class="p">,</span> <span class="s2">" Удалить "</span><span class="p">)</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<span class="c1"># Действия:</span>
|
|
||||||
<div class="viewcode-block" id="EditUserModalWindow.check_blocking_checkbox">
|
|
||||||
<a class="viewcode-back" href="../../components_derived.html#components_derived.modal_edit_user.EditUserModalWindow.check_blocking_checkbox">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">check_blocking_checkbox</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Включает чек-бокс Блокировка."""</span>
|
|
||||||
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">get_content_item</span><span class="p">(</span><span class="s2">"blocking_checkbox"</span><span class="p">)</span><span class="o">.</span><span class="n">check</span><span class="p">(</span><span class="n">force</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="EditUserModalWindow.uncheck_blocking_checkbox">
|
|
||||||
<a class="viewcode-back" href="../../components_derived.html#components_derived.modal_edit_user.EditUserModalWindow.uncheck_blocking_checkbox">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">uncheck_blocking_checkbox</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Выключает чек-бокс Блокировка."""</span>
|
|
||||||
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">get_content_item</span><span class="p">(</span><span class="s2">"blocking_checkbox"</span><span class="p">)</span><span class="o">.</span><span class="n">uncheck</span><span class="p">(</span><span class="n">force</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="EditUserModalWindow.check_push_notification_checkbox">
|
|
||||||
<a class="viewcode-back" href="../../components_derived.html#components_derived.modal_edit_user.EditUserModalWindow.check_push_notification_checkbox">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">check_push_notification_checkbox</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Включает чек-бокс Push-уведомления."""</span>
|
|
||||||
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">get_content_item</span><span class="p">(</span><span class="s2">"push_notification_checkbox"</span><span class="p">)</span><span class="o">.</span><span class="n">check</span><span class="p">(</span><span class="n">force</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="EditUserModalWindow.uncheck_push_notification_checkbox">
|
|
||||||
<a class="viewcode-back" href="../../components_derived.html#components_derived.modal_edit_user.EditUserModalWindow.uncheck_push_notification_checkbox">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">uncheck_push_notification_checkbox</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Выключает чек-бокс Push-уведомления."""</span>
|
|
||||||
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">get_content_item</span><span class="p">(</span><span class="s2">"push_notification_checkbox"</span><span class="p">)</span><span class="o">.</span><span class="n">uncheck</span><span class="p">(</span><span class="n">force</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="EditUserModalWindow.close_window">
|
|
||||||
<a class="viewcode-back" href="../../components_derived.html#components_derived.modal_edit_user.EditUserModalWindow.close_window">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">close_window</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Закрывает окно через кнопку 'Закрыть'."""</span>
|
|
||||||
|
|
||||||
<span class="n">close_button</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_button_by_name</span><span class="p">(</span><span class="s2">"close"</span><span class="p">)</span>
|
|
||||||
<span class="n">close_button</span><span class="o">.</span><span class="n">click</span><span class="p">()</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="EditUserModalWindow.close_window_by_toolbar_button">
|
|
||||||
<a class="viewcode-back" href="../../components_derived.html#components_derived.modal_edit_user.EditUserModalWindow.close_window_by_toolbar_button">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">close_window_by_toolbar_button</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Закрывает окно через кнопку в тулбаре."""</span>
|
|
||||||
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">click_toolbar_close_button</span><span class="p">()</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="EditUserModalWindow.delete_user">
|
|
||||||
<a class="viewcode-back" href="../../components_derived.html#components_derived.modal_edit_user.EditUserModalWindow.delete_user">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">delete_user</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Удаляет пользователя с подтверждением."""</span>
|
|
||||||
|
|
||||||
<span class="n">delete_button</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_button_by_name</span><span class="p">(</span><span class="s2">"delete"</span><span class="p">)</span>
|
|
||||||
<span class="n">delete_button</span><span class="o">.</span><span class="n">click</span><span class="p">()</span>
|
|
||||||
|
|
||||||
<span class="n">title</span> <span class="o">=</span> <span class="s2">"Удаление"</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">delete_user_confirm</span><span class="o">.</span><span class="n">check_title</span><span class="p">(</span>
|
|
||||||
<span class="n">title</span><span class="p">,</span>
|
|
||||||
<span class="sa">f</span><span class="s2">"Confirmation dialog window with title '</span><span class="si">{</span><span class="n">title</span><span class="si">}</span><span class="s2">' is missing"</span>
|
|
||||||
<span class="p">)</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">delete_user_confirm</span><span class="o">.</span><span class="n">click_allow_button</span><span class="p">()</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="EditUserModalWindow.edit_user">
|
|
||||||
<a class="viewcode-back" href="../../components_derived.html#components_derived.modal_edit_user.EditUserModalWindow.edit_user">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">edit_user</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">user_data</span><span class="p">):</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Редактирует данные пользователя.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Args:</span>
|
|
||||||
<span class="sd"> user_data (dict): Данные для обновления (имя, роль и др.)</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
|
|
||||||
<span class="n">fields</span> <span class="o">=</span> <span class="n">user_data</span><span class="o">.</span><span class="n">keys</span><span class="p">()</span>
|
|
||||||
|
|
||||||
<span class="k">if</span> <span class="s2">"name"</span> <span class="ow">in</span> <span class="n">fields</span><span class="p">:</span>
|
|
||||||
<span class="n">input_field</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_content_item</span><span class="p">(</span><span class="s2">"name_input"</span><span class="p">)</span>
|
|
||||||
<span class="n">input_field</span><span class="o">.</span><span class="n">input_value</span><span class="p">(</span><span class="n">user_data</span><span class="p">[</span><span class="s2">"name"</span><span class="p">])</span>
|
|
||||||
|
|
||||||
<span class="k">if</span> <span class="s2">"role"</span> <span class="ow">in</span> <span class="n">fields</span><span class="p">:</span>
|
|
||||||
<span class="n">role_field</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_content_item</span><span class="p">(</span><span class="s2">"role_input"</span><span class="p">)</span>
|
|
||||||
<span class="n">role_field</span><span class="o">.</span><span class="n">click</span><span class="p">()</span>
|
|
||||||
|
|
||||||
<span class="n">roles_list</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_content_item</span><span class="p">(</span><span class="s2">"roles_list"</span><span class="p">)</span>
|
|
||||||
<span class="n">roles_list</span><span class="o">.</span><span class="n">check_item_with_text</span><span class="p">(</span><span class="n">user_data</span><span class="p">[</span><span class="s2">"role"</span><span class="p">])</span>
|
|
||||||
<span class="n">roles_list</span><span class="o">.</span><span class="n">click_item_with_text</span><span class="p">(</span><span class="n">user_data</span><span class="p">[</span><span class="s2">"role"</span><span class="p">])</span>
|
|
||||||
|
|
||||||
<span class="k">if</span> <span class="s2">"commentary"</span> <span class="ow">in</span> <span class="n">fields</span><span class="p">:</span>
|
|
||||||
<span class="n">input_field</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_content_item</span><span class="p">(</span><span class="s2">"commentary_input"</span><span class="p">)</span>
|
|
||||||
<span class="n">input_field</span><span class="o">.</span><span class="n">input_value</span><span class="p">(</span><span class="n">user_data</span><span class="p">[</span><span class="s2">"commentary"</span><span class="p">])</span>
|
|
||||||
|
|
||||||
<span class="k">if</span> <span class="s2">"email"</span> <span class="ow">in</span> <span class="n">fields</span><span class="p">:</span>
|
|
||||||
<span class="n">input_field</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_content_item</span><span class="p">(</span><span class="s2">"email_input"</span><span class="p">)</span>
|
|
||||||
<span class="n">input_field</span><span class="o">.</span><span class="n">input_value</span><span class="p">(</span><span class="n">user_data</span><span class="p">[</span><span class="s2">"email"</span><span class="p">])</span>
|
|
||||||
|
|
||||||
<span class="k">if</span> <span class="s2">"phone_number"</span> <span class="ow">in</span> <span class="n">fields</span><span class="p">:</span>
|
|
||||||
<span class="n">input_field</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_content_item</span><span class="p">(</span><span class="s2">"phone_input"</span><span class="p">)</span>
|
|
||||||
<span class="n">input_field</span><span class="o">.</span><span class="n">input_value</span><span class="p">(</span><span class="n">user_data</span><span class="p">[</span><span class="s2">"phone_number"</span><span class="p">])</span>
|
|
||||||
|
|
||||||
<span class="k">if</span> <span class="s2">"blocking_checked"</span> <span class="ow">in</span> <span class="n">fields</span><span class="p">:</span>
|
|
||||||
<span class="n">checkbox</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_content_item</span><span class="p">(</span><span class="s2">"blocking_checkbox"</span><span class="p">)</span>
|
|
||||||
<span class="k">if</span> <span class="n">user_data</span><span class="p">[</span><span class="s2">"blocking_checked"</span><span class="p">]:</span>
|
|
||||||
<span class="n">checkbox</span><span class="o">.</span><span class="n">check</span><span class="p">()</span>
|
|
||||||
<span class="k">else</span><span class="p">:</span>
|
|
||||||
<span class="n">checkbox</span><span class="o">.</span><span class="n">uncheck</span><span class="p">()</span>
|
|
||||||
|
|
||||||
<span class="k">if</span> <span class="s2">"push_notification_checked"</span> <span class="ow">in</span> <span class="n">fields</span><span class="p">:</span>
|
|
||||||
<span class="n">checkbox</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_content_item</span><span class="p">(</span><span class="s2">"push_notification_checkbox"</span><span class="p">)</span>
|
|
||||||
<span class="k">if</span> <span class="n">user_data</span><span class="p">[</span><span class="s2">"push_notification_checked"</span><span class="p">]:</span>
|
|
||||||
<span class="n">checkbox</span><span class="o">.</span><span class="n">check</span><span class="p">()</span>
|
|
||||||
<span class="k">else</span><span class="p">:</span>
|
|
||||||
<span class="n">checkbox</span><span class="o">.</span><span class="n">uncheck</span><span class="p">()</span>
|
|
||||||
|
|
||||||
<span class="n">save_button</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_button_by_name</span><span class="p">(</span><span class="s2">"save"</span><span class="p">)</span>
|
|
||||||
<span class="n">save_button</span><span class="o">.</span><span class="n">click</span><span class="p">()</span>
|
|
||||||
|
|
||||||
<span class="n">title</span> <span class="o">=</span> <span class="s2">"Сохранение"</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">save_user_confirm</span><span class="o">.</span><span class="n">check_title</span><span class="p">(</span>
|
|
||||||
<span class="n">title</span><span class="p">,</span>
|
|
||||||
<span class="sa">f</span><span class="s2">"Confirmation dialog window with title '</span><span class="si">{</span><span class="n">title</span><span class="si">}</span><span class="s2">' is missing"</span>
|
|
||||||
<span class="p">)</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">save_user_confirm</span><span class="o">.</span><span class="n">click_allow_button</span><span class="p">()</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="EditUserModalWindow.reset_password">
|
|
||||||
<a class="viewcode-back" href="../../components_derived.html#components_derived.modal_edit_user.EditUserModalWindow.reset_password">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">reset_password</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Инициирует сброс пароля пользователя."""</span>
|
|
||||||
|
|
||||||
<span class="n">reset_password_button</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_button_by_name</span><span class="p">(</span><span class="s2">"reset_password"</span><span class="p">)</span>
|
|
||||||
<span class="n">reset_password_button</span><span class="o">.</span><span class="n">click</span><span class="p">()</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<span class="c1"># Проверки:</span>
|
|
||||||
<div class="viewcode-block" id="EditUserModalWindow.check_content">
|
|
||||||
<a class="viewcode-back" href="../../components_derived.html#components_derived.modal_edit_user.EditUserModalWindow.check_content">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">check_content</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">user_name</span><span class="p">,</span> <span class="n">role</span><span class="p">):</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Проверяет наличие и корректность элементов окна.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Args:</span>
|
|
||||||
<span class="sd"> user_name (str): Ожидаемое имя пользователя</span>
|
|
||||||
<span class="sd"> role (str): Ожидаемая роль пользователя</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
|
|
||||||
<span class="n">menu_locator</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">page</span><span class="o">.</span><span class="n">locator</span><span class="p">(</span><span class="n">ModalWindowLocators</span><span class="o">.</span><span class="n">MENU_INPUT_FORM_USER_DATA</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">check_by_window_title</span><span class="p">()</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">check_toolbar_button_visibility</span><span class="p">(</span><span class="s2">"close"</span><span class="p">)</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">check_toolbar_button_tooltip</span><span class="p">(</span><span class="s2">"close"</span><span class="p">,</span> <span class="s2">"Закрыть"</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="k">for</span> <span class="n">name</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">content_items</span><span class="p">:</span>
|
|
||||||
<span class="n">item</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_content_item</span><span class="p">(</span><span class="n">name</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="k">if</span> <span class="n">name</span> <span class="o">==</span> <span class="s2">"push_notification_checkbox_label"</span><span class="p">:</span>
|
|
||||||
<span class="n">item</span><span class="o">.</span><span class="n">check_have_text</span><span class="p">(</span>
|
|
||||||
<span class="s2">"Подписка на Push-уведомления"</span><span class="p">,</span>
|
|
||||||
<span class="s2">"Label 'Подписка на Push-уведомления' is missing"</span>
|
|
||||||
<span class="p">)</span>
|
|
||||||
<span class="k">elif</span> <span class="n">name</span> <span class="o">==</span> <span class="s2">"blocking_checkbox_label"</span><span class="p">:</span>
|
|
||||||
<span class="n">item</span><span class="o">.</span><span class="n">check_have_text</span><span class="p">(</span>
|
|
||||||
<span class="s2">"Блокировка"</span><span class="p">,</span>
|
|
||||||
<span class="s2">"Label 'Блокировка' is missing"</span>
|
|
||||||
<span class="p">)</span>
|
|
||||||
<span class="k">elif</span> <span class="n">name</span> <span class="o">==</span> <span class="s2">"name_input"</span><span class="p">:</span>
|
|
||||||
<span class="n">name_field</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_content_item</span><span class="p">(</span><span class="s2">"name_input"</span><span class="p">)</span>
|
|
||||||
<span class="n">text_value</span> <span class="o">=</span> <span class="n">name_field</span><span class="o">.</span><span class="n">get_input_value</span><span class="p">()</span>
|
|
||||||
<span class="k">assert</span> <span class="n">text_value</span> <span class="o">==</span> <span class="n">user_name</span><span class="p">,</span> <span class="p">(</span>
|
|
||||||
<span class="sa">f</span><span class="s2">"Expected user name '</span><span class="si">{</span><span class="n">user_name</span><span class="si">}</span><span class="s2">' is not equal "</span>
|
|
||||||
<span class="sa">f</span><span class="s2">"real user name '</span><span class="si">{</span><span class="n">text_value</span><span class="si">}</span><span class="s2">'"</span>
|
|
||||||
<span class="p">)</span>
|
|
||||||
<span class="k">elif</span> <span class="n">name</span> <span class="o">==</span> <span class="s2">"role_input"</span><span class="p">:</span>
|
|
||||||
<span class="n">item</span><span class="o">.</span><span class="n">click</span><span class="p">()</span>
|
|
||||||
<span class="n">roles_list</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_content_item</span><span class="p">(</span><span class="s2">"roles_list"</span><span class="p">)</span>
|
|
||||||
<span class="n">roles_list</span><span class="o">.</span><span class="n">check_visibility</span><span class="p">(</span><span class="n">menu_locator</span><span class="p">,</span> <span class="s2">"Roles list is missing"</span><span class="p">)</span>
|
|
||||||
<span class="n">roles_list</span><span class="o">.</span><span class="n">check_item_with_text</span><span class="p">(</span><span class="n">role</span><span class="p">)</span>
|
|
||||||
<span class="k">elif</span> <span class="n">name</span> <span class="o">==</span> <span class="s2">"roles_list"</span><span class="p">:</span>
|
|
||||||
<span class="k">continue</span>
|
|
||||||
<span class="k">else</span><span class="p">:</span>
|
|
||||||
<span class="n">item</span><span class="o">.</span><span class="n">check_visibility</span><span class="p">(</span>
|
|
||||||
<span class="sa">f</span><span class="s2">"Modal window content item with name '</span><span class="si">{</span><span class="n">name</span><span class="si">}</span><span class="s2">' is missing"</span>
|
|
||||||
<span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">check_button_visibility</span><span class="p">(</span><span class="s2">"save"</span><span class="p">)</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">check_button_visibility</span><span class="p">(</span><span class="s2">"delete"</span><span class="p">)</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">check_button_visibility</span><span class="p">(</span><span class="s2">"reset_password"</span><span class="p">)</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">check_button_visibility</span><span class="p">(</span><span class="s2">"close"</span><span class="p">)</span></div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</pre></div>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<footer>
|
|
||||||
|
|
||||||
<hr/>
|
|
||||||
|
|
||||||
<div role="contentinfo">
|
|
||||||
<p>© Авторские права 2025, NPO KIS. </p>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
Собрано при помощи <a href="https://www.sphinx-doc.org/">Sphinx</a> с использованием
|
|
||||||
<a href="https://github.com/readthedocs/sphinx_rtd_theme">темы,</a>
|
|
||||||
предоставленной <a href="https://readthedocs.org">Read the Docs</a>.
|
|
||||||
|
|
||||||
|
|
||||||
</footer>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</section>
|
|
||||||
</div>
|
|
||||||
<script>
|
|
||||||
jQuery(function () {
|
|
||||||
SphinxRtdTheme.Navigation.enable(true);
|
|
||||||
});
|
|
||||||
</script>
|
|
||||||
|
|
||||||
</body>
|
|
||||||
</html>
|
|
||||||
|
|
@ -1,188 +0,0 @@
|
||||||
|
|
||||||
|
|
||||||
<!DOCTYPE html>
|
|
||||||
<html class="writer-html5" lang="ru" data-content_root="../../">
|
|
||||||
<head>
|
|
||||||
<meta charset="utf-8" />
|
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
||||||
<title>components_derived.modal_view_template — документация e-nms-qa-automation 0.1.0</title>
|
|
||||||
<link rel="stylesheet" type="text/css" href="../../_static/pygments.css?v=b86133f3" />
|
|
||||||
<link rel="stylesheet" type="text/css" href="../../_static/css/theme.css?v=e59714d7" />
|
|
||||||
|
|
||||||
|
|
||||||
<script src="../../_static/jquery.js?v=5d32c60e"></script>
|
|
||||||
<script src="../../_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script>
|
|
||||||
<script src="../../_static/documentation_options.js?v=6ff560e8"></script>
|
|
||||||
<script src="../../_static/doctools.js?v=9bcbadda"></script>
|
|
||||||
<script src="../../_static/sphinx_highlight.js?v=dc90522c"></script>
|
|
||||||
<script src="../../_static/translations.js?v=cd1d70c9"></script>
|
|
||||||
<script src="../../_static/js/theme.js"></script>
|
|
||||||
<link rel="index" title="Алфавитный указатель" href="../../genindex.html" />
|
|
||||||
<link rel="search" title="Поиск" href="../../search.html" />
|
|
||||||
</head>
|
|
||||||
|
|
||||||
<body class="wy-body-for-nav">
|
|
||||||
<div class="wy-grid-for-nav">
|
|
||||||
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
|
|
||||||
<div class="wy-side-scroll">
|
|
||||||
<div class="wy-side-nav-search" >
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<a href="../../index.html" class="icon icon-home">
|
|
||||||
e-nms-qa-automation
|
|
||||||
</a>
|
|
||||||
<div role="search">
|
|
||||||
<form id="rtd-search-form" class="wy-form" action="../../search.html" method="get">
|
|
||||||
<input type="text" name="q" placeholder="Поиск в документации" aria-label="Поиск в документации" />
|
|
||||||
<input type="hidden" name="check_keywords" value="yes" />
|
|
||||||
<input type="hidden" name="area" value="default" />
|
|
||||||
</form>
|
|
||||||
</div>
|
|
||||||
</div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Меню навигации">
|
|
||||||
<!-- Local TOC -->
|
|
||||||
<div class="local-toc"></div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</nav>
|
|
||||||
|
|
||||||
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Меню навигации для мобильных устройств" >
|
|
||||||
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
|
|
||||||
<a href="../../index.html">e-nms-qa-automation</a>
|
|
||||||
</nav>
|
|
||||||
|
|
||||||
<div class="wy-nav-content">
|
|
||||||
<div class="rst-content">
|
|
||||||
<div role="navigation" aria-label="Навигация по страницам">
|
|
||||||
<ul class="wy-breadcrumbs">
|
|
||||||
<li><a href="../../index.html" class="icon icon-home" aria-label="Home"></a></li>
|
|
||||||
<li class="breadcrumb-item"><a href="../index.html">Код модуля</a></li>
|
|
||||||
<li class="breadcrumb-item active">components_derived.modal_view_template</li>
|
|
||||||
<li class="wy-breadcrumbs-aside">
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
<hr/>
|
|
||||||
</div>
|
|
||||||
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
|
|
||||||
<div itemprop="articleBody">
|
|
||||||
|
|
||||||
<h1>Исходный код components_derived.modal_view_template</h1><div class="highlight"><pre>
|
|
||||||
<span></span><span class="sd">"""Модуль modal_view_template содержит класс для работы с модальным окном шаблона.</span>
|
|
||||||
|
|
||||||
<span class="sd">Класс ViewTemplateModalWindow наследует базовый функционал ModalWindowComponent</span>
|
|
||||||
<span class="sd">и реализует методы просмотра модального окна шаблона.</span>
|
|
||||||
<span class="sd">"""</span>
|
|
||||||
|
|
||||||
<span class="kn">import</span><span class="w"> </span><span class="nn">re</span>
|
|
||||||
<span class="kn">from</span><span class="w"> </span><span class="nn">playwright.sync_api</span><span class="w"> </span><span class="kn">import</span> <span class="n">Page</span>
|
|
||||||
<span class="kn">from</span><span class="w"> </span><span class="nn">tools.logger</span><span class="w"> </span><span class="kn">import</span> <span class="n">get_logger</span>
|
|
||||||
<span class="kn">from</span><span class="w"> </span><span class="nn">components.modal_window_component</span><span class="w"> </span><span class="kn">import</span> <span class="n">ModalWindowComponent</span>
|
|
||||||
<span class="kn">from</span><span class="w"> </span><span class="nn">components.json_container_component</span><span class="w"> </span><span class="kn">import</span> <span class="n">JsonContainerComponent</span>
|
|
||||||
<span class="kn">from</span><span class="w"> </span><span class="nn">locators.json_container_locators</span><span class="w"> </span><span class="kn">import</span> <span class="n">JsonContainerLocators</span>
|
|
||||||
|
|
||||||
|
|
||||||
<span class="n">logger</span> <span class="o">=</span> <span class="n">get_logger</span><span class="p">(</span><span class="s2">"VIEW_TEMPLATE_MODAL_WINDOW"</span><span class="p">)</span>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="ViewTemplateModalWindow">
|
|
||||||
<a class="viewcode-back" href="../../components_derived.html#components_derived.modal_view_template.ViewTemplateModalWindow">[документация]</a>
|
|
||||||
<span class="k">class</span><span class="w"> </span><span class="nc">ViewTemplateModalWindow</span><span class="p">(</span><span class="n">ModalWindowComponent</span><span class="p">):</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Модальное окно шаблона.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Наследует ModalWindowComponent и добавляет функционал для:</span>
|
|
||||||
<span class="sd"> 1. Инициализации модального окна с конкретным шаблоном</span>
|
|
||||||
<span class="sd"> 2. Закрытия модального окна через тулбар</span>
|
|
||||||
<span class="sd"> 3. Проверки содержимого модального окна</span>
|
|
||||||
<span class="sd"> 4. Проверки содержимого JSON контейнера</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="ViewTemplateModalWindow.__init__">
|
|
||||||
<a class="viewcode-back" href="../../components_derived.html#components_derived.modal_view_template.ViewTemplateModalWindow.__init__">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">page</span><span class="p">:</span> <span class="n">Page</span><span class="p">,</span> <span class="n">title</span><span class="p">:</span> <span class="nb">str</span><span class="p">):</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Инициализирует элементы формы модального окна шаблона."""</span>
|
|
||||||
<span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="fm">__init__</span><span class="p">(</span><span class="n">page</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="c1"># Настройка заголовка и кнопки закрытия</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">window_title</span> <span class="o">=</span> <span class="n">title</span>
|
|
||||||
<span class="n">locator_button_toolbar_close</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">page</span><span class="o">.</span><span class="n">get_by_role</span><span class="p">(</span><span class="s2">"navigation"</span><span class="p">)</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span>
|
|
||||||
<span class="n">has_text</span><span class="o">=</span><span class="n">re</span><span class="o">.</span><span class="n">compile</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">window_title</span><span class="p">)</span>
|
|
||||||
<span class="p">)</span><span class="o">.</span><span class="n">get_by_role</span><span class="p">(</span><span class="s2">"button"</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">add_toolbar_title</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">window_title</span><span class="p">)</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">add_toolbar_button</span><span class="p">(</span><span class="n">locator_button_toolbar_close</span><span class="p">,</span> <span class="s2">"close"</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="c1"># Инициализация JSON контейнера</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">json_container</span> <span class="o">=</span> <span class="n">JsonContainerComponent</span><span class="p">(</span><span class="n">page</span><span class="p">)</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="ViewTemplateModalWindow.close_window_by_toolbar_button">
|
|
||||||
<a class="viewcode-back" href="../../components_derived.html#components_derived.modal_view_template.ViewTemplateModalWindow.close_window_by_toolbar_button">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">close_window_by_toolbar_button</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Закрывает окно через кнопку в тулбаре."""</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">click_toolbar_close_button</span><span class="p">()</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="ViewTemplateModalWindow.check_content">
|
|
||||||
<a class="viewcode-back" href="../../components_derived.html#components_derived.modal_view_template.ViewTemplateModalWindow.check_content">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">check_content</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Проверяет наличие и корректность элементов окна.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Проверяет:</span>
|
|
||||||
<span class="sd"> 1. Наличие заголовка окна с именем шаблона</span>
|
|
||||||
<span class="sd"> 2. Видимость кнопки закрытия</span>
|
|
||||||
<span class="sd"> 3. Подсказку кнопки закрытия</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">check_by_window_title</span><span class="p">()</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">check_toolbar_button_visibility</span><span class="p">(</span><span class="s2">"close"</span><span class="p">)</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">check_toolbar_button_tooltip</span><span class="p">(</span><span class="s2">"close"</span><span class="p">,</span> <span class="s2">"Закрыть"</span><span class="p">)</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="ViewTemplateModalWindow.verify_json_container_content">
|
|
||||||
<a class="viewcode-back" href="../../components_derived.html#components_derived.modal_view_template.ViewTemplateModalWindow.verify_json_container_content">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">verify_json_container_content</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">template_data</span><span class="p">:</span> <span class="nb">dict</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Проверяет соответствие данных контейнера данным из API.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Args:</span>
|
|
||||||
<span class="sd"> template_data: Данные шаблона из API.</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
<span class="c1"># Читаем данные из контейнера</span>
|
|
||||||
<span class="n">actual_data</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">json_container</span><span class="o">.</span><span class="n">read_data</span><span class="p">(</span><span class="n">JsonContainerLocators</span><span class="o">.</span><span class="n">CONTAINER</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="c1"># Сравниваем actual_data с данными конкретного шаблона</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">json_container</span><span class="o">.</span><span class="n">check_json_equals</span><span class="p">(</span>
|
|
||||||
<span class="n">actual_data</span><span class="p">,</span>
|
|
||||||
<span class="n">template_data</span><span class="p">,</span>
|
|
||||||
<span class="s2">"Expected json content is not equal actual:"</span>
|
|
||||||
<span class="p">)</span></div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</pre></div>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<footer>
|
|
||||||
|
|
||||||
<hr/>
|
|
||||||
|
|
||||||
<div role="contentinfo">
|
|
||||||
<p>© Авторские права 2025, NPO KIS. </p>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
Собрано при помощи <a href="https://www.sphinx-doc.org/">Sphinx</a> с использованием
|
|
||||||
<a href="https://github.com/readthedocs/sphinx_rtd_theme">темы,</a>
|
|
||||||
предоставленной <a href="https://readthedocs.org">Read the Docs</a>.
|
|
||||||
|
|
||||||
|
|
||||||
</footer>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</section>
|
|
||||||
</div>
|
|
||||||
<script>
|
|
||||||
jQuery(function () {
|
|
||||||
SphinxRtdTheme.Navigation.enable(true);
|
|
||||||
});
|
|
||||||
</script>
|
|
||||||
|
|
||||||
</body>
|
|
||||||
</html>
|
|
||||||
|
|
@ -1,315 +0,0 @@
|
||||||
|
|
||||||
|
|
||||||
<!DOCTYPE html>
|
|
||||||
<html class="writer-html5" lang="ru" data-content_root="../../">
|
|
||||||
<head>
|
|
||||||
<meta charset="utf-8" />
|
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
||||||
<title>components_derived.modal_view_ztp_template — документация e-nms-qa-automation 0.1.0</title>
|
|
||||||
<link rel="stylesheet" type="text/css" href="../../_static/pygments.css?v=b86133f3" />
|
|
||||||
<link rel="stylesheet" type="text/css" href="../../_static/css/theme.css?v=e59714d7" />
|
|
||||||
|
|
||||||
|
|
||||||
<script src="../../_static/jquery.js?v=5d32c60e"></script>
|
|
||||||
<script src="../../_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script>
|
|
||||||
<script src="../../_static/documentation_options.js?v=6ff560e8"></script>
|
|
||||||
<script src="../../_static/doctools.js?v=9bcbadda"></script>
|
|
||||||
<script src="../../_static/sphinx_highlight.js?v=dc90522c"></script>
|
|
||||||
<script src="../../_static/translations.js?v=cd1d70c9"></script>
|
|
||||||
<script src="../../_static/js/theme.js"></script>
|
|
||||||
<link rel="index" title="Алфавитный указатель" href="../../genindex.html" />
|
|
||||||
<link rel="search" title="Поиск" href="../../search.html" />
|
|
||||||
</head>
|
|
||||||
|
|
||||||
<body class="wy-body-for-nav">
|
|
||||||
<div class="wy-grid-for-nav">
|
|
||||||
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
|
|
||||||
<div class="wy-side-scroll">
|
|
||||||
<div class="wy-side-nav-search" >
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<a href="../../index.html" class="icon icon-home">
|
|
||||||
e-nms-qa-automation
|
|
||||||
</a>
|
|
||||||
<div role="search">
|
|
||||||
<form id="rtd-search-form" class="wy-form" action="../../search.html" method="get">
|
|
||||||
<input type="text" name="q" placeholder="Поиск в документации" aria-label="Поиск в документации" />
|
|
||||||
<input type="hidden" name="check_keywords" value="yes" />
|
|
||||||
<input type="hidden" name="area" value="default" />
|
|
||||||
</form>
|
|
||||||
</div>
|
|
||||||
</div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Меню навигации">
|
|
||||||
<!-- Local TOC -->
|
|
||||||
<div class="local-toc"></div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</nav>
|
|
||||||
|
|
||||||
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Меню навигации для мобильных устройств" >
|
|
||||||
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
|
|
||||||
<a href="../../index.html">e-nms-qa-automation</a>
|
|
||||||
</nav>
|
|
||||||
|
|
||||||
<div class="wy-nav-content">
|
|
||||||
<div class="rst-content">
|
|
||||||
<div role="navigation" aria-label="Навигация по страницам">
|
|
||||||
<ul class="wy-breadcrumbs">
|
|
||||||
<li><a href="../../index.html" class="icon icon-home" aria-label="Home"></a></li>
|
|
||||||
<li class="breadcrumb-item"><a href="../index.html">Код модуля</a></li>
|
|
||||||
<li class="breadcrumb-item active">components_derived.modal_view_ztp_template</li>
|
|
||||||
<li class="wy-breadcrumbs-aside">
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
<hr/>
|
|
||||||
</div>
|
|
||||||
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
|
|
||||||
<div itemprop="articleBody">
|
|
||||||
|
|
||||||
<h1>Исходный код components_derived.modal_view_ztp_template</h1><div class="highlight"><pre>
|
|
||||||
<span></span><span class="sd">"""Модуль modal_view_ztp_template содержит класс для работы с модальным окном шаблона ZTP.</span>
|
|
||||||
|
|
||||||
<span class="sd">Класс ViewZTPTemplateModalWindow наследует базовый функционал ModalWindowComponent</span>
|
|
||||||
<span class="sd">и реализует методы просмотра модального окна шаблона Zero Touch Provisioning.</span>
|
|
||||||
<span class="sd">"""</span>
|
|
||||||
|
|
||||||
<span class="kn">import</span><span class="w"> </span><span class="nn">re</span>
|
|
||||||
<span class="kn">from</span><span class="w"> </span><span class="nn">playwright.sync_api</span><span class="w"> </span><span class="kn">import</span> <span class="n">Page</span>
|
|
||||||
<span class="kn">from</span><span class="w"> </span><span class="nn">tools.logger</span><span class="w"> </span><span class="kn">import</span> <span class="n">get_logger</span>
|
|
||||||
<span class="kn">from</span><span class="w"> </span><span class="nn">locators.modal_window_locators</span><span class="w"> </span><span class="kn">import</span> <span class="n">ModalWindowLocators</span>
|
|
||||||
<span class="kn">from</span><span class="w"> </span><span class="nn">components.modal_window_component</span><span class="w"> </span><span class="kn">import</span> <span class="n">ModalWindowComponent</span>
|
|
||||||
|
|
||||||
|
|
||||||
<span class="n">logger</span> <span class="o">=</span> <span class="n">get_logger</span><span class="p">(</span><span class="s2">"VIEW_ZTP_TEMPLATE_MODAL_WINDOW"</span><span class="p">)</span>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="ViewZTPTemplateModalWindow">
|
|
||||||
<a class="viewcode-back" href="../../components_derived.html#components_derived.modal_view_ztp_template.ViewZTPTemplateModalWindow">[документация]</a>
|
|
||||||
<span class="k">class</span><span class="w"> </span><span class="nc">ViewZTPTemplateModalWindow</span><span class="p">(</span><span class="n">ModalWindowComponent</span><span class="p">):</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Модальное окно шаблона Zero Touch Provisioning.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Наследует ModalWindowComponent и добавляет функционал для:</span>
|
|
||||||
<span class="sd"> 1. Инициализации модального окна с конкретным шаблоном ZTP</span>
|
|
||||||
<span class="sd"> 2. Закрытия модального окна</span>
|
|
||||||
<span class="sd"> 3. Получения конфигурационных данных шаблона ZTP</span>
|
|
||||||
<span class="sd"> 4. Проверки содержимого модального окна</span>
|
|
||||||
<span class="sd"> 5. Сравнения данных с API специфичными для ZTP</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="ViewZTPTemplateModalWindow.__init__">
|
|
||||||
<a class="viewcode-back" href="../../components_derived.html#components_derived.modal_view_ztp_template.ViewZTPTemplateModalWindow.__init__">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">page</span><span class="p">:</span> <span class="n">Page</span><span class="p">,</span> <span class="n">title</span><span class="p">:</span> <span class="nb">str</span><span class="p">):</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Инициализирует элементы формы модального окна шаблона ZTP."""</span>
|
|
||||||
<span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="fm">__init__</span><span class="p">(</span><span class="n">page</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="c1"># Настройка заголовка и кнопок закрытия</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">window_title</span> <span class="o">=</span> <span class="n">title</span>
|
|
||||||
<span class="n">locator_button_toolbar_close</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">page</span><span class="o">.</span><span class="n">get_by_role</span><span class="p">(</span><span class="s2">"navigation"</span><span class="p">)</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span>
|
|
||||||
<span class="n">has_text</span><span class="o">=</span><span class="n">re</span><span class="o">.</span><span class="n">compile</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">window_title</span><span class="p">)</span>
|
|
||||||
<span class="p">)</span><span class="o">.</span><span class="n">get_by_role</span><span class="p">(</span><span class="s2">"button"</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">add_toolbar_title</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">window_title</span><span class="p">)</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">add_toolbar_button</span><span class="p">(</span><span class="n">locator_button_toolbar_close</span><span class="p">,</span> <span class="s2">"close"</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="n">locator_button_close</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">page</span><span class="o">.</span><span class="n">get_by_role</span><span class="p">(</span><span class="s2">"button"</span><span class="p">,</span> <span class="n">name</span><span class="o">=</span><span class="s2">"Закрыть"</span><span class="p">)</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">add_button</span><span class="p">(</span><span class="n">locator_button_close</span><span class="p">,</span> <span class="s2">"close"</span><span class="p">)</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="ViewZTPTemplateModalWindow.close_window">
|
|
||||||
<a class="viewcode-back" href="../../components_derived.html#components_derived.modal_view_ztp_template.ViewZTPTemplateModalWindow.close_window">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">close_window</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Закрывает окно через кнопку 'Закрыть'."""</span>
|
|
||||||
<span class="n">close_button</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_button_by_name</span><span class="p">(</span><span class="s2">"close"</span><span class="p">)</span>
|
|
||||||
<span class="n">close_button</span><span class="o">.</span><span class="n">click</span><span class="p">()</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="ViewZTPTemplateModalWindow.close_window_by_toolbar_button">
|
|
||||||
<a class="viewcode-back" href="../../components_derived.html#components_derived.modal_view_ztp_template.ViewZTPTemplateModalWindow.close_window_by_toolbar_button">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">close_window_by_toolbar_button</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Закрывает окно через кнопку в тулбаре."""</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">click_toolbar_close_button</span><span class="p">()</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="ViewZTPTemplateModalWindow.check_content">
|
|
||||||
<a class="viewcode-back" href="../../components_derived.html#components_derived.modal_view_ztp_template.ViewZTPTemplateModalWindow.check_content">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">check_content</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Проверяет наличие и корректность элементов окна ZTP шаблона.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Проверяет:</span>
|
|
||||||
<span class="sd"> 1. Наличие заголовка окна с именем шаблона</span>
|
|
||||||
<span class="sd"> 2. Видимость кнопки закрытия</span>
|
|
||||||
<span class="sd"> 3. Подсказку кнопки закрытия</span>
|
|
||||||
<span class="sd"> 4. Наличие специфичных полей для ZTP</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">check_by_window_title</span><span class="p">()</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">check_toolbar_button_visibility</span><span class="p">(</span><span class="s2">"close"</span><span class="p">)</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">check_toolbar_button_tooltip</span><span class="p">(</span><span class="s2">"close"</span><span class="p">,</span> <span class="s2">"Закрыть"</span><span class="p">)</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="ViewZTPTemplateModalWindow.get_modal_window_data">
|
|
||||||
<a class="viewcode-back" href="../../components_derived.html#components_derived.modal_view_ztp_template.ViewZTPTemplateModalWindow.get_modal_window_data">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">get_modal_window_data</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">dict</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Извлекает данные из модального окна шаблона ZTP и структурирует по кодам и значениям.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Returns:</span>
|
|
||||||
<span class="sd"> dict: Данные в формате {'код': 'значение'} как в API ZTP</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
<span class="n">modal_data</span> <span class="o">=</span> <span class="p">{}</span>
|
|
||||||
|
|
||||||
<span class="c1"># Получаем все значения из input полей</span>
|
|
||||||
<span class="n">input_locator</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_locator</span><span class="p">(</span><span class="n">ModalWindowLocators</span><span class="o">.</span><span class="n">MODAL_WINDOW_TEXT_FIELD_INPUT</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="c1"># Проверка наличия элементов</span>
|
|
||||||
<span class="n">input_count</span> <span class="o">=</span> <span class="n">input_locator</span><span class="o">.</span><span class="n">count</span><span class="p">()</span>
|
|
||||||
<span class="k">if</span> <span class="n">input_count</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span>
|
|
||||||
<span class="n">logger</span><span class="o">.</span><span class="n">warning</span><span class="p">(</span><span class="s2">"Поля ввода не найдены в модальном окне ZTP"</span><span class="p">)</span>
|
|
||||||
<span class="k">return</span> <span class="n">modal_data</span>
|
|
||||||
|
|
||||||
<span class="n">all_values</span> <span class="o">=</span> <span class="p">[]</span>
|
|
||||||
|
|
||||||
<span class="c1"># Обрабатываем каждое поле с обработкой возможных ошибок</span>
|
|
||||||
<span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">input_count</span><span class="p">):</span>
|
|
||||||
<span class="n">input_field</span> <span class="o">=</span> <span class="n">input_locator</span><span class="o">.</span><span class="n">nth</span><span class="p">(</span><span class="n">i</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="c1"># Проверяем, что элемент видим и доступен</span>
|
|
||||||
<span class="k">if</span> <span class="ow">not</span> <span class="n">input_field</span><span class="o">.</span><span class="n">is_visible</span><span class="p">():</span>
|
|
||||||
<span class="n">logger</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s2">"Поле </span><span class="si">%s</span><span class="s2"> не видимо, пропускаем"</span><span class="p">,</span> <span class="n">i</span><span class="p">)</span>
|
|
||||||
<span class="k">continue</span>
|
|
||||||
|
|
||||||
<span class="c1"># Получаем значение с обработкой возможных ошибок состояния элемента</span>
|
|
||||||
<span class="k">if</span> <span class="n">input_field</span><span class="o">.</span><span class="n">is_visible</span><span class="p">():</span>
|
|
||||||
<span class="n">value</span> <span class="o">=</span> <span class="n">input_field</span><span class="o">.</span><span class="n">input_value</span><span class="p">()</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span>
|
|
||||||
<span class="k">if</span> <span class="n">value</span><span class="p">:</span> <span class="c1"># Игнорируем пустые значения</span>
|
|
||||||
<span class="n">all_values</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">value</span><span class="p">)</span>
|
|
||||||
<span class="k">else</span><span class="p">:</span>
|
|
||||||
<span class="n">logger</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s2">"Поле </span><span class="si">%s</span><span class="s2"> стало невидимым после проверки, пропускаем"</span><span class="p">,</span> <span class="n">i</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="n">logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="s2">"Все значения из полей ZTP шаблона: </span><span class="si">%s</span><span class="s2">"</span><span class="p">,</span> <span class="n">all_values</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="c1"># Анализируем пары код-значение для ZTP формата</span>
|
|
||||||
<span class="n">i</span> <span class="o">=</span> <span class="mi">0</span>
|
|
||||||
<span class="k">while</span> <span class="n">i</span> <span class="o"><</span> <span class="nb">len</span><span class="p">(</span><span class="n">all_values</span><span class="p">)</span> <span class="o">-</span> <span class="mi">1</span><span class="p">:</span>
|
|
||||||
<span class="n">current_value</span> <span class="o">=</span> <span class="n">all_values</span><span class="p">[</span><span class="n">i</span><span class="p">]</span>
|
|
||||||
<span class="n">next_value</span> <span class="o">=</span> <span class="n">all_values</span><span class="p">[</span><span class="n">i</span> <span class="o">+</span> <span class="mi">1</span><span class="p">]</span>
|
|
||||||
|
|
||||||
<span class="c1"># Для ZTP шаблонов могут быть как числовые коды, так и строковые идентификаторы</span>
|
|
||||||
<span class="k">if</span> <span class="n">current_value</span><span class="o">.</span><span class="n">isdigit</span><span class="p">()</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_is_ztp_field_code</span><span class="p">(</span><span class="n">current_value</span><span class="p">):</span>
|
|
||||||
<span class="c1"># Текущее значение - код, следующее - значение</span>
|
|
||||||
<span class="n">modal_data</span><span class="p">[</span><span class="n">current_value</span><span class="p">]</span> <span class="o">=</span> <span class="n">next_value</span>
|
|
||||||
<span class="n">i</span> <span class="o">+=</span> <span class="mi">2</span> <span class="c1"># Перескакиваем через пару</span>
|
|
||||||
<span class="k">else</span><span class="p">:</span>
|
|
||||||
<span class="c1"># Если текущее значение не подходит как код, ищем следующую пару</span>
|
|
||||||
<span class="n">i</span> <span class="o">+=</span> <span class="mi">1</span>
|
|
||||||
|
|
||||||
<span class="c1"># Добавляем имя шаблона с ключом 'template'</span>
|
|
||||||
<span class="k">if</span> <span class="n">all_values</span><span class="p">:</span>
|
|
||||||
<span class="n">modal_data</span><span class="p">[</span><span class="s1">'template'</span><span class="p">]</span> <span class="o">=</span> <span class="n">all_values</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span>
|
|
||||||
|
|
||||||
<span class="n">logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="s2">"Структурированные данные из модального окна ZTP: </span><span class="si">%s</span><span class="s2">"</span><span class="p">,</span> <span class="n">modal_data</span><span class="p">)</span>
|
|
||||||
<span class="k">return</span> <span class="n">modal_data</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="ViewZTPTemplateModalWindow._is_ztp_field_code">
|
|
||||||
<a class="viewcode-back" href="../../components_derived.html#components_derived.modal_view_ztp_template.ViewZTPTemplateModalWindow._is_ztp_field_code">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">_is_ztp_field_code</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">value</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="nb">bool</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Проверяет, является ли значение кодом поля ZTP.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Args:</span>
|
|
||||||
<span class="sd"> value: Проверяемое значение</span>
|
|
||||||
|
|
||||||
<span class="sd"> Returns:</span>
|
|
||||||
<span class="sd"> bool: True если значение похоже на код поля ZTP</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
<span class="n">ztp_field_patterns</span> <span class="o">=</span> <span class="p">[</span>
|
|
||||||
<span class="s1">'vendorCode'</span><span class="p">,</span>
|
|
||||||
<span class="s1">'authentication'</span><span class="p">,</span>
|
|
||||||
<span class="s1">'deviceType'</span><span class="p">,</span>
|
|
||||||
<span class="s1">'authenticationOption'</span><span class="p">,</span>
|
|
||||||
<span class="s1">'manufacturer'</span>
|
|
||||||
<span class="p">]</span>
|
|
||||||
|
|
||||||
<span class="k">return</span> <span class="nb">any</span><span class="p">(</span><span class="n">pattern</span><span class="o">.</span><span class="n">lower</span><span class="p">()</span> <span class="ow">in</span> <span class="n">value</span><span class="o">.</span><span class="n">lower</span><span class="p">()</span> <span class="k">for</span> <span class="n">pattern</span> <span class="ow">in</span> <span class="n">ztp_field_patterns</span><span class="p">)</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="ViewZTPTemplateModalWindow.compare_modal_with_api_data">
|
|
||||||
<a class="viewcode-back" href="../../components_derived.html#components_derived.modal_view_ztp_template.ViewZTPTemplateModalWindow.compare_modal_with_api_data">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">compare_modal_with_api_data</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">modal_data</span><span class="p">:</span> <span class="nb">dict</span><span class="p">,</span> <span class="n">api_data</span><span class="p">:</span> <span class="nb">dict</span><span class="p">,</span>
|
|
||||||
<span class="n">title</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Сравнивает данные из модального окна ZTP с данными из API.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Args:</span>
|
|
||||||
<span class="sd"> modal_data: Данные из модального окна</span>
|
|
||||||
<span class="sd"> api_data: Данные из API ответа</span>
|
|
||||||
<span class="sd"> title: Имя шаблона для проверки</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
<span class="n">errors</span> <span class="o">=</span> <span class="p">[]</span>
|
|
||||||
|
|
||||||
<span class="c1"># Для ZTP API данные уже содержат нужные ключи</span>
|
|
||||||
<span class="n">api_data_adapted</span> <span class="o">=</span> <span class="n">api_data</span><span class="o">.</span><span class="n">copy</span><span class="p">()</span>
|
|
||||||
|
|
||||||
<span class="c1"># Сравниваем все поля</span>
|
|
||||||
<span class="k">for</span> <span class="n">code</span><span class="p">,</span> <span class="n">expected_value</span> <span class="ow">in</span> <span class="n">api_data_adapted</span><span class="o">.</span><span class="n">items</span><span class="p">():</span>
|
|
||||||
<span class="k">if</span> <span class="n">code</span> <span class="ow">in</span> <span class="n">modal_data</span><span class="p">:</span>
|
|
||||||
<span class="n">actual_value</span> <span class="o">=</span> <span class="n">modal_data</span><span class="p">[</span><span class="n">code</span><span class="p">]</span>
|
|
||||||
<span class="k">if</span> <span class="nb">str</span><span class="p">(</span><span class="n">actual_value</span><span class="p">)</span> <span class="o">!=</span> <span class="nb">str</span><span class="p">(</span><span class="n">expected_value</span><span class="p">):</span>
|
|
||||||
<span class="n">error_msg</span> <span class="o">=</span> <span class="p">(</span>
|
|
||||||
<span class="sa">f</span><span class="s2">"Расхождение для поля </span><span class="si">{</span><span class="n">code</span><span class="si">}</span><span class="s2">: "</span>
|
|
||||||
<span class="sa">f</span><span class="s2">"модальное окно='</span><span class="si">{</span><span class="n">actual_value</span><span class="si">}</span><span class="s2">', API='</span><span class="si">{</span><span class="n">expected_value</span><span class="si">}</span><span class="s2">'"</span>
|
|
||||||
<span class="p">)</span>
|
|
||||||
<span class="n">logger</span><span class="o">.</span><span class="n">error</span><span class="p">(</span><span class="n">error_msg</span><span class="p">)</span>
|
|
||||||
<span class="n">errors</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">error_msg</span><span class="p">)</span>
|
|
||||||
<span class="k">else</span><span class="p">:</span>
|
|
||||||
<span class="n">error_msg</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"Поле </span><span class="si">{</span><span class="n">code</span><span class="si">}</span><span class="s2"> не найдено в модальном окне ZTP"</span>
|
|
||||||
<span class="n">logger</span><span class="o">.</span><span class="n">error</span><span class="p">(</span><span class="n">error_msg</span><span class="p">)</span>
|
|
||||||
<span class="n">errors</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">error_msg</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="c1"># Дополнительная проверка имени шаблона</span>
|
|
||||||
<span class="n">modal_template</span> <span class="o">=</span> <span class="n">modal_data</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s1">'template'</span><span class="p">,</span> <span class="s1">''</span><span class="p">)</span>
|
|
||||||
<span class="k">if</span> <span class="n">modal_template</span> <span class="o">!=</span> <span class="n">title</span><span class="p">:</span>
|
|
||||||
<span class="n">error_msg</span> <span class="o">=</span> <span class="p">(</span>
|
|
||||||
<span class="sa">f</span><span class="s2">"Расхождение в имени шаблона ZTP: "</span>
|
|
||||||
<span class="sa">f</span><span class="s2">"модальное окно='</span><span class="si">{</span><span class="n">modal_template</span><span class="si">}</span><span class="s2">', ожидается='</span><span class="si">{</span><span class="n">title</span><span class="si">}</span><span class="s2">'"</span>
|
|
||||||
<span class="p">)</span>
|
|
||||||
<span class="n">logger</span><span class="o">.</span><span class="n">error</span><span class="p">(</span><span class="n">error_msg</span><span class="p">)</span>
|
|
||||||
<span class="n">errors</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">error_msg</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="c1"># Если есть расхождения, выбрасываем ошибку</span>
|
|
||||||
<span class="k">if</span> <span class="n">errors</span><span class="p">:</span>
|
|
||||||
<span class="n">error_details</span> <span class="o">=</span> <span class="s2">"</span><span class="se">\n</span><span class="s2">"</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">errors</span><span class="p">)</span>
|
|
||||||
<span class="k">assert</span> <span class="kc">False</span><span class="p">,</span> <span class="p">(</span>
|
|
||||||
<span class="sa">f</span><span class="s2">"Обнаружены расхождения для ZTP шаблона '</span><span class="si">{</span><span class="n">title</span><span class="si">}</span><span class="s2">':</span><span class="se">\n</span><span class="si">{</span><span class="n">error_details</span><span class="si">}</span><span class="s2">"</span>
|
|
||||||
<span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="n">logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="s2">"Данные модального окна ZTP соответствуют API для шаблона '</span><span class="si">%s</span><span class="s2">'"</span><span class="p">,</span> <span class="n">title</span><span class="p">)</span></div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</pre></div>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<footer>
|
|
||||||
|
|
||||||
<hr/>
|
|
||||||
|
|
||||||
<div role="contentinfo">
|
|
||||||
<p>© Авторские права 2025, NPO KIS. </p>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
Собрано при помощи <a href="https://www.sphinx-doc.org/">Sphinx</a> с использованием
|
|
||||||
<a href="https://github.com/readthedocs/sphinx_rtd_theme">темы,</a>
|
|
||||||
предоставленной <a href="https://readthedocs.org">Read the Docs</a>.
|
|
||||||
|
|
||||||
|
|
||||||
</footer>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</section>
|
|
||||||
</div>
|
|
||||||
<script>
|
|
||||||
jQuery(function () {
|
|
||||||
SphinxRtdTheme.Navigation.enable(true);
|
|
||||||
});
|
|
||||||
</script>
|
|
||||||
|
|
||||||
</body>
|
|
||||||
</html>
|
|
||||||
|
|
@ -1,350 +0,0 @@
|
||||||
|
|
||||||
|
|
||||||
<!DOCTYPE html>
|
|
||||||
<html class="writer-html5" lang="ru" data-content_root="../../">
|
|
||||||
<head>
|
|
||||||
<meta charset="utf-8" />
|
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
||||||
<title>components_derived.selection_bar_component — документация e-nms-qa-automation 0.1.0</title>
|
|
||||||
<link rel="stylesheet" type="text/css" href="../../_static/pygments.css?v=b86133f3" />
|
|
||||||
<link rel="stylesheet" type="text/css" href="../../_static/css/theme.css?v=e59714d7" />
|
|
||||||
|
|
||||||
|
|
||||||
<script src="../../_static/jquery.js?v=5d32c60e"></script>
|
|
||||||
<script src="../../_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script>
|
|
||||||
<script src="../../_static/documentation_options.js?v=6ff560e8"></script>
|
|
||||||
<script src="../../_static/doctools.js?v=9bcbadda"></script>
|
|
||||||
<script src="../../_static/sphinx_highlight.js?v=dc90522c"></script>
|
|
||||||
<script src="../../_static/translations.js?v=cd1d70c9"></script>
|
|
||||||
<script src="../../_static/js/theme.js"></script>
|
|
||||||
<link rel="index" title="Алфавитный указатель" href="../../genindex.html" />
|
|
||||||
<link rel="search" title="Поиск" href="../../search.html" />
|
|
||||||
</head>
|
|
||||||
|
|
||||||
<body class="wy-body-for-nav">
|
|
||||||
<div class="wy-grid-for-nav">
|
|
||||||
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
|
|
||||||
<div class="wy-side-scroll">
|
|
||||||
<div class="wy-side-nav-search" >
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<a href="../../index.html" class="icon icon-home">
|
|
||||||
e-nms-qa-automation
|
|
||||||
</a>
|
|
||||||
<div role="search">
|
|
||||||
<form id="rtd-search-form" class="wy-form" action="../../search.html" method="get">
|
|
||||||
<input type="text" name="q" placeholder="Поиск в документации" aria-label="Поиск в документации" />
|
|
||||||
<input type="hidden" name="check_keywords" value="yes" />
|
|
||||||
<input type="hidden" name="area" value="default" />
|
|
||||||
</form>
|
|
||||||
</div>
|
|
||||||
</div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Меню навигации">
|
|
||||||
<!-- Local TOC -->
|
|
||||||
<div class="local-toc"></div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</nav>
|
|
||||||
|
|
||||||
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Меню навигации для мобильных устройств" >
|
|
||||||
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
|
|
||||||
<a href="../../index.html">e-nms-qa-automation</a>
|
|
||||||
</nav>
|
|
||||||
|
|
||||||
<div class="wy-nav-content">
|
|
||||||
<div class="rst-content">
|
|
||||||
<div role="navigation" aria-label="Навигация по страницам">
|
|
||||||
<ul class="wy-breadcrumbs">
|
|
||||||
<li><a href="../../index.html" class="icon icon-home" aria-label="Home"></a></li>
|
|
||||||
<li class="breadcrumb-item"><a href="../index.html">Код модуля</a></li>
|
|
||||||
<li class="breadcrumb-item active">components_derived.selection_bar_component</li>
|
|
||||||
<li class="wy-breadcrumbs-aside">
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
<hr/>
|
|
||||||
</div>
|
|
||||||
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
|
|
||||||
<div itemprop="articleBody">
|
|
||||||
|
|
||||||
<h1>Исходный код components_derived.selection_bar_component</h1><div class="highlight"><pre>
|
|
||||||
<span></span><span class="sd">"""Модуль компонента панели выбора значения.</span>
|
|
||||||
|
|
||||||
<span class="sd">Содержит класс для работы с компонентом панели выбора значения через Playwright.</span>
|
|
||||||
<span class="sd">"""</span>
|
|
||||||
|
|
||||||
<span class="kn">from</span><span class="w"> </span><span class="nn">playwright.sync_api</span><span class="w"> </span><span class="kn">import</span> <span class="n">Page</span><span class="p">,</span> <span class="n">Locator</span><span class="p">,</span> <span class="n">expect</span>
|
|
||||||
<span class="kn">from</span><span class="w"> </span><span class="nn">tools.logger</span><span class="w"> </span><span class="kn">import</span> <span class="n">get_logger</span>
|
|
||||||
<span class="kn">from</span><span class="w"> </span><span class="nn">locators.selection_bar_locators</span><span class="w"> </span><span class="kn">import</span> <span class="n">SelectionBarLocators</span>
|
|
||||||
<span class="kn">from</span><span class="w"> </span><span class="nn">locators.combobox_locators</span><span class="w"> </span><span class="kn">import</span> <span class="n">ComboboxLocators</span>
|
|
||||||
<span class="kn">from</span><span class="w"> </span><span class="nn">components.dropdown_list_component</span><span class="w"> </span><span class="kn">import</span> <span class="n">DropdownList</span>
|
|
||||||
<span class="kn">from</span><span class="w"> </span><span class="nn">components.base_component</span><span class="w"> </span><span class="kn">import</span> <span class="n">BaseComponent</span>
|
|
||||||
|
|
||||||
<span class="n">logger</span> <span class="o">=</span> <span class="n">get_logger</span><span class="p">(</span><span class="s2">"SELECTION_BAR"</span><span class="p">)</span>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="SelectionBarComponent">
|
|
||||||
<a class="viewcode-back" href="../../components_derived.html#components_derived.selection_bar_component.SelectionBarComponent">[документация]</a>
|
|
||||||
<span class="k">class</span><span class="w"> </span><span class="nc">SelectionBarComponent</span><span class="p">(</span><span class="n">BaseComponent</span><span class="p">):</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Компонент панели выбора значения.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Предоставляет методы для взаимодействия с элементами компонента панели выбора значения.</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="SelectionBarComponent.__init__">
|
|
||||||
<a class="viewcode-back" href="../../components_derived.html#components_derived.selection_bar_component.SelectionBarComponent.__init__">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">page</span><span class="p">:</span> <span class="n">Page</span><span class="p">,</span> <span class="n">locator_or_text</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="n">Locator</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Инициализирует компонент панели выбора значения.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Args:</span>
|
|
||||||
<span class="sd"> page: Экземпляр страницы Playwright.</span>
|
|
||||||
<span class="sd"> locator_or_text: Локатор панели выбора значения (строка или объект Locator)</span>
|
|
||||||
<span class="sd"> или текст для поиска</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
<span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="fm">__init__</span><span class="p">(</span><span class="n">page</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="c1"># Определяем локатор в зависимости от типа параметра</span>
|
|
||||||
<span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">locator_or_text</span><span class="p">,</span> <span class="n">Locator</span><span class="p">):</span>
|
|
||||||
<span class="c1"># Если передан готовый Locator</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">selection_bar_locator</span> <span class="o">=</span> <span class="n">locator_or_text</span>
|
|
||||||
<span class="k">elif</span> <span class="n">locator_or_text</span><span class="o">.</span><span class="n">startswith</span><span class="p">((</span><span class="s1">'//'</span><span class="p">,</span> <span class="s1">'.'</span><span class="p">,</span> <span class="s1">'#'</span><span class="p">,</span> <span class="s1">'xpath='</span><span class="p">,</span> <span class="s1">'css='</span><span class="p">)):</span>
|
|
||||||
<span class="c1"># Если передан строковый локатор</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">selection_bar_locator</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_locator</span><span class="p">(</span><span class="n">locator_or_text</span><span class="p">)</span>
|
|
||||||
<span class="k">else</span><span class="p">:</span>
|
|
||||||
<span class="c1"># Если передан текст - ищем по тексту label</span>
|
|
||||||
<span class="n">xpath</span> <span class="o">=</span> <span class="n">SelectionBarLocators</span><span class="o">.</span><span class="n">COMBOBOX_BY_LABEL_XPATH</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">locator_or_text</span><span class="p">)</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">selection_bar_locator</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">page</span><span class="o">.</span><span class="n">locator</span><span class="p">(</span><span class="n">xpath</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="c1"># При нажатии на панель появляется выпадающий список с параметрами фильтрации для выбора</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">selected_values_list</span> <span class="o">=</span> <span class="n">DropdownList</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">page</span><span class="p">)</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<span class="c1"># Действия:</span>
|
|
||||||
<div class="viewcode-block" id="SelectionBarComponent.clear_selections">
|
|
||||||
<a class="viewcode-back" href="../../components_derived.html#components_derived.selection_bar_component.SelectionBarComponent.clear_selections">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">clear_selections</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Удаление ранее выбранных значений"""</span>
|
|
||||||
<span class="n">selected_values</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_selected_values</span><span class="p">()</span>
|
|
||||||
<span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">selected_values</span><span class="p">)</span> <span class="o">></span> <span class="mi">0</span><span class="p">:</span>
|
|
||||||
<span class="n">clear_button_locator</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">selection_bar_locator</span><span class="o">.</span><span class="n">locator</span><span class="p">(</span>
|
|
||||||
<span class="n">SelectionBarLocators</span><span class="o">.</span><span class="n">CLEAR_SELECTION_BUTTON</span>
|
|
||||||
<span class="p">)</span>
|
|
||||||
<span class="n">clear_button_locator</span><span class="o">.</span><span class="n">click</span><span class="p">()</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="SelectionBarComponent.get_available_options">
|
|
||||||
<a class="viewcode-back" href="../../components_derived.html#components_derived.selection_bar_component.SelectionBarComponent.get_available_options">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">get_available_options</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">list</span><span class="p">[</span><span class="nb">str</span><span class="p">]:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Возвращает список всех доступных опций из выпадающего списка.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Returns:</span>
|
|
||||||
<span class="sd"> list[str]: Список доступных опций</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
<span class="n">logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="s2">"Getting available options from dropdown list..."</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="c1"># Открываем выпадающий список</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">open_values_list</span><span class="p">()</span>
|
|
||||||
|
|
||||||
<span class="c1"># Ждем появления списка</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">wait_for_timeout</span><span class="p">(</span><span class="mi">1000</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="c1"># Получаем все элементы списка</span>
|
|
||||||
<span class="n">options</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">selected_values_list</span><span class="o">.</span><span class="n">get_item_names</span><span class="p">(</span>
|
|
||||||
<span class="n">SelectionBarLocators</span><span class="o">.</span><span class="n">LIST_ITEMS</span>
|
|
||||||
<span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="c1"># Закрываем список (кликаем вне его)</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">page</span><span class="o">.</span><span class="n">mouse</span><span class="o">.</span><span class="n">click</span><span class="p">(</span><span class="mi">10</span><span class="p">,</span> <span class="mi">10</span><span class="p">)</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">wait_for_timeout</span><span class="p">(</span><span class="mi">500</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="n">logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Found available options: </span><span class="si">{</span><span class="nb">len</span><span class="p">(</span><span class="n">options</span><span class="p">)</span><span class="si">}</span><span class="s2"> - </span><span class="si">{</span><span class="n">options</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span>
|
|
||||||
<span class="k">return</span> <span class="n">options</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="SelectionBarComponent.get_selection_bar_title">
|
|
||||||
<a class="viewcode-back" href="../../components_derived.html#components_derived.selection_bar_component.SelectionBarComponent.get_selection_bar_title">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">get_selection_bar_title</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Возвращает название панели выбора значения"""</span>
|
|
||||||
<span class="n">title_locator</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">selection_bar_locator</span><span class="o">.</span><span class="n">locator</span><span class="p">(</span><span class="n">SelectionBarLocators</span><span class="o">.</span><span class="n">TITLE_LOCATOR</span><span class="p">)</span>
|
|
||||||
<span class="k">return</span> <span class="n">title_locator</span><span class="o">.</span><span class="n">text_content</span><span class="p">()</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="SelectionBarComponent.get_selected_values">
|
|
||||||
<a class="viewcode-back" href="../../components_derived.html#components_derived.selection_bar_component.SelectionBarComponent.get_selected_values">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">get_selected_values</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">list</span><span class="p">[</span><span class="nb">str</span><span class="p">]:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Возвращает список выбранных значений"""</span>
|
|
||||||
<span class="n">selected_values_locator</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">selection_bar_locator</span><span class="o">.</span><span class="n">locator</span><span class="p">(</span>
|
|
||||||
<span class="n">SelectionBarLocators</span><span class="o">.</span><span class="n">PARAMETERS_SELECTED</span>
|
|
||||||
<span class="p">)</span>
|
|
||||||
<span class="n">selected_values</span> <span class="o">=</span> <span class="n">selected_values_locator</span><span class="o">.</span><span class="n">all_inner_texts</span><span class="p">()</span>
|
|
||||||
<span class="k">return</span> <span class="n">selected_values</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">splitlines</span><span class="p">()</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="SelectionBarComponent.clear_combobox_field">
|
|
||||||
<a class="viewcode-back" href="../../components_derived.html#components_derived.selection_bar_component.SelectionBarComponent.clear_combobox_field">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">clear_combobox_field</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">field_name</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">field_locator</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Очищает значение в combobox поле с помощью кнопки закрытия (крестика).</span>
|
|
||||||
|
|
||||||
<span class="sd"> Args:</span>
|
|
||||||
<span class="sd"> field_name: Название поля для очистки</span>
|
|
||||||
<span class="sd"> field_locator: Локатор поля combobox</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
<span class="n">logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Clearing combobox field '</span><span class="si">{</span><span class="n">field_name</span><span class="si">}</span><span class="s2">' using close button..."</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="c1"># Находим поле по локатору</span>
|
|
||||||
<span class="n">field_container</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">page</span><span class="o">.</span><span class="n">locator</span><span class="p">(</span><span class="n">field_locator</span><span class="p">)</span><span class="o">.</span><span class="n">first</span>
|
|
||||||
|
|
||||||
<span class="c1"># Проверяем что поле видимо</span>
|
|
||||||
<span class="k">if</span> <span class="ow">not</span> <span class="n">field_container</span><span class="o">.</span><span class="n">is_visible</span><span class="p">():</span>
|
|
||||||
<span class="n">logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Field '</span><span class="si">{</span><span class="n">field_name</span><span class="si">}</span><span class="s2">' is not visible, skipping clearing"</span><span class="p">)</span>
|
|
||||||
<span class="k">return</span>
|
|
||||||
|
|
||||||
<span class="c1"># Прокручиваем до поля</span>
|
|
||||||
<span class="n">field_container</span><span class="o">.</span><span class="n">scroll_into_view_if_needed</span><span class="p">()</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">wait_for_timeout</span><span class="p">(</span><span class="mi">500</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="c1"># Ищем кнопку закрытия (крестик) внутри контейнера поля</span>
|
|
||||||
<span class="n">close_button</span> <span class="o">=</span> <span class="n">field_container</span><span class="o">.</span><span class="n">locator</span><span class="p">(</span>
|
|
||||||
<span class="n">ComboboxLocators</span><span class="o">.</span><span class="n">COMBOBOX_CLOSE_BUTTON</span>
|
|
||||||
<span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="c1"># Проверяем наличие и видимость кнопки закрытия</span>
|
|
||||||
<span class="k">if</span> <span class="n">close_button</span><span class="o">.</span><span class="n">count</span><span class="p">()</span> <span class="o">></span> <span class="mi">0</span> <span class="ow">and</span> <span class="n">close_button</span><span class="o">.</span><span class="n">is_visible</span><span class="p">():</span>
|
|
||||||
<span class="c1"># Если кнопка закрытия видима - кликаем на нее</span>
|
|
||||||
<span class="n">close_button</span><span class="o">.</span><span class="n">click</span><span class="p">()</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">wait_for_timeout</span><span class="p">(</span><span class="mi">500</span><span class="p">)</span>
|
|
||||||
<span class="n">logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Combobox field '</span><span class="si">{</span><span class="n">field_name</span><span class="si">}</span><span class="s2">' cleared using close button"</span><span class="p">)</span>
|
|
||||||
<span class="k">else</span><span class="p">:</span>
|
|
||||||
<span class="c1"># Если кнопки закрытия нет, просто логируем этот факт</span>
|
|
||||||
<span class="n">msg</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"Close button not found for field '</span><span class="si">{</span><span class="n">field_name</span><span class="si">}</span><span class="s2">', clearing not performed"</span>
|
|
||||||
<span class="n">logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="n">msg</span><span class="p">)</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="SelectionBarComponent.open_values_list">
|
|
||||||
<a class="viewcode-back" href="../../components_derived.html#components_derived.selection_bar_component.SelectionBarComponent.open_values_list">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">open_values_list</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Открытие выпадающего списка путем нажатия на панель выбора значения"""</span>
|
|
||||||
<span class="n">expect</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">selection_bar_locator</span><span class="p">)</span><span class="o">.</span><span class="n">to_be_visible</span><span class="p">()</span>
|
|
||||||
|
|
||||||
<span class="c1"># Проверяем, не открыт ли уже список</span>
|
|
||||||
<span class="n">parent_class</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">selection_bar_locator</span><span class="o">.</span><span class="n">get_attribute</span><span class="p">(</span><span class="s2">"class"</span><span class="p">)</span>
|
|
||||||
<span class="k">if</span> <span class="n">parent_class</span> <span class="ow">and</span> <span class="n">SelectionBarLocators</span><span class="o">.</span><span class="n">MENU_ACTIVE_CLASS</span> <span class="ow">in</span> <span class="n">parent_class</span><span class="p">:</span>
|
|
||||||
<span class="n">logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="s2">"Values list is already open"</span><span class="p">)</span>
|
|
||||||
<span class="k">return</span>
|
|
||||||
|
|
||||||
<span class="c1"># Используем force click для обхода перекрывающих элементов</span>
|
|
||||||
<span class="n">logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="s2">"Using force click to open the list"</span><span class="p">)</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">selection_bar_locator</span><span class="o">.</span><span class="n">click</span><span class="p">(</span><span class="n">force</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="c1"># Ждем появления выпадающего списка</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">wait_for_timeout</span><span class="p">(</span><span class="mi">1500</span><span class="p">)</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="SelectionBarComponent.select_value">
|
|
||||||
<a class="viewcode-back" href="../../components_derived.html#components_derived.selection_bar_component.SelectionBarComponent.select_value">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">select_value</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Выбор значения из списка"""</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">selected_values_list</span><span class="o">.</span><span class="n">check_item_with_text</span><span class="p">(</span><span class="n">name</span><span class="p">)</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">selected_values_list</span><span class="o">.</span><span class="n">click_item_with_text</span><span class="p">(</span><span class="n">name</span><span class="p">)</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="SelectionBarComponent.wait_for_timeout">
|
|
||||||
<a class="viewcode-back" href="../../components_derived.html#components_derived.selection_bar_component.SelectionBarComponent.wait_for_timeout">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">wait_for_timeout</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">timeout</span><span class="p">:</span> <span class="nb">int</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Ожидает указанное количество миллисекунд.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Args:</span>
|
|
||||||
<span class="sd"> timeout: Время ожидания в миллисекундах</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">page</span><span class="o">.</span><span class="n">wait_for_timeout</span><span class="p">(</span><span class="n">timeout</span><span class="p">)</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<span class="c1"># Проверки:</span>
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="SelectionBarComponent.check_field_highlighted_error">
|
|
||||||
<a class="viewcode-back" href="../../components_derived.html#components_derived.selection_bar_component.SelectionBarComponent.check_field_highlighted_error">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">check_field_highlighted_error</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">field_name</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">field_locator</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Проверяет, что поле подсвечено цветом ошибки (валидация не пройдена).</span>
|
|
||||||
|
|
||||||
<span class="sd"> Args:</span>
|
|
||||||
<span class="sd"> field_name: Название поля для проверки</span>
|
|
||||||
<span class="sd"> field_locator: Локатор поля для проверки</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
<span class="n">logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Checking field '</span><span class="si">{</span><span class="n">field_name</span><span class="si">}</span><span class="s2">' for error highlighting..."</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="n">field_element</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">page</span><span class="o">.</span><span class="n">locator</span><span class="p">(</span><span class="n">field_locator</span><span class="p">)</span><span class="o">.</span><span class="n">first</span>
|
|
||||||
|
|
||||||
<span class="c1"># Проверяем что поле видимо</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">check_visibility</span><span class="p">(</span><span class="n">field_element</span><span class="p">,</span> <span class="sa">f</span><span class="s2">"Field '</span><span class="si">{</span><span class="n">field_name</span><span class="si">}</span><span class="s2">' not found"</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="c1"># Ищем родительский контейнер</span>
|
|
||||||
<span class="n">parent_container</span> <span class="o">=</span> <span class="n">field_element</span><span class="o">.</span><span class="n">locator</span><span class="p">(</span><span class="n">SelectionBarLocators</span><span class="o">.</span><span class="n">INPUT_PARENT_CONTAINER</span><span class="p">)</span><span class="o">.</span><span class="n">first</span>
|
|
||||||
|
|
||||||
<span class="c1"># Проверка классов ошибки с использованием локатора из SelectionBarLocators</span>
|
|
||||||
<span class="k">if</span> <span class="n">parent_container</span><span class="o">.</span><span class="n">count</span><span class="p">()</span> <span class="o">></span> <span class="mi">0</span><span class="p">:</span>
|
|
||||||
<span class="n">has_error</span> <span class="o">=</span> <span class="n">parent_container</span><span class="o">.</span><span class="n">locator</span><span class="p">(</span><span class="n">SelectionBarLocators</span><span class="o">.</span><span class="n">ERROR_CSS_SELECTORS</span><span class="p">)</span><span class="o">.</span><span class="n">count</span><span class="p">()</span> <span class="o">></span> <span class="mi">0</span>
|
|
||||||
|
|
||||||
<span class="k">if</span> <span class="ow">not</span> <span class="n">has_error</span><span class="p">:</span>
|
|
||||||
<span class="k">raise</span> <span class="ne">AssertionError</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Field '</span><span class="si">{</span><span class="n">field_name</span><span class="si">}</span><span class="s2">' is not highlighted with error color"</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="n">logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Field '</span><span class="si">{</span><span class="n">field_name</span><span class="si">}</span><span class="s2">' is correctly highlighted with error color"</span><span class="p">)</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="SelectionBarComponent.check_field_not_highlighted_error">
|
|
||||||
<a class="viewcode-back" href="../../components_derived.html#components_derived.selection_bar_component.SelectionBarComponent.check_field_not_highlighted_error">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">check_field_not_highlighted_error</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">field_name</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">field_locator</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Проверяет, что поле НЕ подсвечено цветом ошибки (валидация успешна).</span>
|
|
||||||
|
|
||||||
<span class="sd"> Args:</span>
|
|
||||||
<span class="sd"> field_name: Название поля для проверки</span>
|
|
||||||
<span class="sd"> field_locator: Локатор поля для проверки</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
<span class="n">logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Checking field '</span><span class="si">{</span><span class="n">field_name</span><span class="si">}</span><span class="s2">' for absence of error highlighting..."</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="n">field_element</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">page</span><span class="o">.</span><span class="n">locator</span><span class="p">(</span><span class="n">field_locator</span><span class="p">)</span><span class="o">.</span><span class="n">first</span>
|
|
||||||
|
|
||||||
<span class="c1"># Проверяем что поле видимо</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">check_visibility</span><span class="p">(</span><span class="n">field_element</span><span class="p">,</span> <span class="sa">f</span><span class="s2">"Field '</span><span class="si">{</span><span class="n">field_name</span><span class="si">}</span><span class="s2">' not found"</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="c1"># Ищем родительский контейнер</span>
|
|
||||||
<span class="n">parent_container</span> <span class="o">=</span> <span class="n">field_element</span><span class="o">.</span><span class="n">locator</span><span class="p">(</span><span class="n">SelectionBarLocators</span><span class="o">.</span><span class="n">INPUT_PARENT_CONTAINER</span><span class="p">)</span><span class="o">.</span><span class="n">first</span>
|
|
||||||
|
|
||||||
<span class="c1"># Проверяем отсутствие классов ошибки с использованием локатора из SelectionBarLocators</span>
|
|
||||||
<span class="k">if</span> <span class="n">parent_container</span><span class="o">.</span><span class="n">count</span><span class="p">()</span> <span class="o">></span> <span class="mi">0</span><span class="p">:</span>
|
|
||||||
<span class="n">has_error</span> <span class="o">=</span> <span class="n">parent_container</span><span class="o">.</span><span class="n">locator</span><span class="p">(</span><span class="n">SelectionBarLocators</span><span class="o">.</span><span class="n">ERROR_CSS_SELECTORS</span><span class="p">)</span><span class="o">.</span><span class="n">count</span><span class="p">()</span> <span class="o">></span> <span class="mi">0</span>
|
|
||||||
|
|
||||||
<span class="k">if</span> <span class="n">has_error</span><span class="p">:</span>
|
|
||||||
<span class="k">raise</span> <span class="ne">AssertionError</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Field '</span><span class="si">{</span><span class="n">field_name</span><span class="si">}</span><span class="s2">' is highlighted with error"</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="n">logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Field '</span><span class="si">{</span><span class="n">field_name</span><span class="si">}</span><span class="s2">' correctly has no error highlighting"</span><span class="p">)</span></div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</pre></div>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<footer>
|
|
||||||
|
|
||||||
<hr/>
|
|
||||||
|
|
||||||
<div role="contentinfo">
|
|
||||||
<p>© Авторские права 2025, NPO KIS. </p>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
Собрано при помощи <a href="https://www.sphinx-doc.org/">Sphinx</a> с использованием
|
|
||||||
<a href="https://github.com/readthedocs/sphinx_rtd_theme">темы,</a>
|
|
||||||
предоставленной <a href="https://readthedocs.org">Read the Docs</a>.
|
|
||||||
|
|
||||||
|
|
||||||
</footer>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</section>
|
|
||||||
</div>
|
|
||||||
<script>
|
|
||||||
jQuery(function () {
|
|
||||||
SphinxRtdTheme.Navigation.enable(true);
|
|
||||||
});
|
|
||||||
</script>
|
|
||||||
|
|
||||||
</body>
|
|
||||||
</html>
|
|
||||||
|
|
@ -1,257 +0,0 @@
|
||||||
|
|
||||||
|
|
||||||
<!DOCTYPE html>
|
|
||||||
<html class="writer-html5" lang="ru" data-content_root="../../">
|
|
||||||
<head>
|
|
||||||
<meta charset="utf-8" />
|
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
||||||
<title>components_derived.sidebar_filter_component — документация e-nms-qa-automation 0.1.0</title>
|
|
||||||
<link rel="stylesheet" type="text/css" href="../../_static/pygments.css?v=b86133f3" />
|
|
||||||
<link rel="stylesheet" type="text/css" href="../../_static/css/theme.css?v=e59714d7" />
|
|
||||||
|
|
||||||
|
|
||||||
<script src="../../_static/jquery.js?v=5d32c60e"></script>
|
|
||||||
<script src="../../_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script>
|
|
||||||
<script src="../../_static/documentation_options.js?v=6ff560e8"></script>
|
|
||||||
<script src="../../_static/doctools.js?v=9bcbadda"></script>
|
|
||||||
<script src="../../_static/sphinx_highlight.js?v=dc90522c"></script>
|
|
||||||
<script src="../../_static/translations.js?v=cd1d70c9"></script>
|
|
||||||
<script src="../../_static/js/theme.js"></script>
|
|
||||||
<link rel="index" title="Алфавитный указатель" href="../../genindex.html" />
|
|
||||||
<link rel="search" title="Поиск" href="../../search.html" />
|
|
||||||
</head>
|
|
||||||
|
|
||||||
<body class="wy-body-for-nav">
|
|
||||||
<div class="wy-grid-for-nav">
|
|
||||||
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
|
|
||||||
<div class="wy-side-scroll">
|
|
||||||
<div class="wy-side-nav-search" >
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<a href="../../index.html" class="icon icon-home">
|
|
||||||
e-nms-qa-automation
|
|
||||||
</a>
|
|
||||||
<div role="search">
|
|
||||||
<form id="rtd-search-form" class="wy-form" action="../../search.html" method="get">
|
|
||||||
<input type="text" name="q" placeholder="Поиск в документации" aria-label="Поиск в документации" />
|
|
||||||
<input type="hidden" name="check_keywords" value="yes" />
|
|
||||||
<input type="hidden" name="area" value="default" />
|
|
||||||
</form>
|
|
||||||
</div>
|
|
||||||
</div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Меню навигации">
|
|
||||||
<!-- Local TOC -->
|
|
||||||
<div class="local-toc"></div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</nav>
|
|
||||||
|
|
||||||
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Меню навигации для мобильных устройств" >
|
|
||||||
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
|
|
||||||
<a href="../../index.html">e-nms-qa-automation</a>
|
|
||||||
</nav>
|
|
||||||
|
|
||||||
<div class="wy-nav-content">
|
|
||||||
<div class="rst-content">
|
|
||||||
<div role="navigation" aria-label="Навигация по страницам">
|
|
||||||
<ul class="wy-breadcrumbs">
|
|
||||||
<li><a href="../../index.html" class="icon icon-home" aria-label="Home"></a></li>
|
|
||||||
<li class="breadcrumb-item"><a href="../index.html">Код модуля</a></li>
|
|
||||||
<li class="breadcrumb-item active">components_derived.sidebar_filter_component</li>
|
|
||||||
<li class="wy-breadcrumbs-aside">
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
<hr/>
|
|
||||||
</div>
|
|
||||||
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
|
|
||||||
<div itemprop="articleBody">
|
|
||||||
|
|
||||||
<h1>Исходный код components_derived.sidebar_filter_component</h1><div class="highlight"><pre>
|
|
||||||
<span></span><span class="sd">"""Модуль компонента боковой панели формы ввода полей фильтрации отображения данных в панели событий. Содержит класс</span>
|
|
||||||
<span class="sd">для работы с формами ввода, их элементами и проверками."""</span>
|
|
||||||
|
|
||||||
<span class="kn">from</span><span class="w"> </span><span class="nn">playwright.sync_api</span><span class="w"> </span><span class="kn">import</span> <span class="n">Page</span><span class="p">,</span> <span class="n">Locator</span>
|
|
||||||
<span class="kn">from</span><span class="w"> </span><span class="nn">tools.logger</span><span class="w"> </span><span class="kn">import</span> <span class="n">get_logger</span>
|
|
||||||
<span class="kn">from</span><span class="w"> </span><span class="nn">elements.button_element</span><span class="w"> </span><span class="kn">import</span> <span class="n">Button</span>
|
|
||||||
<span class="kn">from</span><span class="w"> </span><span class="nn">components.toolbar_component</span><span class="w"> </span><span class="kn">import</span> <span class="n">ToolbarComponent</span>
|
|
||||||
<span class="kn">from</span><span class="w"> </span><span class="nn">components.base_component</span><span class="w"> </span><span class="kn">import</span> <span class="n">BaseComponent</span>
|
|
||||||
<span class="kn">from</span><span class="w"> </span><span class="nn">components_derived.selection_bar_component</span><span class="w"> </span><span class="kn">import</span> <span class="n">SelectionBarComponent</span>
|
|
||||||
<span class="kn">from</span><span class="w"> </span><span class="nn">components_derived.date_input_component</span><span class="w"> </span><span class="kn">import</span> <span class="n">DateInput</span>
|
|
||||||
|
|
||||||
<span class="n">logger</span> <span class="o">=</span> <span class="n">get_logger</span><span class="p">(</span><span class="s2">"SIDEBAR_FILTER"</span><span class="p">)</span>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="SidebarFilterComponent">
|
|
||||||
<a class="viewcode-back" href="../../components_derived.html#components_derived.sidebar_filter_component.SidebarFilterComponent">[документация]</a>
|
|
||||||
<span class="k">class</span><span class="w"> </span><span class="nc">SidebarFilterComponent</span><span class="p">(</span><span class="n">BaseComponent</span><span class="p">):</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Компонент боковой панели формы ввода полей фильтрации отображения данных в панели событий. Предоставляет методы</span>
|
|
||||||
<span class="sd"> для взаимодействия с формой, ее содержимым и проверок."""</span>
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="SidebarFilterComponent.__init__">
|
|
||||||
<a class="viewcode-back" href="../../components_derived.html#components_derived.sidebar_filter_component.SidebarFilterComponent.__init__">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">page</span><span class="p">:</span> <span class="n">Page</span><span class="p">,</span> <span class="n">locator</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="n">Locator</span><span class="p">):</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Инициализирует компонент боковой панели формы ввода параметров фильтрации.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Args:</span>
|
|
||||||
<span class="sd"> page: Экземпляр страницы Playwright</span>
|
|
||||||
<span class="sd"> locator: Локатор контейнера (строка или объект Locator) для которого вызывается панель</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
<span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="fm">__init__</span><span class="p">(</span><span class="n">page</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">sidebar_locator</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_locator</span><span class="p">(</span><span class="n">locator</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">toolbar</span> <span class="o">=</span> <span class="n">ToolbarComponent</span><span class="p">(</span><span class="n">page</span><span class="p">,</span> <span class="s2">"Настройки и параметры"</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="c1"># Поля ввода даты начала и даты окончания события</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">start_time_filter</span> <span class="o">=</span> <span class="n">DateInput</span><span class="p">(</span><span class="n">page</span><span class="p">,</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">sidebar_locator</span><span class="o">.</span><span class="n">locator</span><span class="p">(</span>
|
|
||||||
<span class="s2">"//div[contains(@class, 'scrollarea__body')]/div"</span><span class="p">)</span><span class="o">.</span><span class="n">nth</span><span class="p">(</span><span class="mi">0</span><span class="p">))</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">finish_time_filter</span> <span class="o">=</span> <span class="n">DateInput</span><span class="p">(</span><span class="n">page</span><span class="p">,</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">sidebar_locator</span><span class="o">.</span><span class="n">locator</span><span class="p">(</span>
|
|
||||||
<span class="s2">"//div[contains(@class, 'scrollarea__body')]/div"</span><span class="p">)</span><span class="o">.</span><span class="n">nth</span><span class="p">(</span><span class="mi">1</span><span class="p">))</span>
|
|
||||||
|
|
||||||
<span class="c1"># Поля задания параметров фильтрации (произвольное количество)</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">filtering_parameters</span> <span class="o">=</span> <span class="p">{}</span>
|
|
||||||
|
|
||||||
<span class="c1"># Кнопки задания/сброса параметров фильтрации</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">apply_button</span> <span class="o">=</span> <span class="n">Button</span><span class="p">(</span><span class="n">page</span><span class="p">,</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">sidebar_locator</span><span class="o">.</span><span class="n">get_by_role</span><span class="p">(</span><span class="s2">"button"</span><span class="p">)</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span><span class="n">has_text</span><span class="o">=</span><span class="s1">'Применить Фильтры'</span><span class="p">),</span>
|
|
||||||
<span class="s2">"apply_button"</span><span class="p">)</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">reset_button</span> <span class="o">=</span> <span class="n">Button</span><span class="p">(</span><span class="n">page</span><span class="p">,</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">sidebar_locator</span><span class="o">.</span><span class="n">get_by_role</span><span class="p">(</span><span class="s2">"button"</span><span class="p">)</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span><span class="n">has_text</span><span class="o">=</span><span class="s1">'Сбросить Фильтры'</span><span class="p">),</span>
|
|
||||||
<span class="s2">"reset_button"</span><span class="p">)</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<span class="c1"># Действия:</span>
|
|
||||||
<div class="viewcode-block" id="SidebarFilterComponent.add_filtering_parameter">
|
|
||||||
<a class="viewcode-back" href="../../components_derived.html#components_derived.sidebar_filter_component.SidebarFilterComponent.add_filtering_parameter">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">add_filtering_parameter</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">title</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Добавляет поле задания параметров фильтрации по заданному имени."""</span>
|
|
||||||
|
|
||||||
<span class="n">loc</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sidebar_locator</span><span class="o">.</span><span class="n">locator</span><span class="p">(</span><span class="s2">"//div[contains(@class, 'scrollarea__body')]"</span><span class="p">)</span><span class="o">.</span>\
|
|
||||||
<span class="n">get_by_role</span><span class="p">(</span><span class="s2">"combobox"</span><span class="p">)</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span><span class="n">has_text</span><span class="o">=</span><span class="n">title</span><span class="p">)</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">filtering_parameters</span><span class="p">[</span><span class="n">name</span><span class="p">]</span> <span class="o">=</span> <span class="n">SelectionBarComponent</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">page</span><span class="p">,</span> <span class="n">loc</span><span class="p">)</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="SidebarFilterComponent.get_filtering_parameter">
|
|
||||||
<a class="viewcode-back" href="../../components_derived.html#components_derived.sidebar_filter_component.SidebarFilterComponent.get_filtering_parameter">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">get_filtering_parameter</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="n">SelectionBarComponent</span> <span class="o">|</span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Возвращает поле задания параметров фильтрации по заданному или None, если не найдено."""</span>
|
|
||||||
|
|
||||||
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">filtering_parameters</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">name</span><span class="p">)</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="SidebarFilterComponent.get_start_time_filter">
|
|
||||||
<a class="viewcode-back" href="../../components_derived.html#components_derived.sidebar_filter_component.SidebarFilterComponent.get_start_time_filter">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">get_start_time_filter</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">DateInput</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Возвращает поле задания параметров фильтрации даты начала."""</span>
|
|
||||||
|
|
||||||
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">start_time_filter</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="SidebarFilterComponent.get_finish_time_filter">
|
|
||||||
<a class="viewcode-back" href="../../components_derived.html#components_derived.sidebar_filter_component.SidebarFilterComponent.get_finish_time_filter">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">get_finish_time_filter</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">DateInput</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Возвращает поле задания параметров фильтрации даты окончания."""</span>
|
|
||||||
|
|
||||||
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">finish_time_filter</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="SidebarFilterComponent.click_apply_button">
|
|
||||||
<a class="viewcode-back" href="../../components_derived.html#components_derived.sidebar_filter_component.SidebarFilterComponent.click_apply_button">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">click_apply_button</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Клик по кнопке применения фильтра."""</span>
|
|
||||||
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">apply_button</span><span class="o">.</span><span class="n">click</span><span class="p">()</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="SidebarFilterComponent.click_reset_button">
|
|
||||||
<a class="viewcode-back" href="../../components_derived.html#components_derived.sidebar_filter_component.SidebarFilterComponent.click_reset_button">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">click_reset_button</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Клик по кнопке сброса фильтра."""</span>
|
|
||||||
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">reset_button</span><span class="o">.</span><span class="n">click</span><span class="p">()</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<span class="c1"># Проверки:</span>
|
|
||||||
<div class="viewcode-block" id="SidebarFilterComponent.check_content">
|
|
||||||
<a class="viewcode-back" href="../../components_derived.html#components_derived.sidebar_filter_component.SidebarFilterComponent.check_content">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">check_content</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Проверяет наличие постоянных полей панели параметров фильтрации."""</span>
|
|
||||||
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">should_be_toolbar</span><span class="p">()</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">start_time_filter</span><span class="o">.</span><span class="n">check_content</span><span class="p">(</span><span class="s2">"Дата начала"</span><span class="p">)</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">finish_time_filter</span><span class="o">.</span><span class="n">check_content</span><span class="p">(</span><span class="s2">"Дата окончания"</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">check_apply_button_visibility</span><span class="p">()</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">check_reset_button_visibility</span><span class="p">()</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="SidebarFilterComponent.check_vertical_scrolling">
|
|
||||||
<a class="viewcode-back" href="../../components_derived.html#components_derived.sidebar_filter_component.SidebarFilterComponent.check_vertical_scrolling">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">check_vertical_scrolling</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">locator</span><span class="p">:</span> <span class="nb">str</span><span class="o">|</span> <span class="n">Locator</span><span class="p">)</span> <span class="o">-></span> <span class="nb">bool</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Проверяет возможность вертикальной прокрутки формы."""</span>
|
|
||||||
|
|
||||||
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">is_scrollable_vertically</span><span class="p">(</span><span class="n">locator</span><span class="p">)</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="SidebarFilterComponent.check_apply_button_visibility">
|
|
||||||
<a class="viewcode-back" href="../../components_derived.html#components_derived.sidebar_filter_component.SidebarFilterComponent.check_apply_button_visibility">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">check_apply_button_visibility</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Проверяет наличие кнопки применения фильтра."""</span>
|
|
||||||
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">apply_button</span><span class="o">.</span><span class="n">check_visibility</span><span class="p">(</span><span class="s2">"Apply Filter Button is missing"</span><span class="p">)</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="SidebarFilterComponent.check_reset_button_visibility">
|
|
||||||
<a class="viewcode-back" href="../../components_derived.html#components_derived.sidebar_filter_component.SidebarFilterComponent.check_reset_button_visibility">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">check_reset_button_visibility</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Проверяет наличие кнопки сброса фильтра."""</span>
|
|
||||||
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">reset_button</span><span class="o">.</span><span class="n">check_visibility</span><span class="p">(</span><span class="s2">"Reset Filter Button is missing"</span><span class="p">)</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="SidebarFilterComponent.should_be_toolbar">
|
|
||||||
<a class="viewcode-back" href="../../components_derived.html#components_derived.sidebar_filter_component.SidebarFilterComponent.should_be_toolbar">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">should_be_toolbar</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Проверяет наличие тулбара.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Raises:</span>
|
|
||||||
<span class="sd"> AssertionError: Если тулбар отсутствует.</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">toolbar</span><span class="o">.</span><span class="n">check_toolbar_presence_by_locator_and_title</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">sidebar_locator</span><span class="p">,</span>
|
|
||||||
<span class="s2">"Sidebar Filter form toolbar is missing"</span><span class="p">)</span></div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</pre></div>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<footer>
|
|
||||||
|
|
||||||
<hr/>
|
|
||||||
|
|
||||||
<div role="contentinfo">
|
|
||||||
<p>© Авторские права 2025, NPO KIS. </p>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
Собрано при помощи <a href="https://www.sphinx-doc.org/">Sphinx</a> с использованием
|
|
||||||
<a href="https://github.com/readthedocs/sphinx_rtd_theme">темы,</a>
|
|
||||||
предоставленной <a href="https://readthedocs.org">Read the Docs</a>.
|
|
||||||
|
|
||||||
|
|
||||||
</footer>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</section>
|
|
||||||
</div>
|
|
||||||
<script>
|
|
||||||
jQuery(function () {
|
|
||||||
SphinxRtdTheme.Navigation.enable(true);
|
|
||||||
});
|
|
||||||
</script>
|
|
||||||
|
|
||||||
</body>
|
|
||||||
</html>
|
|
||||||
|
|
@ -1,273 +0,0 @@
|
||||||
|
|
||||||
|
|
||||||
<!DOCTYPE html>
|
|
||||||
<html class="writer-html5" lang="ru" data-content_root="../../">
|
|
||||||
<head>
|
|
||||||
<meta charset="utf-8" />
|
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
||||||
<title>components_derived.user_card — документация e-nms-qa-automation 0.1.0</title>
|
|
||||||
<link rel="stylesheet" type="text/css" href="../../_static/pygments.css?v=b86133f3" />
|
|
||||||
<link rel="stylesheet" type="text/css" href="../../_static/css/theme.css?v=e59714d7" />
|
|
||||||
|
|
||||||
|
|
||||||
<script src="../../_static/jquery.js?v=5d32c60e"></script>
|
|
||||||
<script src="../../_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script>
|
|
||||||
<script src="../../_static/documentation_options.js?v=6ff560e8"></script>
|
|
||||||
<script src="../../_static/doctools.js?v=9bcbadda"></script>
|
|
||||||
<script src="../../_static/sphinx_highlight.js?v=dc90522c"></script>
|
|
||||||
<script src="../../_static/translations.js?v=cd1d70c9"></script>
|
|
||||||
<script src="../../_static/js/theme.js"></script>
|
|
||||||
<link rel="index" title="Алфавитный указатель" href="../../genindex.html" />
|
|
||||||
<link rel="search" title="Поиск" href="../../search.html" />
|
|
||||||
</head>
|
|
||||||
|
|
||||||
<body class="wy-body-for-nav">
|
|
||||||
<div class="wy-grid-for-nav">
|
|
||||||
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
|
|
||||||
<div class="wy-side-scroll">
|
|
||||||
<div class="wy-side-nav-search" >
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<a href="../../index.html" class="icon icon-home">
|
|
||||||
e-nms-qa-automation
|
|
||||||
</a>
|
|
||||||
<div role="search">
|
|
||||||
<form id="rtd-search-form" class="wy-form" action="../../search.html" method="get">
|
|
||||||
<input type="text" name="q" placeholder="Поиск в документации" aria-label="Поиск в документации" />
|
|
||||||
<input type="hidden" name="check_keywords" value="yes" />
|
|
||||||
<input type="hidden" name="area" value="default" />
|
|
||||||
</form>
|
|
||||||
</div>
|
|
||||||
</div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Меню навигации">
|
|
||||||
<!-- Local TOC -->
|
|
||||||
<div class="local-toc"></div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</nav>
|
|
||||||
|
|
||||||
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Меню навигации для мобильных устройств" >
|
|
||||||
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
|
|
||||||
<a href="../../index.html">e-nms-qa-automation</a>
|
|
||||||
</nav>
|
|
||||||
|
|
||||||
<div class="wy-nav-content">
|
|
||||||
<div class="rst-content">
|
|
||||||
<div role="navigation" aria-label="Навигация по страницам">
|
|
||||||
<ul class="wy-breadcrumbs">
|
|
||||||
<li><a href="../../index.html" class="icon icon-home" aria-label="Home"></a></li>
|
|
||||||
<li class="breadcrumb-item"><a href="../index.html">Код модуля</a></li>
|
|
||||||
<li class="breadcrumb-item active">components_derived.user_card</li>
|
|
||||||
<li class="wy-breadcrumbs-aside">
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
<hr/>
|
|
||||||
</div>
|
|
||||||
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
|
|
||||||
<div itemprop="articleBody">
|
|
||||||
|
|
||||||
<h1>Исходный код components_derived.user_card</h1><div class="highlight"><pre>
|
|
||||||
<span></span><span class="sd">"""Модуль компонента карточки пользователя.</span>
|
|
||||||
|
|
||||||
<span class="sd">Содержит класс для работы с карточкой пользователя через Playwright.</span>
|
|
||||||
<span class="sd">"""</span>
|
|
||||||
|
|
||||||
<span class="kn">from</span><span class="w"> </span><span class="nn">playwright.sync_api</span><span class="w"> </span><span class="kn">import</span> <span class="n">Page</span>
|
|
||||||
<span class="kn">from</span><span class="w"> </span><span class="nn">tools.logger</span><span class="w"> </span><span class="kn">import</span> <span class="n">get_logger</span>
|
|
||||||
<span class="kn">from</span><span class="w"> </span><span class="nn">locators.user_card_locators</span><span class="w"> </span><span class="kn">import</span> <span class="n">UserCardLocators</span>
|
|
||||||
<span class="kn">from</span><span class="w"> </span><span class="nn">elements.text_element</span><span class="w"> </span><span class="kn">import</span> <span class="n">Text</span>
|
|
||||||
<span class="kn">from</span><span class="w"> </span><span class="nn">elements.button_element</span><span class="w"> </span><span class="kn">import</span> <span class="n">Button</span>
|
|
||||||
<span class="kn">from</span><span class="w"> </span><span class="nn">data.roles_dict</span><span class="w"> </span><span class="kn">import</span> <span class="n">roles_dict</span>
|
|
||||||
<span class="kn">from</span><span class="w"> </span><span class="nn">data.environment</span><span class="w"> </span><span class="kn">import</span> <span class="n">host</span>
|
|
||||||
<span class="kn">from</span><span class="w"> </span><span class="nn">components.base_component</span><span class="w"> </span><span class="kn">import</span> <span class="n">BaseComponent</span>
|
|
||||||
<span class="kn">from</span><span class="w"> </span><span class="nn">components_derived.modal_change_password</span><span class="w"> </span><span class="kn">import</span> <span class="n">ChangePasswordModalWindow</span>
|
|
||||||
|
|
||||||
<span class="n">logger</span> <span class="o">=</span> <span class="n">get_logger</span><span class="p">(</span><span class="s2">"USER_CARD"</span><span class="p">)</span>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="UserCard">
|
|
||||||
<a class="viewcode-back" href="../../components_derived.html#components_derived.user_card.UserCard">[документация]</a>
|
|
||||||
<span class="k">class</span><span class="w"> </span><span class="nc">UserCard</span><span class="p">(</span><span class="n">BaseComponent</span><span class="p">):</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Компонент карточка.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Предоставляет методы для взаимодействия с элементами карточки.</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="UserCard.__init__">
|
|
||||||
<a class="viewcode-back" href="../../components_derived.html#components_derived.user_card.UserCard.__init__">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">page</span><span class="p">:</span> <span class="n">Page</span><span class="p">):</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Инициализирует компонент карточки.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Args:</span>
|
|
||||||
<span class="sd"> page: Экземпляр страницы Playwright.</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
|
|
||||||
<span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="fm">__init__</span><span class="p">(</span><span class="n">page</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="n">card_locator</span> <span class="o">=</span> <span class="n">page</span><span class="o">.</span><span class="n">locator</span><span class="p">(</span><span class="n">UserCardLocators</span><span class="o">.</span><span class="n">CARD_USER</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="c1"># Обновленные локаторы согласно новой структуре карточки</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">current_user_name</span> <span class="o">=</span> <span class="n">Text</span><span class="p">(</span>
|
|
||||||
<span class="n">page</span><span class="p">,</span>
|
|
||||||
<span class="n">card_locator</span><span class="o">.</span><span class="n">locator</span><span class="p">(</span><span class="s2">"xpath=/div/div[1]"</span><span class="p">),</span> <span class="c1"># Изменено с div[2] на div[1]</span>
|
|
||||||
<span class="s2">"current user name"</span>
|
|
||||||
<span class="p">)</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">current_user_role</span> <span class="o">=</span> <span class="n">Text</span><span class="p">(</span>
|
|
||||||
<span class="n">page</span><span class="p">,</span>
|
|
||||||
<span class="n">card_locator</span><span class="o">.</span><span class="n">locator</span><span class="p">(</span><span class="s2">"xpath=/div/div[2]"</span><span class="p">),</span> <span class="c1"># Изменено с div[3] на div[2]</span>
|
|
||||||
<span class="s2">"current user role"</span>
|
|
||||||
<span class="p">)</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">login_time</span> <span class="o">=</span> <span class="n">Text</span><span class="p">(</span>
|
|
||||||
<span class="n">page</span><span class="p">,</span>
|
|
||||||
<span class="n">card_locator</span><span class="o">.</span><span class="n">locator</span><span class="p">(</span><span class="s2">"xpath=/div/div[3]"</span><span class="p">),</span> <span class="c1"># Изменено с div[4] на div[3]</span>
|
|
||||||
<span class="s2">"login time"</span>
|
|
||||||
<span class="p">)</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">session_time</span> <span class="o">=</span> <span class="n">Text</span><span class="p">(</span>
|
|
||||||
<span class="n">page</span><span class="p">,</span>
|
|
||||||
<span class="n">card_locator</span><span class="o">.</span><span class="n">locator</span><span class="p">(</span><span class="s2">"xpath=/div/div[4]"</span><span class="p">),</span> <span class="c1"># Изменено с div[5] на div[4]</span>
|
|
||||||
<span class="s2">"session time"</span> <span class="c1"># Исправлено имя с "current user name" на "session time"</span>
|
|
||||||
<span class="p">)</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">logout_button</span> <span class="o">=</span> <span class="n">Button</span><span class="p">(</span>
|
|
||||||
<span class="n">page</span><span class="p">,</span>
|
|
||||||
<span class="n">page</span><span class="o">.</span><span class="n">get_by_role</span><span class="p">(</span><span class="s2">"button"</span><span class="p">,</span> <span class="n">name</span><span class="o">=</span><span class="s2">"Выйти"</span><span class="p">),</span>
|
|
||||||
<span class="s2">"logout button"</span>
|
|
||||||
<span class="p">)</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">change_password_button</span> <span class="o">=</span> <span class="n">Button</span><span class="p">(</span>
|
|
||||||
<span class="n">page</span><span class="p">,</span>
|
|
||||||
<span class="n">page</span><span class="o">.</span><span class="n">get_by_role</span><span class="p">(</span><span class="s2">"button"</span><span class="p">,</span> <span class="n">name</span><span class="o">=</span><span class="s2">"Изменить пароль"</span><span class="p">),</span>
|
|
||||||
<span class="s2">"change password button"</span>
|
|
||||||
<span class="p">)</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">close_button</span> <span class="o">=</span> <span class="n">Button</span><span class="p">(</span>
|
|
||||||
<span class="n">page</span><span class="p">,</span>
|
|
||||||
<span class="n">page</span><span class="o">.</span><span class="n">get_by_role</span><span class="p">(</span><span class="s2">"button"</span><span class="p">,</span> <span class="n">name</span><span class="o">=</span><span class="s2">"Закрыть"</span><span class="p">),</span>
|
|
||||||
<span class="s2">"close button"</span>
|
|
||||||
<span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="c1"># окна, отрываемые после нажатия кнопок</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">change_password_modal_window</span> <span class="o">=</span> <span class="n">ChangePasswordModalWindow</span><span class="p">(</span><span class="n">page</span><span class="p">)</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<span class="c1"># Действия:</span>
|
|
||||||
<div class="viewcode-block" id="UserCard.click_change_password_button">
|
|
||||||
<a class="viewcode-back" href="../../components_derived.html#components_derived.user_card.UserCard.click_change_password_button">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">click_change_password_button</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">ChangePasswordModalWindow</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Нажимает кнопку открытия окна изменения пароля.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Выполняет клик по кнопке 'Изменить пароль' в карточке пользователя.</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">change_password_button</span><span class="o">.</span><span class="n">click</span><span class="p">()</span>
|
|
||||||
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">change_password_modal_window</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="UserCard.click_logout_button">
|
|
||||||
<a class="viewcode-back" href="../../components_derived.html#components_derived.user_card.UserCard.click_logout_button">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">click_logout_button</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Нажимает кнопку выхода из системы.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Выполняет клик по кнопке 'Выйти' в карточке пользователя.</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">logout_button</span><span class="o">.</span><span class="n">click</span><span class="p">()</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="UserCard.click_close_button">
|
|
||||||
<a class="viewcode-back" href="../../components_derived.html#components_derived.user_card.UserCard.click_close_button">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">click_close_button</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Нажимает кнопку закрытия окна карточки пользователя.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Выполняет клик по кнопке 'Закрыть' в карточке пользователя.</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">close_button</span><span class="o">.</span><span class="n">click</span><span class="p">()</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<span class="c1"># Проверки:</span>
|
|
||||||
<div class="viewcode-block" id="UserCard.check_content">
|
|
||||||
<a class="viewcode-back" href="../../components_derived.html#components_derived.user_card.UserCard.check_content">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">check_content</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Проверяет наличие и корректность элементов карточки пользователя</span>
|
|
||||||
<span class="sd"> в зависимости от его роли в системе."""</span>
|
|
||||||
|
|
||||||
<span class="n">current_user_credential</span> <span class="o">=</span> <span class="n">host</span><span class="o">.</span><span class="n">get_current_user_credential</span><span class="p">()</span>
|
|
||||||
|
|
||||||
<span class="n">name</span> <span class="o">=</span> <span class="n">current_user_credential</span><span class="p">[</span><span class="s2">"login"</span><span class="p">]</span>
|
|
||||||
<span class="n">text_to_check</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"Имя пользователя: </span><span class="si">{</span><span class="n">name</span><span class="si">}</span><span class="s2">"</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">current_user_name</span><span class="o">.</span><span class="n">check_have_text</span><span class="p">(</span>
|
|
||||||
<span class="n">text_to_check</span><span class="p">,</span>
|
|
||||||
<span class="sa">f</span><span class="s2">"Expected text </span><span class="si">{</span><span class="n">text_to_check</span><span class="si">}</span><span class="s2"> is missing in user card"</span>
|
|
||||||
<span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="n">role</span> <span class="o">=</span> <span class="n">roles_dict</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">current_user_credential</span><span class="p">[</span><span class="s2">"role"</span><span class="p">])</span>
|
|
||||||
<span class="k">if</span> <span class="n">role</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="k">assert</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"Unknown user role in current user credential"</span>
|
|
||||||
<span class="n">text_to_check</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"Роль: </span><span class="si">{</span><span class="n">role</span><span class="si">}</span><span class="s2">"</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">current_user_role</span><span class="o">.</span><span class="n">check_have_text</span><span class="p">(</span>
|
|
||||||
<span class="n">text_to_check</span><span class="p">,</span>
|
|
||||||
<span class="sa">f</span><span class="s2">"Expected text </span><span class="si">{</span><span class="n">text_to_check</span><span class="si">}</span><span class="s2"> is missing in user card"</span>
|
|
||||||
<span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="n">login_time_str</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">login_time</span><span class="o">.</span><span class="n">get_text</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span>
|
|
||||||
<span class="k">assert</span> <span class="n">login_time_str</span><span class="o">.</span><span class="n">find</span><span class="p">(</span><span class="s2">"Время входа:"</span><span class="p">)</span> <span class="o">!=</span> <span class="o">-</span><span class="mi">1</span><span class="p">,</span> <span class="p">(</span>
|
|
||||||
<span class="s2">"Expected text 'Время входа:' is missing in user card"</span>
|
|
||||||
<span class="p">)</span>
|
|
||||||
<span class="n">session_time_str</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">session_time</span><span class="o">.</span><span class="n">get_text</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span>
|
|
||||||
<span class="k">assert</span> <span class="n">session_time_str</span><span class="o">.</span><span class="n">find</span><span class="p">(</span><span class="s2">"Время сессии:"</span><span class="p">)</span> <span class="o">!=</span> <span class="o">-</span><span class="mi">1</span><span class="p">,</span> <span class="p">(</span>
|
|
||||||
<span class="s2">"Expected text 'Время сессии:' is missing in user card"</span>
|
|
||||||
<span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">logout_button</span><span class="o">.</span><span class="n">check_visibility</span><span class="p">(</span>
|
|
||||||
<span class="s2">"Logout button is missing on user card"</span>
|
|
||||||
<span class="p">)</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">change_password_button</span><span class="o">.</span><span class="n">check_visibility</span><span class="p">(</span>
|
|
||||||
<span class="s2">"Change password button is missing on user card"</span>
|
|
||||||
<span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">close_button</span><span class="o">.</span><span class="n">check_visibility</span><span class="p">(</span>
|
|
||||||
<span class="s2">"Close button is missing on user card"</span>
|
|
||||||
<span class="p">)</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="UserCard.check_card_is_closed">
|
|
||||||
<a class="viewcode-back" href="../../components_derived.html#components_derived.user_card.UserCard.check_card_is_closed">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">check_card_is_closed</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Проверяет, что карточка пользователя отсутствует.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Raises:</span>
|
|
||||||
<span class="sd"> AssertionError: Если карточка пользователя все еще открыта.</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
<span class="n">card_locator</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">page</span><span class="o">.</span><span class="n">locator</span><span class="p">(</span><span class="n">UserCardLocators</span><span class="o">.</span><span class="n">CARD_USER</span><span class="p">)</span><span class="o">.</span><span class="n">locator</span><span class="p">(</span><span class="s2">"xpath=../.."</span><span class="p">)</span>
|
|
||||||
<span class="n">class_attr</span> <span class="o">=</span> <span class="n">card_locator</span><span class="o">.</span><span class="n">get_attribute</span><span class="p">(</span><span class="s1">'class'</span><span class="p">)</span>
|
|
||||||
<span class="k">assert</span> <span class="s1">'menuable__content__active'</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">class_attr</span><span class="p">,</span> <span class="s2">"User card should be closed"</span></div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</pre></div>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<footer>
|
|
||||||
|
|
||||||
<hr/>
|
|
||||||
|
|
||||||
<div role="contentinfo">
|
|
||||||
<p>© Авторские права 2025, NPO KIS. </p>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
Собрано при помощи <a href="https://www.sphinx-doc.org/">Sphinx</a> с использованием
|
|
||||||
<a href="https://github.com/readthedocs/sphinx_rtd_theme">темы,</a>
|
|
||||||
предоставленной <a href="https://readthedocs.org">Read the Docs</a>.
|
|
||||||
|
|
||||||
|
|
||||||
</footer>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</section>
|
|
||||||
</div>
|
|
||||||
<script>
|
|
||||||
jQuery(function () {
|
|
||||||
SphinxRtdTheme.Navigation.enable(true);
|
|
||||||
});
|
|
||||||
</script>
|
|
||||||
|
|
||||||
</body>
|
|
||||||
</html>
|
|
||||||
|
|
@ -1,169 +0,0 @@
|
||||||
|
|
||||||
|
|
||||||
<!DOCTYPE html>
|
|
||||||
<html class="writer-html5" lang="ru" data-content_root="../">
|
|
||||||
<head>
|
|
||||||
<meta charset="utf-8" />
|
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
||||||
<title>conftest — документация e-nms-qa-automation 0.1.0</title>
|
|
||||||
<link rel="stylesheet" type="text/css" href="../_static/pygments.css?v=b86133f3" />
|
|
||||||
<link rel="stylesheet" type="text/css" href="../_static/css/theme.css?v=e59714d7" />
|
|
||||||
|
|
||||||
|
|
||||||
<script src="../_static/jquery.js?v=5d32c60e"></script>
|
|
||||||
<script src="../_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script>
|
|
||||||
<script src="../_static/documentation_options.js?v=6ff560e8"></script>
|
|
||||||
<script src="../_static/doctools.js?v=9bcbadda"></script>
|
|
||||||
<script src="../_static/sphinx_highlight.js?v=dc90522c"></script>
|
|
||||||
<script src="../_static/translations.js?v=cd1d70c9"></script>
|
|
||||||
<script src="../_static/js/theme.js"></script>
|
|
||||||
<link rel="index" title="Алфавитный указатель" href="../genindex.html" />
|
|
||||||
<link rel="search" title="Поиск" href="../search.html" />
|
|
||||||
</head>
|
|
||||||
|
|
||||||
<body class="wy-body-for-nav">
|
|
||||||
<div class="wy-grid-for-nav">
|
|
||||||
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
|
|
||||||
<div class="wy-side-scroll">
|
|
||||||
<div class="wy-side-nav-search" >
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<a href="../index.html" class="icon icon-home">
|
|
||||||
e-nms-qa-automation
|
|
||||||
</a>
|
|
||||||
<div role="search">
|
|
||||||
<form id="rtd-search-form" class="wy-form" action="../search.html" method="get">
|
|
||||||
<input type="text" name="q" placeholder="Поиск в документации" aria-label="Поиск в документации" />
|
|
||||||
<input type="hidden" name="check_keywords" value="yes" />
|
|
||||||
<input type="hidden" name="area" value="default" />
|
|
||||||
</form>
|
|
||||||
</div>
|
|
||||||
</div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Меню навигации">
|
|
||||||
<!-- Local TOC -->
|
|
||||||
<div class="local-toc"></div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</nav>
|
|
||||||
|
|
||||||
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Меню навигации для мобильных устройств" >
|
|
||||||
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
|
|
||||||
<a href="../index.html">e-nms-qa-automation</a>
|
|
||||||
</nav>
|
|
||||||
|
|
||||||
<div class="wy-nav-content">
|
|
||||||
<div class="rst-content">
|
|
||||||
<div role="navigation" aria-label="Навигация по страницам">
|
|
||||||
<ul class="wy-breadcrumbs">
|
|
||||||
<li><a href="../index.html" class="icon icon-home" aria-label="Home"></a></li>
|
|
||||||
<li class="breadcrumb-item"><a href="index.html">Код модуля</a></li>
|
|
||||||
<li class="breadcrumb-item active">conftest</li>
|
|
||||||
<li class="wy-breadcrumbs-aside">
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
<hr/>
|
|
||||||
</div>
|
|
||||||
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
|
|
||||||
<div itemprop="articleBody">
|
|
||||||
|
|
||||||
<h1>Исходный код conftest</h1><div class="highlight"><pre>
|
|
||||||
<span></span><span class="kn">from</span><span class="w"> </span><span class="nn">pathlib</span><span class="w"> </span><span class="kn">import</span> <span class="n">Path</span>
|
|
||||||
<span class="kn">import</span><span class="w"> </span><span class="nn">os</span>
|
|
||||||
<span class="kn">import</span><span class="w"> </span><span class="nn">inspect</span>
|
|
||||||
<span class="kn">from</span><span class="w"> </span><span class="nn">dotenv</span><span class="w"> </span><span class="kn">import</span> <span class="n">load_dotenv</span>
|
|
||||||
|
|
||||||
<span class="n">load_dotenv</span><span class="p">()</span>
|
|
||||||
|
|
||||||
<span class="n">pytest_plugins</span> <span class="o">=</span> <span class="p">[</span>
|
|
||||||
<span class="s1">'fixtures.pages'</span>
|
|
||||||
<span class="p">]</span>
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="pytest_sessionfinish">
|
|
||||||
<a class="viewcode-back" href="../conftest.html#conftest.pytest_sessionfinish">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">pytest_sessionfinish</span><span class="p">(</span><span class="n">session</span><span class="p">,</span> <span class="n">exitstatus</span><span class="p">):</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Генерация Markdown файлов с группировкой по классам"""</span>
|
|
||||||
<span class="k">if</span> <span class="n">session</span><span class="o">.</span><span class="n">config</span><span class="o">.</span><span class="n">getoption</span><span class="p">(</span><span class="s2">"--generate-md"</span><span class="p">):</span>
|
|
||||||
<span class="n">tests_by_file</span> <span class="o">=</span> <span class="p">{}</span>
|
|
||||||
|
|
||||||
<span class="k">for</span> <span class="n">item</span> <span class="ow">in</span> <span class="n">session</span><span class="o">.</span><span class="n">items</span><span class="p">:</span>
|
|
||||||
<span class="k">if</span> <span class="ow">not</span> <span class="p">(</span><span class="nb">hasattr</span><span class="p">(</span><span class="n">item</span><span class="p">,</span> <span class="s1">'function'</span><span class="p">)</span> <span class="ow">and</span> <span class="n">item</span><span class="o">.</span><span class="n">function</span><span class="o">.</span><span class="vm">__doc__</span><span class="p">):</span>
|
|
||||||
<span class="k">continue</span>
|
|
||||||
|
|
||||||
<span class="n">file_path</span> <span class="o">=</span> <span class="nb">str</span><span class="p">(</span><span class="n">item</span><span class="o">.</span><span class="n">fspath</span><span class="p">)</span>
|
|
||||||
<span class="n">file_name</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">splitext</span><span class="p">(</span><span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">basename</span><span class="p">(</span><span class="n">file_path</span><span class="p">))[</span><span class="mi">0</span><span class="p">]</span>
|
|
||||||
|
|
||||||
<span class="k">if</span> <span class="n">file_name</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">tests_by_file</span><span class="p">:</span>
|
|
||||||
<span class="n">tests_by_file</span><span class="p">[</span><span class="n">file_name</span><span class="p">]</span> <span class="o">=</span> <span class="p">{}</span>
|
|
||||||
|
|
||||||
<span class="c1"># Группируем тесты по классам</span>
|
|
||||||
<span class="n">class_name</span> <span class="o">=</span> <span class="n">item</span><span class="o">.</span><span class="n">cls</span><span class="o">.</span><span class="vm">__name__</span> <span class="k">if</span> <span class="nb">hasattr</span><span class="p">(</span><span class="n">item</span><span class="p">,</span> <span class="s1">'cls'</span><span class="p">)</span> <span class="k">else</span> <span class="s2">"Без класса"</span>
|
|
||||||
<span class="k">if</span> <span class="n">class_name</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">tests_by_file</span><span class="p">[</span><span class="n">file_name</span><span class="p">]:</span>
|
|
||||||
<span class="n">tests_by_file</span><span class="p">[</span><span class="n">file_name</span><span class="p">][</span><span class="n">class_name</span><span class="p">]</span> <span class="o">=</span> <span class="p">{</span>
|
|
||||||
<span class="s1">'doc'</span><span class="p">:</span> <span class="n">inspect</span><span class="o">.</span><span class="n">cleandoc</span><span class="p">(</span><span class="n">item</span><span class="o">.</span><span class="n">cls</span><span class="o">.</span><span class="vm">__doc__</span><span class="p">)</span> <span class="k">if</span> <span class="nb">hasattr</span><span class="p">(</span><span class="n">item</span><span class="p">,</span> <span class="s1">'cls'</span><span class="p">)</span> <span class="ow">and</span> <span class="n">item</span><span class="o">.</span><span class="n">cls</span><span class="o">.</span><span class="vm">__doc__</span> <span class="k">else</span> <span class="s2">""</span><span class="p">,</span>
|
|
||||||
<span class="s1">'tests'</span><span class="p">:</span> <span class="p">[]</span>
|
|
||||||
<span class="p">}</span>
|
|
||||||
<span class="n">tests_by_file</span><span class="p">[</span><span class="n">file_name</span><span class="p">][</span><span class="n">class_name</span><span class="p">][</span><span class="s1">'tests'</span><span class="p">]</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">item</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="c1"># Создаем директорию docs</span>
|
|
||||||
<span class="n">output_dir</span> <span class="o">=</span> <span class="n">Path</span><span class="p">(</span><span class="s2">"docs"</span><span class="p">)</span>
|
|
||||||
<span class="n">output_dir</span><span class="o">.</span><span class="n">mkdir</span><span class="p">(</span><span class="n">exist_ok</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="c1"># Генерируем файлы</span>
|
|
||||||
<span class="k">for</span> <span class="n">file_name</span><span class="p">,</span> <span class="n">classes</span> <span class="ow">in</span> <span class="n">tests_by_file</span><span class="o">.</span><span class="n">items</span><span class="p">():</span>
|
|
||||||
<span class="n">md_content</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"# Документация тестов (</span><span class="si">{</span><span class="n">file_name</span><span class="si">}</span><span class="s2">.py)</span><span class="se">\n\n</span><span class="s2">"</span>
|
|
||||||
|
|
||||||
<span class="k">for</span> <span class="n">class_name</span><span class="p">,</span> <span class="n">class_data</span> <span class="ow">in</span> <span class="n">classes</span><span class="o">.</span><span class="n">items</span><span class="p">():</span>
|
|
||||||
<span class="k">if</span> <span class="n">class_name</span> <span class="o">!=</span> <span class="s2">"Без класса"</span><span class="p">:</span>
|
|
||||||
<span class="n">md_content</span> <span class="o">+=</span> <span class="sa">f</span><span class="s2">"## Класс: </span><span class="si">{</span><span class="n">class_name</span><span class="si">}</span><span class="se">\n</span><span class="s2">"</span>
|
|
||||||
<span class="k">if</span> <span class="n">class_data</span><span class="p">[</span><span class="s1">'doc'</span><span class="p">]:</span>
|
|
||||||
<span class="n">md_content</span> <span class="o">+=</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">class_data</span><span class="p">[</span><span class="s1">'doc'</span><span class="p">]</span><span class="si">}</span><span class="se">\n\n</span><span class="s2">"</span>
|
|
||||||
|
|
||||||
<span class="k">for</span> <span class="n">item</span> <span class="ow">in</span> <span class="n">class_data</span><span class="p">[</span><span class="s1">'tests'</span><span class="p">]:</span>
|
|
||||||
<span class="n">md_content</span> <span class="o">+=</span> <span class="sa">f</span><span class="s2">"### </span><span class="si">{</span><span class="n">item</span><span class="o">.</span><span class="n">name</span><span class="si">}</span><span class="se">\n</span><span class="s2">"</span>
|
|
||||||
<span class="n">md_content</span> <span class="o">+=</span> <span class="sa">f</span><span class="s2">"**Маркеры:** </span><span class="si">{</span><span class="s1">', '</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">mark</span><span class="o">.</span><span class="n">name</span><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="n">mark</span><span class="w"> </span><span class="ow">in</span><span class="w"> </span><span class="n">item</span><span class="o">.</span><span class="n">own_markers</span><span class="p">)</span><span class="si">}</span><span class="se">\n\n</span><span class="s2">"</span>
|
|
||||||
<span class="n">md_content</span> <span class="o">+=</span> <span class="sa">f</span><span class="s2">"```python</span><span class="se">\n</span><span class="si">{</span><span class="n">inspect</span><span class="o">.</span><span class="n">cleandoc</span><span class="p">(</span><span class="n">item</span><span class="o">.</span><span class="n">function</span><span class="o">.</span><span class="vm">__doc__</span><span class="p">)</span><span class="si">}</span><span class="se">\n</span><span class="s2">```</span><span class="se">\n\n</span><span class="s2">"</span>
|
|
||||||
|
|
||||||
<span class="n">output_file</span> <span class="o">=</span> <span class="n">output_dir</span> <span class="o">/</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">file_name</span><span class="si">}</span><span class="s2">.md"</span>
|
|
||||||
<span class="n">output_file</span><span class="o">.</span><span class="n">write_text</span><span class="p">(</span><span class="n">md_content</span><span class="p">,</span> <span class="n">encoding</span><span class="o">=</span><span class="s1">'utf-8'</span><span class="p">)</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="pytest_addoption">
|
|
||||||
<a class="viewcode-back" href="../conftest.html#conftest.pytest_addoption">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">pytest_addoption</span><span class="p">(</span><span class="n">parser</span><span class="p">):</span>
|
|
||||||
<span class="n">parser</span><span class="o">.</span><span class="n">addoption</span><span class="p">(</span>
|
|
||||||
<span class="s2">"--generate-md"</span><span class="p">,</span>
|
|
||||||
<span class="n">action</span><span class="o">=</span><span class="s2">"store_true"</span><span class="p">,</span>
|
|
||||||
<span class="n">default</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span>
|
|
||||||
<span class="n">help</span><span class="o">=</span><span class="s2">"Генерировать Markdown документацию с группировкой по классам"</span>
|
|
||||||
<span class="p">)</span></div>
|
|
||||||
|
|
||||||
</pre></div>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<footer>
|
|
||||||
|
|
||||||
<hr/>
|
|
||||||
|
|
||||||
<div role="contentinfo">
|
|
||||||
<p>© Авторские права 2025, NPO KIS. </p>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
Собрано при помощи <a href="https://www.sphinx-doc.org/">Sphinx</a> с использованием
|
|
||||||
<a href="https://github.com/readthedocs/sphinx_rtd_theme">темы,</a>
|
|
||||||
предоставленной <a href="https://readthedocs.org">Read the Docs</a>.
|
|
||||||
|
|
||||||
|
|
||||||
</footer>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</section>
|
|
||||||
</div>
|
|
||||||
<script>
|
|
||||||
jQuery(function () {
|
|
||||||
SphinxRtdTheme.Navigation.enable(true);
|
|
||||||
});
|
|
||||||
</script>
|
|
||||||
|
|
||||||
</body>
|
|
||||||
</html>
|
|
||||||
|
|
@ -1,126 +0,0 @@
|
||||||
|
|
||||||
|
|
||||||
<!DOCTYPE html>
|
|
||||||
<html class="writer-html5" lang="ru" data-content_root="../../">
|
|
||||||
<head>
|
|
||||||
<meta charset="utf-8" />
|
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
||||||
<title>data.constants — документация e-nms-qa-automation 0.1.0</title>
|
|
||||||
<link rel="stylesheet" type="text/css" href="../../_static/pygments.css?v=b86133f3" />
|
|
||||||
<link rel="stylesheet" type="text/css" href="../../_static/css/theme.css?v=e59714d7" />
|
|
||||||
|
|
||||||
|
|
||||||
<script src="../../_static/jquery.js?v=5d32c60e"></script>
|
|
||||||
<script src="../../_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script>
|
|
||||||
<script src="../../_static/documentation_options.js?v=6ff560e8"></script>
|
|
||||||
<script src="../../_static/doctools.js?v=9bcbadda"></script>
|
|
||||||
<script src="../../_static/sphinx_highlight.js?v=dc90522c"></script>
|
|
||||||
<script src="../../_static/translations.js?v=cd1d70c9"></script>
|
|
||||||
<script src="../../_static/js/theme.js"></script>
|
|
||||||
<link rel="index" title="Алфавитный указатель" href="../../genindex.html" />
|
|
||||||
<link rel="search" title="Поиск" href="../../search.html" />
|
|
||||||
</head>
|
|
||||||
|
|
||||||
<body class="wy-body-for-nav">
|
|
||||||
<div class="wy-grid-for-nav">
|
|
||||||
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
|
|
||||||
<div class="wy-side-scroll">
|
|
||||||
<div class="wy-side-nav-search" >
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<a href="../../index.html" class="icon icon-home">
|
|
||||||
e-nms-qa-automation
|
|
||||||
</a>
|
|
||||||
<div role="search">
|
|
||||||
<form id="rtd-search-form" class="wy-form" action="../../search.html" method="get">
|
|
||||||
<input type="text" name="q" placeholder="Поиск в документации" aria-label="Поиск в документации" />
|
|
||||||
<input type="hidden" name="check_keywords" value="yes" />
|
|
||||||
<input type="hidden" name="area" value="default" />
|
|
||||||
</form>
|
|
||||||
</div>
|
|
||||||
</div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Меню навигации">
|
|
||||||
<!-- Local TOC -->
|
|
||||||
<div class="local-toc"></div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</nav>
|
|
||||||
|
|
||||||
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Меню навигации для мобильных устройств" >
|
|
||||||
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
|
|
||||||
<a href="../../index.html">e-nms-qa-automation</a>
|
|
||||||
</nav>
|
|
||||||
|
|
||||||
<div class="wy-nav-content">
|
|
||||||
<div class="rst-content">
|
|
||||||
<div role="navigation" aria-label="Навигация по страницам">
|
|
||||||
<ul class="wy-breadcrumbs">
|
|
||||||
<li><a href="../../index.html" class="icon icon-home" aria-label="Home"></a></li>
|
|
||||||
<li class="breadcrumb-item"><a href="../index.html">Код модуля</a></li>
|
|
||||||
<li class="breadcrumb-item active">data.constants</li>
|
|
||||||
<li class="wy-breadcrumbs-aside">
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
<hr/>
|
|
||||||
</div>
|
|
||||||
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
|
|
||||||
<div itemprop="articleBody">
|
|
||||||
|
|
||||||
<h1>Исходный код data.constants</h1><div class="highlight"><pre>
|
|
||||||
<span></span><span class="sd">"""Модуль constants содержит настройки и константы приложения.</span>
|
|
||||||
|
|
||||||
<span class="sd">Основной класс Constants предоставляет доступ к переменным окружения,</span>
|
|
||||||
<span class="sd">используемым для аутентификации и других настроек.</span>
|
|
||||||
<span class="sd">"""</span>
|
|
||||||
|
|
||||||
<span class="kn">import</span><span class="w"> </span><span class="nn">os</span>
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="Constants">
|
|
||||||
<a class="viewcode-back" href="../../data.html#data.constants.Constants">[документация]</a>
|
|
||||||
<span class="k">class</span><span class="w"> </span><span class="nc">Constants</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Хранит константы и переменные окружения.</span>
|
|
||||||
|
|
||||||
|
|
||||||
<span class="sd"> Получает значения из переменных окружения. Используется для аутентификации.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Атрибуты:</span>
|
|
||||||
<span class="sd"> login (str): Логин для аутентификации.</span>
|
|
||||||
<span class="sd"> password (str): Пароль для аутентификации.</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
|
|
||||||
<span class="k">try</span><span class="p">:</span>
|
|
||||||
<span class="n">login</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">getenv</span><span class="p">(</span><span class="s1">'AUTH_LOGIN'</span><span class="p">)</span>
|
|
||||||
<span class="n">password</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">getenv</span><span class="p">(</span><span class="s1">'AUTH_PASSWORD'</span><span class="p">)</span>
|
|
||||||
<span class="k">except</span> <span class="ne">KeyError</span><span class="p">:</span>
|
|
||||||
<span class="nb">print</span><span class="p">(</span><span class="s2">"LOGIN OR PASSWORD WASN'T FOUND"</span><span class="p">)</span></div>
|
|
||||||
|
|
||||||
</pre></div>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<footer>
|
|
||||||
|
|
||||||
<hr/>
|
|
||||||
|
|
||||||
<div role="contentinfo">
|
|
||||||
<p>© Авторские права 2025, NPO KIS. </p>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
Собрано при помощи <a href="https://www.sphinx-doc.org/">Sphinx</a> с использованием
|
|
||||||
<a href="https://github.com/readthedocs/sphinx_rtd_theme">темы,</a>
|
|
||||||
предоставленной <a href="https://readthedocs.org">Read the Docs</a>.
|
|
||||||
|
|
||||||
|
|
||||||
</footer>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</section>
|
|
||||||
</div>
|
|
||||||
<script>
|
|
||||||
jQuery(function () {
|
|
||||||
SphinxRtdTheme.Navigation.enable(true);
|
|
||||||
});
|
|
||||||
</script>
|
|
||||||
|
|
||||||
</body>
|
|
||||||
</html>
|
|
||||||
|
|
@ -1,251 +0,0 @@
|
||||||
|
|
||||||
|
|
||||||
<!DOCTYPE html>
|
|
||||||
<html class="writer-html5" lang="ru" data-content_root="../../">
|
|
||||||
<head>
|
|
||||||
<meta charset="utf-8" />
|
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
||||||
<title>data.environment — документация e-nms-qa-automation 0.1.0</title>
|
|
||||||
<link rel="stylesheet" type="text/css" href="../../_static/pygments.css?v=b86133f3" />
|
|
||||||
<link rel="stylesheet" type="text/css" href="../../_static/css/theme.css?v=e59714d7" />
|
|
||||||
|
|
||||||
|
|
||||||
<script src="../../_static/jquery.js?v=5d32c60e"></script>
|
|
||||||
<script src="../../_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script>
|
|
||||||
<script src="../../_static/documentation_options.js?v=6ff560e8"></script>
|
|
||||||
<script src="../../_static/doctools.js?v=9bcbadda"></script>
|
|
||||||
<script src="../../_static/sphinx_highlight.js?v=dc90522c"></script>
|
|
||||||
<script src="../../_static/translations.js?v=cd1d70c9"></script>
|
|
||||||
<script src="../../_static/js/theme.js"></script>
|
|
||||||
<link rel="index" title="Алфавитный указатель" href="../../genindex.html" />
|
|
||||||
<link rel="search" title="Поиск" href="../../search.html" />
|
|
||||||
</head>
|
|
||||||
|
|
||||||
<body class="wy-body-for-nav">
|
|
||||||
<div class="wy-grid-for-nav">
|
|
||||||
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
|
|
||||||
<div class="wy-side-scroll">
|
|
||||||
<div class="wy-side-nav-search" >
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<a href="../../index.html" class="icon icon-home">
|
|
||||||
e-nms-qa-automation
|
|
||||||
</a>
|
|
||||||
<div role="search">
|
|
||||||
<form id="rtd-search-form" class="wy-form" action="../../search.html" method="get">
|
|
||||||
<input type="text" name="q" placeholder="Поиск в документации" aria-label="Поиск в документации" />
|
|
||||||
<input type="hidden" name="check_keywords" value="yes" />
|
|
||||||
<input type="hidden" name="area" value="default" />
|
|
||||||
</form>
|
|
||||||
</div>
|
|
||||||
</div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Меню навигации">
|
|
||||||
<!-- Local TOC -->
|
|
||||||
<div class="local-toc"></div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</nav>
|
|
||||||
|
|
||||||
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Меню навигации для мобильных устройств" >
|
|
||||||
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
|
|
||||||
<a href="../../index.html">e-nms-qa-automation</a>
|
|
||||||
</nav>
|
|
||||||
|
|
||||||
<div class="wy-nav-content">
|
|
||||||
<div class="rst-content">
|
|
||||||
<div role="navigation" aria-label="Навигация по страницам">
|
|
||||||
<ul class="wy-breadcrumbs">
|
|
||||||
<li><a href="../../index.html" class="icon icon-home" aria-label="Home"></a></li>
|
|
||||||
<li class="breadcrumb-item"><a href="../index.html">Код модуля</a></li>
|
|
||||||
<li class="breadcrumb-item active">data.environment</li>
|
|
||||||
<li class="wy-breadcrumbs-aside">
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
<hr/>
|
|
||||||
</div>
|
|
||||||
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
|
|
||||||
<div itemprop="articleBody">
|
|
||||||
|
|
||||||
<h1>Исходный код data.environment</h1><div class="highlight"><pre>
|
|
||||||
<span></span><span class="sd">"""Модуль environment содержит настройки окружения и URL-адресов.</span>
|
|
||||||
|
|
||||||
<span class="sd">Класс Environment предоставляет методы для работы с окружением,</span>
|
|
||||||
<span class="sd">токенами и URL-адресами API.</span>
|
|
||||||
<span class="sd">"""</span>
|
|
||||||
|
|
||||||
<span class="kn">import</span><span class="w"> </span><span class="nn">os</span>
|
|
||||||
<span class="kn">from</span><span class="w"> </span><span class="nn">typing</span><span class="w"> </span><span class="kn">import</span> <span class="n">Dict</span>
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="Environment">
|
|
||||||
<a class="viewcode-back" href="../../data.html#data.environment.Environment">[документация]</a>
|
|
||||||
<span class="k">class</span><span class="w"> </span><span class="nc">Environment</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Управление окружением, URL-адресами и токенами.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Атрибуты класса:</span>
|
|
||||||
<span class="sd"> TEST (str): Константа для тестового окружения.</span>
|
|
||||||
<span class="sd"> DEVELOP (str): Константа для dev-окружения.</span>
|
|
||||||
<span class="sd"> URLS (Dict[str, str]): Словарь URL для разных окружений.</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
|
|
||||||
<span class="n">TEST</span><span class="p">:</span> <span class="nb">str</span> <span class="o">=</span> <span class="s1">'test'</span>
|
|
||||||
<span class="n">DEVELOP</span><span class="p">:</span> <span class="nb">str</span> <span class="o">=</span> <span class="s1">'develop'</span>
|
|
||||||
|
|
||||||
<span class="n">URLS</span><span class="p">:</span> <span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="p">{</span>
|
|
||||||
<span class="n">TEST</span><span class="p">:</span> <span class="s1">'http://192.168.2.76/'</span><span class="p">,</span>
|
|
||||||
<span class="n">DEVELOP</span><span class="p">:</span> <span class="s1">'http://192.168.2.69/'</span>
|
|
||||||
<span class="p">}</span>
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="Environment.__init__">
|
|
||||||
<a class="viewcode-back" href="../../data.html#data.environment.Environment.__init__">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Инициализирует объект окружения и токены."""</span>
|
|
||||||
|
|
||||||
<span class="k">try</span><span class="p">:</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">env</span><span class="p">:</span> <span class="nb">str</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">getenv</span><span class="p">(</span><span class="s1">'ENV'</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">TEST</span><span class="p">)</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">current_user_credential</span> <span class="o">=</span> <span class="p">{}</span>
|
|
||||||
<span class="k">except</span> <span class="ne">KeyError</span><span class="p">:</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">env</span><span class="p">:</span> <span class="nb">str</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">TEST</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="Environment.get_base_url">
|
|
||||||
<a class="viewcode-back" href="../../data.html#data.environment.Environment.get_base_url">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">get_base_url</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Возвращает базовый URL для текущего окружения.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Возвращает:</span>
|
|
||||||
<span class="sd"> str: Базовый URL с путем для теста или без него.</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
|
|
||||||
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">env</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">URLS</span><span class="p">:</span>
|
|
||||||
<span class="c1"># if self.env == self.TEST:</span>
|
|
||||||
<span class="c1"># return self.URLS[self.env] + "e-nms-ui/"</span>
|
|
||||||
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">URLS</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">env</span><span class="p">]</span>
|
|
||||||
<span class="k">raise</span> <span class="ne">Exception</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Unknown value of ENV variable </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">env</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="Environment.get_env_name">
|
|
||||||
<a class="viewcode-back" href="../../data.html#data.environment.Environment.get_env_name">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">get_env_name</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Возвращает имя текущего окружения.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Возвращает:</span>
|
|
||||||
<span class="sd"> str: имя текущего окружения.</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">env</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="Environment.get_request_url">
|
|
||||||
<a class="viewcode-back" href="../../data.html#data.environment.Environment.get_request_url">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">get_request_url</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Возвращает URL для API-запросов.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Возвращает:</span>
|
|
||||||
<span class="sd"> str: URL для API-запросов.</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
|
|
||||||
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">env</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">URLS</span><span class="p">:</span>
|
|
||||||
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">URLS</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">env</span><span class="p">]</span>
|
|
||||||
<span class="k">raise</span> <span class="ne">Exception</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Unknown value of ENV variable </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">env</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="Environment.set_current_user_credential">
|
|
||||||
<a class="viewcode-back" href="../../data.html#data.environment.Environment.set_current_user_credential">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">set_current_user_credential</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">credential</span><span class="p">:</span> <span class="p">{})</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Сохраняет учетные данные текущего пользователя.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Аргументы:</span>
|
|
||||||
<span class="sd"> credential ({}): Учетные данные текущего пользователя.</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">current_user_credential</span> <span class="o">=</span> <span class="n">credential</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="Environment.get_access_token">
|
|
||||||
<a class="viewcode-back" href="../../data.html#data.environment.Environment.get_access_token">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">get_access_token</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Возвращает текущий токен доступа.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Возвращает:</span>
|
|
||||||
<span class="sd"> str: Текущий токен доступа.</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
|
|
||||||
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">current_user_credential</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"access_token"</span><span class="p">)</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="Environment.get_current_user_name">
|
|
||||||
<a class="viewcode-back" href="../../data.html#data.environment.Environment.get_current_user_name">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">get_current_user_name</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Возвращает имя текущего пользователя.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Возвращает:</span>
|
|
||||||
<span class="sd"> str: Имя текущего пользователя.</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
|
|
||||||
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">current_user_credential</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"login"</span><span class="p">)</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="Environment.get_current_user_role">
|
|
||||||
<a class="viewcode-back" href="../../data.html#data.environment.Environment.get_current_user_role">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">get_current_user_role</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Возвращает роль текущего пользователя.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Возвращает:</span>
|
|
||||||
<span class="sd"> str: Роль текущего пользователя.</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
|
|
||||||
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">current_user_credential</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"role"</span><span class="p">)</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="Environment.get_current_user_id">
|
|
||||||
<a class="viewcode-back" href="../../data.html#data.environment.Environment.get_current_user_id">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">get_current_user_id</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Возвращает id текущего пользователя.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Возвращает:</span>
|
|
||||||
<span class="sd"> str: id текущего пользователя.</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
|
|
||||||
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">current_user_credential</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"$id"</span><span class="p">)</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="Environment.get_current_user_credential">
|
|
||||||
<a class="viewcode-back" href="../../data.html#data.environment.Environment.get_current_user_credential">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">get_current_user_credential</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="p">{}:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Возвращает учетные данные текущего пользователя."""</span>
|
|
||||||
|
|
||||||
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">current_user_credential</span></div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<span class="n">host</span><span class="p">:</span> <span class="n">Environment</span> <span class="o">=</span> <span class="n">Environment</span><span class="p">()</span>
|
|
||||||
</pre></div>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<footer>
|
|
||||||
|
|
||||||
<hr/>
|
|
||||||
|
|
||||||
<div role="contentinfo">
|
|
||||||
<p>© Авторские права 2025, NPO KIS. </p>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
Собрано при помощи <a href="https://www.sphinx-doc.org/">Sphinx</a> с использованием
|
|
||||||
<a href="https://github.com/readthedocs/sphinx_rtd_theme">темы,</a>
|
|
||||||
предоставленной <a href="https://readthedocs.org">Read the Docs</a>.
|
|
||||||
|
|
||||||
|
|
||||||
</footer>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</section>
|
|
||||||
</div>
|
|
||||||
<script>
|
|
||||||
jQuery(function () {
|
|
||||||
SphinxRtdTheme.Navigation.enable(true);
|
|
||||||
});
|
|
||||||
</script>
|
|
||||||
|
|
||||||
</body>
|
|
||||||
</html>
|
|
||||||
|
|
@ -1,232 +0,0 @@
|
||||||
|
|
||||||
|
|
||||||
<!DOCTYPE html>
|
|
||||||
<html class="writer-html5" lang="ru" data-content_root="../../">
|
|
||||||
<head>
|
|
||||||
<meta charset="utf-8" />
|
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
||||||
<title>elements.base_element — документация e-nms-qa-automation 0.1.0</title>
|
|
||||||
<link rel="stylesheet" type="text/css" href="../../_static/pygments.css?v=b86133f3" />
|
|
||||||
<link rel="stylesheet" type="text/css" href="../../_static/css/theme.css?v=e59714d7" />
|
|
||||||
|
|
||||||
|
|
||||||
<script src="../../_static/jquery.js?v=5d32c60e"></script>
|
|
||||||
<script src="../../_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script>
|
|
||||||
<script src="../../_static/documentation_options.js?v=6ff560e8"></script>
|
|
||||||
<script src="../../_static/doctools.js?v=9bcbadda"></script>
|
|
||||||
<script src="../../_static/sphinx_highlight.js?v=dc90522c"></script>
|
|
||||||
<script src="../../_static/translations.js?v=cd1d70c9"></script>
|
|
||||||
<script src="../../_static/js/theme.js"></script>
|
|
||||||
<link rel="index" title="Алфавитный указатель" href="../../genindex.html" />
|
|
||||||
<link rel="search" title="Поиск" href="../../search.html" />
|
|
||||||
</head>
|
|
||||||
|
|
||||||
<body class="wy-body-for-nav">
|
|
||||||
<div class="wy-grid-for-nav">
|
|
||||||
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
|
|
||||||
<div class="wy-side-scroll">
|
|
||||||
<div class="wy-side-nav-search" >
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<a href="../../index.html" class="icon icon-home">
|
|
||||||
e-nms-qa-automation
|
|
||||||
</a>
|
|
||||||
<div role="search">
|
|
||||||
<form id="rtd-search-form" class="wy-form" action="../../search.html" method="get">
|
|
||||||
<input type="text" name="q" placeholder="Поиск в документации" aria-label="Поиск в документации" />
|
|
||||||
<input type="hidden" name="check_keywords" value="yes" />
|
|
||||||
<input type="hidden" name="area" value="default" />
|
|
||||||
</form>
|
|
||||||
</div>
|
|
||||||
</div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Меню навигации">
|
|
||||||
<!-- Local TOC -->
|
|
||||||
<div class="local-toc"></div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</nav>
|
|
||||||
|
|
||||||
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Меню навигации для мобильных устройств" >
|
|
||||||
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
|
|
||||||
<a href="../../index.html">e-nms-qa-automation</a>
|
|
||||||
</nav>
|
|
||||||
|
|
||||||
<div class="wy-nav-content">
|
|
||||||
<div class="rst-content">
|
|
||||||
<div role="navigation" aria-label="Навигация по страницам">
|
|
||||||
<ul class="wy-breadcrumbs">
|
|
||||||
<li><a href="../../index.html" class="icon icon-home" aria-label="Home"></a></li>
|
|
||||||
<li class="breadcrumb-item"><a href="../index.html">Код модуля</a></li>
|
|
||||||
<li class="breadcrumb-item active">elements.base_element</li>
|
|
||||||
<li class="wy-breadcrumbs-aside">
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
<hr/>
|
|
||||||
</div>
|
|
||||||
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
|
|
||||||
<div itemprop="articleBody">
|
|
||||||
|
|
||||||
<h1>Исходный код elements.base_element</h1><div class="highlight"><pre>
|
|
||||||
<span></span><span class="sd">"""Модуль base_element содержит базовый класс для работы с элементами страницы.</span>
|
|
||||||
|
|
||||||
<span class="sd">Класс BaseElement предоставляет основные методы взаимодействия с элементами</span>
|
|
||||||
<span class="sd">и их проверки через Playwright.</span>
|
|
||||||
<span class="sd">"""</span>
|
|
||||||
|
|
||||||
<span class="kn">from</span><span class="w"> </span><span class="nn">playwright.sync_api</span><span class="w"> </span><span class="kn">import</span> <span class="n">Page</span><span class="p">,</span> <span class="n">Locator</span><span class="p">,</span> <span class="n">expect</span><span class="p">,</span> <span class="ne">TimeoutError</span>
|
|
||||||
<span class="kn">from</span><span class="w"> </span><span class="nn">tools.logger</span><span class="w"> </span><span class="kn">import</span> <span class="n">get_logger</span>
|
|
||||||
|
|
||||||
<span class="n">logger</span> <span class="o">=</span> <span class="n">get_logger</span><span class="p">(</span><span class="s2">"BASE_ELEMENT"</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="BaseElement">
|
|
||||||
<a class="viewcode-back" href="../../elements.html#elements.base_element.BaseElement">[документация]</a>
|
|
||||||
<span class="k">class</span><span class="w"> </span><span class="nc">BaseElement</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Базовый класс для работы с элементами страницы через Playwright.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Предоставляет основные методы взаимодействия с элементами:</span>
|
|
||||||
<span class="sd"> клики, получение текста, ожидание и проверки состояния.</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="BaseElement.__init__">
|
|
||||||
<a class="viewcode-back" href="../../elements.html#elements.base_element.BaseElement.__init__">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">page</span><span class="p">:</span> <span class="n">Page</span><span class="p">,</span> <span class="n">locator</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="n">Locator</span><span class="p">,</span> <span class="n">name</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Инициализирует базовый элемент страницы.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Args:</span>
|
|
||||||
<span class="sd"> page: Экземпляр страницы Playwright</span>
|
|
||||||
<span class="sd"> locator: Локатор элемента (строка или объект Locator)</span>
|
|
||||||
<span class="sd"> name: Имя элемента для логирования</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">page</span> <span class="o">=</span> <span class="n">page</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">name</span> <span class="o">=</span> <span class="n">name</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">locator</span><span class="p">:</span> <span class="n">Locator</span>
|
|
||||||
|
|
||||||
<span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">locator</span><span class="p">,</span> <span class="n">Locator</span><span class="p">):</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">locator</span> <span class="o">=</span> <span class="n">locator</span>
|
|
||||||
<span class="k">elif</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">locator</span><span class="p">,</span> <span class="nb">str</span><span class="p">):</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">locator</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">page</span><span class="o">.</span><span class="n">locator</span><span class="p">(</span><span class="n">locator</span><span class="p">)</span>
|
|
||||||
<span class="k">else</span><span class="p">:</span>
|
|
||||||
<span class="k">raise</span> <span class="ne">TypeError</span><span class="p">(</span><span class="s2">"locator value should be string type or Locator type"</span><span class="p">)</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<span class="nd">@property</span>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">type_of</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Возвращает тип элемента (для логирования)."""</span>
|
|
||||||
|
|
||||||
<span class="k">return</span> <span class="s2">"base element"</span>
|
|
||||||
|
|
||||||
<span class="c1"># Действия:</span>
|
|
||||||
<div class="viewcode-block" id="BaseElement.click">
|
|
||||||
<a class="viewcode-back" href="../../elements.html#elements.base_element.BaseElement.click">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">click</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Выполняет клик по элементу."""</span>
|
|
||||||
|
|
||||||
<span class="n">logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Clicking </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">type_of</span><span class="si">}</span><span class="s2"> '</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">name</span><span class="si">}</span><span class="s2">'"</span><span class="p">)</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">locator</span><span class="o">.</span><span class="n">click</span><span class="p">()</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="BaseElement.get_text">
|
|
||||||
<a class="viewcode-back" href="../../elements.html#elements.base_element.BaseElement.get_text">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">get_text</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">index</span><span class="p">:</span> <span class="nb">int</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Возвращает текст элемента по указанному индексу."""</span>
|
|
||||||
|
|
||||||
<span class="n">logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Get text for </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">type_of</span><span class="si">}</span><span class="s2"> '</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">name</span><span class="si">}</span><span class="s2">'"</span><span class="p">)</span>
|
|
||||||
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">locator</span><span class="o">.</span><span class="n">nth</span><span class="p">(</span><span class="n">index</span><span class="p">)</span><span class="o">.</span><span class="n">text_content</span><span class="p">()</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="BaseElement.update_locator">
|
|
||||||
<a class="viewcode-back" href="../../elements.html#elements.base_element.BaseElement.update_locator">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">update_locator</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">new_locator</span><span class="p">:</span> <span class="n">Locator</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Меняет значение локатора для элемента"""</span>
|
|
||||||
|
|
||||||
<span class="n">logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Update locator for </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">type_of</span><span class="si">}</span><span class="s2"> '</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">name</span><span class="si">}</span><span class="s2">'"</span><span class="p">)</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">locator</span> <span class="o">=</span> <span class="n">new_locator</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="BaseElement.wait_for_element">
|
|
||||||
<a class="viewcode-back" href="../../elements.html#elements.base_element.BaseElement.wait_for_element">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">wait_for_element</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">timeout</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">12000</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Ожидает появление элемента в течение заданного времени."""</span>
|
|
||||||
|
|
||||||
<span class="n">logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Wait for </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">type_of</span><span class="si">}</span><span class="s2"> '</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">name</span><span class="si">}</span><span class="s2">'"</span><span class="p">)</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">locator</span><span class="o">.</span><span class="n">wait_for</span><span class="p">(</span><span class="n">timeout</span><span class="o">=</span><span class="n">timeout</span><span class="p">)</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<span class="c1"># Проверки:</span>
|
|
||||||
<div class="viewcode-block" id="BaseElement.check_have_text">
|
|
||||||
<a class="viewcode-back" href="../../elements.html#elements.base_element.BaseElement.check_have_text">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">check_have_text</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">text</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">msg</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Проверяет наличие указанного текста в элементе."""</span>
|
|
||||||
|
|
||||||
<span class="n">logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Check that </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">type_of</span><span class="si">}</span><span class="s2"> '</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">name</span><span class="si">}</span><span class="s2">' has text '</span><span class="si">{</span><span class="n">text</span><span class="si">}</span><span class="s2">'"</span><span class="p">)</span>
|
|
||||||
<span class="n">expect</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">locator</span><span class="p">)</span><span class="o">.</span><span class="n">to_have_text</span><span class="p">(</span><span class="n">text</span><span class="p">),</span> <span class="n">msg</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="BaseElement.check_visibility">
|
|
||||||
<a class="viewcode-back" href="../../elements.html#elements.base_element.BaseElement.check_visibility">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">check_visibility</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">msg</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Проверяет видимость элемента на странице."""</span>
|
|
||||||
|
|
||||||
<span class="n">logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Check that </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">type_of</span><span class="si">}</span><span class="s2"> '</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">name</span><span class="si">}</span><span class="s2">' is present"</span><span class="p">)</span>
|
|
||||||
<span class="c1"># print(f"Check that {self.type_of} '{self.name}' is present")</span>
|
|
||||||
<span class="c1"># print(self.locator)</span>
|
|
||||||
<span class="n">expect</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">locator</span><span class="p">)</span><span class="o">.</span><span class="n">to_be_visible</span><span class="p">(</span><span class="n">visible</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">timeout</span><span class="o">=</span><span class="mi">12000</span><span class="p">),</span> <span class="n">msg</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="BaseElement.is_present">
|
|
||||||
<a class="viewcode-back" href="../../elements.html#elements.base_element.BaseElement.is_present">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">is_present</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">timeout</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">5000</span><span class="p">)</span> <span class="o">-></span> <span class="nb">bool</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Проверяет наличие элемента в течение заданного времени."""</span>
|
|
||||||
|
|
||||||
<span class="n">logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Check that </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">type_of</span><span class="si">}</span><span class="s2"> '</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">name</span><span class="si">}</span><span class="s2">' is present"</span><span class="p">)</span>
|
|
||||||
<span class="k">try</span><span class="p">:</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">locator</span><span class="o">.</span><span class="n">wait_for</span><span class="p">(</span><span class="n">timeout</span><span class="o">=</span><span class="n">timeout</span><span class="p">)</span>
|
|
||||||
<span class="k">except</span> <span class="ne">TimeoutError</span><span class="p">:</span>
|
|
||||||
<span class="k">return</span> <span class="kc">False</span>
|
|
||||||
<span class="k">return</span> <span class="kc">True</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="BaseElement.is_not_present">
|
|
||||||
<a class="viewcode-back" href="../../elements.html#elements.base_element.BaseElement.is_not_present">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">is_not_present</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">timeout</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">5000</span><span class="p">)</span> <span class="o">-></span> <span class="nb">bool</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Проверяет отсутствие элемента в течение заданного времени."""</span>
|
|
||||||
|
|
||||||
<span class="n">logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Check that </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">type_of</span><span class="si">}</span><span class="s2"> '</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">name</span><span class="si">}</span><span class="s2">' is missing"</span><span class="p">)</span>
|
|
||||||
<span class="k">try</span><span class="p">:</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">locator</span><span class="o">.</span><span class="n">wait_for</span><span class="p">(</span><span class="n">timeout</span><span class="o">=</span><span class="n">timeout</span><span class="p">)</span>
|
|
||||||
<span class="k">except</span> <span class="ne">TimeoutError</span><span class="p">:</span>
|
|
||||||
<span class="k">return</span> <span class="kc">True</span>
|
|
||||||
<span class="k">return</span> <span class="kc">False</span></div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</pre></div>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<footer>
|
|
||||||
|
|
||||||
<hr/>
|
|
||||||
|
|
||||||
<div role="contentinfo">
|
|
||||||
<p>© Авторские права 2025, NPO KIS. </p>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
Собрано при помощи <a href="https://www.sphinx-doc.org/">Sphinx</a> с использованием
|
|
||||||
<a href="https://github.com/readthedocs/sphinx_rtd_theme">темы,</a>
|
|
||||||
предоставленной <a href="https://readthedocs.org">Read the Docs</a>.
|
|
||||||
|
|
||||||
|
|
||||||
</footer>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</section>
|
|
||||||
</div>
|
|
||||||
<script>
|
|
||||||
jQuery(function () {
|
|
||||||
SphinxRtdTheme.Navigation.enable(true);
|
|
||||||
});
|
|
||||||
</script>
|
|
||||||
|
|
||||||
</body>
|
|
||||||
</html>
|
|
||||||
|
|
@ -1,142 +0,0 @@
|
||||||
|
|
||||||
|
|
||||||
<!DOCTYPE html>
|
|
||||||
<html class="writer-html5" lang="ru" data-content_root="../../">
|
|
||||||
<head>
|
|
||||||
<meta charset="utf-8" />
|
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
||||||
<title>elements.button_element — документация e-nms-qa-automation 0.1.0</title>
|
|
||||||
<link rel="stylesheet" type="text/css" href="../../_static/pygments.css?v=b86133f3" />
|
|
||||||
<link rel="stylesheet" type="text/css" href="../../_static/css/theme.css?v=e59714d7" />
|
|
||||||
|
|
||||||
|
|
||||||
<script src="../../_static/jquery.js?v=5d32c60e"></script>
|
|
||||||
<script src="../../_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script>
|
|
||||||
<script src="../../_static/documentation_options.js?v=6ff560e8"></script>
|
|
||||||
<script src="../../_static/doctools.js?v=9bcbadda"></script>
|
|
||||||
<script src="../../_static/sphinx_highlight.js?v=dc90522c"></script>
|
|
||||||
<script src="../../_static/translations.js?v=cd1d70c9"></script>
|
|
||||||
<script src="../../_static/js/theme.js"></script>
|
|
||||||
<link rel="index" title="Алфавитный указатель" href="../../genindex.html" />
|
|
||||||
<link rel="search" title="Поиск" href="../../search.html" />
|
|
||||||
</head>
|
|
||||||
|
|
||||||
<body class="wy-body-for-nav">
|
|
||||||
<div class="wy-grid-for-nav">
|
|
||||||
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
|
|
||||||
<div class="wy-side-scroll">
|
|
||||||
<div class="wy-side-nav-search" >
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<a href="../../index.html" class="icon icon-home">
|
|
||||||
e-nms-qa-automation
|
|
||||||
</a>
|
|
||||||
<div role="search">
|
|
||||||
<form id="rtd-search-form" class="wy-form" action="../../search.html" method="get">
|
|
||||||
<input type="text" name="q" placeholder="Поиск в документации" aria-label="Поиск в документации" />
|
|
||||||
<input type="hidden" name="check_keywords" value="yes" />
|
|
||||||
<input type="hidden" name="area" value="default" />
|
|
||||||
</form>
|
|
||||||
</div>
|
|
||||||
</div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Меню навигации">
|
|
||||||
<!-- Local TOC -->
|
|
||||||
<div class="local-toc"></div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</nav>
|
|
||||||
|
|
||||||
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Меню навигации для мобильных устройств" >
|
|
||||||
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
|
|
||||||
<a href="../../index.html">e-nms-qa-automation</a>
|
|
||||||
</nav>
|
|
||||||
|
|
||||||
<div class="wy-nav-content">
|
|
||||||
<div class="rst-content">
|
|
||||||
<div role="navigation" aria-label="Навигация по страницам">
|
|
||||||
<ul class="wy-breadcrumbs">
|
|
||||||
<li><a href="../../index.html" class="icon icon-home" aria-label="Home"></a></li>
|
|
||||||
<li class="breadcrumb-item"><a href="../index.html">Код модуля</a></li>
|
|
||||||
<li class="breadcrumb-item active">elements.button_element</li>
|
|
||||||
<li class="wy-breadcrumbs-aside">
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
<hr/>
|
|
||||||
</div>
|
|
||||||
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
|
|
||||||
<div itemprop="articleBody">
|
|
||||||
|
|
||||||
<h1>Исходный код elements.button_element</h1><div class="highlight"><pre>
|
|
||||||
<span></span><span class="sd">"""Модуль button_element содержит класс для работы с кнопками на странице.</span>
|
|
||||||
|
|
||||||
<span class="sd">Класс Button наследует базовый функционал BaseElement и предоставляет</span>
|
|
||||||
<span class="sd">специфичные методы для работы с элементами типа 'кнопка'.</span>
|
|
||||||
<span class="sd">"""</span>
|
|
||||||
|
|
||||||
<span class="kn">from</span><span class="w"> </span><span class="nn">tools.logger</span><span class="w"> </span><span class="kn">import</span> <span class="n">get_logger</span>
|
|
||||||
<span class="kn">from</span><span class="w"> </span><span class="nn">elements.base_element</span><span class="w"> </span><span class="kn">import</span> <span class="n">BaseElement</span>
|
|
||||||
|
|
||||||
<span class="n">logger</span> <span class="o">=</span> <span class="n">get_logger</span><span class="p">(</span><span class="s2">"BUTTON"</span><span class="p">)</span>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="Button">
|
|
||||||
<a class="viewcode-back" href="../../elements.html#elements.button_element.Button">[документация]</a>
|
|
||||||
<span class="k">class</span><span class="w"> </span><span class="nc">Button</span><span class="p">(</span><span class="n">BaseElement</span><span class="p">):</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Класс для работы с кнопками на странице.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Наследует функциональность BaseElement и добавляет специфичные</span>
|
|
||||||
<span class="sd"> для кнопок методы и проверки.</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
|
|
||||||
<span class="nd">@property</span>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">type_of</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Возвращает тип элемента ('кнопка').</span>
|
|
||||||
|
|
||||||
<span class="sd"> Returns:</span>
|
|
||||||
<span class="sd"> str: Тип элемента - 'кнопка'.</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
|
|
||||||
<span class="k">return</span> <span class="s2">"button"</span>
|
|
||||||
|
|
||||||
<span class="c1"># Действия:</span>
|
|
||||||
<span class="c1"># (Методы действий будут добавлены по мере необходимости)</span>
|
|
||||||
|
|
||||||
<span class="c1"># Проверки:</span>
|
|
||||||
<div class="viewcode-block" id="Button.is_disabled">
|
|
||||||
<a class="viewcode-back" href="../../elements.html#elements.button_element.Button.is_disabled">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">is_disabled</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">bool</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">""" Возвращает значение, отключена ли кнопка (является скрытой) """</span>
|
|
||||||
|
|
||||||
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">locator</span><span class="o">.</span><span class="n">is_disabled</span><span class="p">()</span></div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</pre></div>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<footer>
|
|
||||||
|
|
||||||
<hr/>
|
|
||||||
|
|
||||||
<div role="contentinfo">
|
|
||||||
<p>© Авторские права 2025, NPO KIS. </p>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
Собрано при помощи <a href="https://www.sphinx-doc.org/">Sphinx</a> с использованием
|
|
||||||
<a href="https://github.com/readthedocs/sphinx_rtd_theme">темы,</a>
|
|
||||||
предоставленной <a href="https://readthedocs.org">Read the Docs</a>.
|
|
||||||
|
|
||||||
|
|
||||||
</footer>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</section>
|
|
||||||
</div>
|
|
||||||
<script>
|
|
||||||
jQuery(function () {
|
|
||||||
SphinxRtdTheme.Navigation.enable(true);
|
|
||||||
});
|
|
||||||
</script>
|
|
||||||
|
|
||||||
</body>
|
|
||||||
</html>
|
|
||||||
|
|
@ -1,169 +0,0 @@
|
||||||
|
|
||||||
|
|
||||||
<!DOCTYPE html>
|
|
||||||
<html class="writer-html5" lang="ru" data-content_root="../../">
|
|
||||||
<head>
|
|
||||||
<meta charset="utf-8" />
|
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
||||||
<title>elements.checkbox_element — документация e-nms-qa-automation 0.1.0</title>
|
|
||||||
<link rel="stylesheet" type="text/css" href="../../_static/pygments.css?v=b86133f3" />
|
|
||||||
<link rel="stylesheet" type="text/css" href="../../_static/css/theme.css?v=e59714d7" />
|
|
||||||
|
|
||||||
|
|
||||||
<script src="../../_static/jquery.js?v=5d32c60e"></script>
|
|
||||||
<script src="../../_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script>
|
|
||||||
<script src="../../_static/documentation_options.js?v=6ff560e8"></script>
|
|
||||||
<script src="../../_static/doctools.js?v=9bcbadda"></script>
|
|
||||||
<script src="../../_static/sphinx_highlight.js?v=dc90522c"></script>
|
|
||||||
<script src="../../_static/translations.js?v=cd1d70c9"></script>
|
|
||||||
<script src="../../_static/js/theme.js"></script>
|
|
||||||
<link rel="index" title="Алфавитный указатель" href="../../genindex.html" />
|
|
||||||
<link rel="search" title="Поиск" href="../../search.html" />
|
|
||||||
</head>
|
|
||||||
|
|
||||||
<body class="wy-body-for-nav">
|
|
||||||
<div class="wy-grid-for-nav">
|
|
||||||
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
|
|
||||||
<div class="wy-side-scroll">
|
|
||||||
<div class="wy-side-nav-search" >
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<a href="../../index.html" class="icon icon-home">
|
|
||||||
e-nms-qa-automation
|
|
||||||
</a>
|
|
||||||
<div role="search">
|
|
||||||
<form id="rtd-search-form" class="wy-form" action="../../search.html" method="get">
|
|
||||||
<input type="text" name="q" placeholder="Поиск в документации" aria-label="Поиск в документации" />
|
|
||||||
<input type="hidden" name="check_keywords" value="yes" />
|
|
||||||
<input type="hidden" name="area" value="default" />
|
|
||||||
</form>
|
|
||||||
</div>
|
|
||||||
</div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Меню навигации">
|
|
||||||
<!-- Local TOC -->
|
|
||||||
<div class="local-toc"></div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</nav>
|
|
||||||
|
|
||||||
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Меню навигации для мобильных устройств" >
|
|
||||||
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
|
|
||||||
<a href="../../index.html">e-nms-qa-automation</a>
|
|
||||||
</nav>
|
|
||||||
|
|
||||||
<div class="wy-nav-content">
|
|
||||||
<div class="rst-content">
|
|
||||||
<div role="navigation" aria-label="Навигация по страницам">
|
|
||||||
<ul class="wy-breadcrumbs">
|
|
||||||
<li><a href="../../index.html" class="icon icon-home" aria-label="Home"></a></li>
|
|
||||||
<li class="breadcrumb-item"><a href="../index.html">Код модуля</a></li>
|
|
||||||
<li class="breadcrumb-item active">elements.checkbox_element</li>
|
|
||||||
<li class="wy-breadcrumbs-aside">
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
<hr/>
|
|
||||||
</div>
|
|
||||||
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
|
|
||||||
<div itemprop="articleBody">
|
|
||||||
|
|
||||||
<h1>Исходный код elements.checkbox_element</h1><div class="highlight"><pre>
|
|
||||||
<span></span><span class="sd">"""Модуль checkbox_element содержит класс для работы с чекбоксами.</span>
|
|
||||||
|
|
||||||
<span class="sd">Класс Checkbox наследует базовый функционал BaseElement и добавляет</span>
|
|
||||||
<span class="sd">специфичные методы для работы с элементами типа 'чекбокс'.</span>
|
|
||||||
<span class="sd">"""</span>
|
|
||||||
|
|
||||||
<span class="kn">from</span><span class="w"> </span><span class="nn">tools.logger</span><span class="w"> </span><span class="kn">import</span> <span class="n">get_logger</span>
|
|
||||||
<span class="kn">from</span><span class="w"> </span><span class="nn">elements.base_element</span><span class="w"> </span><span class="kn">import</span> <span class="n">BaseElement</span>
|
|
||||||
|
|
||||||
<span class="n">logger</span> <span class="o">=</span> <span class="n">get_logger</span><span class="p">(</span><span class="s2">"CHECKBOX"</span><span class="p">)</span>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="Checkbox">
|
|
||||||
<a class="viewcode-back" href="../../elements.html#elements.checkbox_element.Checkbox">[документация]</a>
|
|
||||||
<span class="k">class</span><span class="w"> </span><span class="nc">Checkbox</span><span class="p">(</span><span class="n">BaseElement</span><span class="p">):</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Класс для работы с чекбоксами на странице.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Наследует функциональность BaseElement и добавляет методы для</span>
|
|
||||||
<span class="sd"> взаимодействия с чекбоксами и проверки их состояния.</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
|
|
||||||
<span class="nd">@property</span>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">type_of</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Возвращает тип элемента ('чекбокс').</span>
|
|
||||||
|
|
||||||
<span class="sd"> Returns:</span>
|
|
||||||
<span class="sd"> str: Тип элемента - 'чекбокс'.</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
|
|
||||||
<span class="k">return</span> <span class="s2">"checkbox"</span>
|
|
||||||
|
|
||||||
<span class="c1"># Действия:</span>
|
|
||||||
<div class="viewcode-block" id="Checkbox.check">
|
|
||||||
<a class="viewcode-back" href="../../elements.html#elements.checkbox_element.Checkbox.check">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">check</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">force</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Отмечает чекбокс (устанавливает галочку)."""</span>
|
|
||||||
|
|
||||||
<span class="n">logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Checking checkbox '</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">name</span><span class="si">}</span><span class="s2">'"</span><span class="p">)</span>
|
|
||||||
<span class="k">if</span> <span class="n">force</span><span class="p">:</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">locator</span><span class="o">.</span><span class="n">check</span><span class="p">(</span><span class="n">force</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
|
|
||||||
<span class="k">else</span><span class="p">:</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">locator</span><span class="o">.</span><span class="n">check</span><span class="p">()</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="Checkbox.uncheck">
|
|
||||||
<a class="viewcode-back" href="../../elements.html#elements.checkbox_element.Checkbox.uncheck">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">uncheck</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">force</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Снимает отметку с чекбокса (убирает галочку)."""</span>
|
|
||||||
|
|
||||||
<span class="n">logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Unchecking checkbox '</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">name</span><span class="si">}</span><span class="s2">'"</span><span class="p">)</span>
|
|
||||||
<span class="k">if</span> <span class="n">force</span><span class="p">:</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">locator</span><span class="o">.</span><span class="n">uncheck</span><span class="p">(</span><span class="n">force</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
|
|
||||||
<span class="k">else</span><span class="p">:</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">locator</span><span class="o">.</span><span class="n">uncheck</span><span class="p">()</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<span class="c1"># Проверки:</span>
|
|
||||||
<div class="viewcode-block" id="Checkbox.is_checked">
|
|
||||||
<a class="viewcode-back" href="../../elements.html#elements.checkbox_element.Checkbox.is_checked">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">is_checked</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">bool</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Проверяет, отмечен ли чекбокс.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Returns:</span>
|
|
||||||
<span class="sd"> bool: True если отмечен, False если нет.</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
|
|
||||||
<span class="n">logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Checking if checkbox '</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">name</span><span class="si">}</span><span class="s2">' is checked"</span><span class="p">)</span>
|
|
||||||
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">locator</span><span class="o">.</span><span class="n">is_checked</span><span class="p">()</span></div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</pre></div>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<footer>
|
|
||||||
|
|
||||||
<hr/>
|
|
||||||
|
|
||||||
<div role="contentinfo">
|
|
||||||
<p>© Авторские права 2025, NPO KIS. </p>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
Собрано при помощи <a href="https://www.sphinx-doc.org/">Sphinx</a> с использованием
|
|
||||||
<a href="https://github.com/readthedocs/sphinx_rtd_theme">темы,</a>
|
|
||||||
предоставленной <a href="https://readthedocs.org">Read the Docs</a>.
|
|
||||||
|
|
||||||
|
|
||||||
</footer>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</section>
|
|
||||||
</div>
|
|
||||||
<script>
|
|
||||||
jQuery(function () {
|
|
||||||
SphinxRtdTheme.Navigation.enable(true);
|
|
||||||
});
|
|
||||||
</script>
|
|
||||||
|
|
||||||
</body>
|
|
||||||
</html>
|
|
||||||
|
|
@ -1,145 +0,0 @@
|
||||||
|
|
||||||
|
|
||||||
<!DOCTYPE html>
|
|
||||||
<html class="writer-html5" lang="ru" data-content_root="../../">
|
|
||||||
<head>
|
|
||||||
<meta charset="utf-8" />
|
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
||||||
<title>elements.icon_element — документация e-nms-qa-automation 0.1.0</title>
|
|
||||||
<link rel="stylesheet" type="text/css" href="../../_static/pygments.css?v=b86133f3" />
|
|
||||||
<link rel="stylesheet" type="text/css" href="../../_static/css/theme.css?v=e59714d7" />
|
|
||||||
|
|
||||||
|
|
||||||
<script src="../../_static/jquery.js?v=5d32c60e"></script>
|
|
||||||
<script src="../../_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script>
|
|
||||||
<script src="../../_static/documentation_options.js?v=6ff560e8"></script>
|
|
||||||
<script src="../../_static/doctools.js?v=9bcbadda"></script>
|
|
||||||
<script src="../../_static/sphinx_highlight.js?v=dc90522c"></script>
|
|
||||||
<script src="../../_static/translations.js?v=cd1d70c9"></script>
|
|
||||||
<script src="../../_static/js/theme.js"></script>
|
|
||||||
<link rel="index" title="Алфавитный указатель" href="../../genindex.html" />
|
|
||||||
<link rel="search" title="Поиск" href="../../search.html" />
|
|
||||||
</head>
|
|
||||||
|
|
||||||
<body class="wy-body-for-nav">
|
|
||||||
<div class="wy-grid-for-nav">
|
|
||||||
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
|
|
||||||
<div class="wy-side-scroll">
|
|
||||||
<div class="wy-side-nav-search" >
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<a href="../../index.html" class="icon icon-home">
|
|
||||||
e-nms-qa-automation
|
|
||||||
</a>
|
|
||||||
<div role="search">
|
|
||||||
<form id="rtd-search-form" class="wy-form" action="../../search.html" method="get">
|
|
||||||
<input type="text" name="q" placeholder="Поиск в документации" aria-label="Поиск в документации" />
|
|
||||||
<input type="hidden" name="check_keywords" value="yes" />
|
|
||||||
<input type="hidden" name="area" value="default" />
|
|
||||||
</form>
|
|
||||||
</div>
|
|
||||||
</div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Меню навигации">
|
|
||||||
<!-- Local TOC -->
|
|
||||||
<div class="local-toc"></div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</nav>
|
|
||||||
|
|
||||||
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Меню навигации для мобильных устройств" >
|
|
||||||
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
|
|
||||||
<a href="../../index.html">e-nms-qa-automation</a>
|
|
||||||
</nav>
|
|
||||||
|
|
||||||
<div class="wy-nav-content">
|
|
||||||
<div class="rst-content">
|
|
||||||
<div role="navigation" aria-label="Навигация по страницам">
|
|
||||||
<ul class="wy-breadcrumbs">
|
|
||||||
<li><a href="../../index.html" class="icon icon-home" aria-label="Home"></a></li>
|
|
||||||
<li class="breadcrumb-item"><a href="../index.html">Код модуля</a></li>
|
|
||||||
<li class="breadcrumb-item active">elements.icon_element</li>
|
|
||||||
<li class="wy-breadcrumbs-aside">
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
<hr/>
|
|
||||||
</div>
|
|
||||||
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
|
|
||||||
<div itemprop="articleBody">
|
|
||||||
|
|
||||||
<h1>Исходный код elements.icon_element</h1><div class="highlight"><pre>
|
|
||||||
<span></span><span class="sd">"""Модуль icon_element содержит класс для работы с элементом типа иконка.</span>
|
|
||||||
|
|
||||||
<span class="sd">Класс Icon наследует базовый функционал BaseElement и предоставляет</span>
|
|
||||||
<span class="sd">методы для работы с текстовыми элементами на странице.</span>
|
|
||||||
<span class="sd">"""</span>
|
|
||||||
|
|
||||||
<span class="kn">from</span><span class="w"> </span><span class="nn">tools.logger</span><span class="w"> </span><span class="kn">import</span> <span class="n">get_logger</span>
|
|
||||||
<span class="kn">from</span><span class="w"> </span><span class="nn">elements.base_element</span><span class="w"> </span><span class="kn">import</span> <span class="n">BaseElement</span>
|
|
||||||
|
|
||||||
<span class="n">logger</span> <span class="o">=</span> <span class="n">get_logger</span><span class="p">(</span><span class="s2">"ICON"</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="Icon">
|
|
||||||
<a class="viewcode-back" href="../../elements.html#elements.icon_element.Icon">[документация]</a>
|
|
||||||
<span class="k">class</span><span class="w"> </span><span class="nc">Icon</span><span class="p">(</span><span class="n">BaseElement</span><span class="p">):</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Класс для работы с элементом типа иконка.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Наследует функциональность BaseElement и добавляет специфичные</span>
|
|
||||||
<span class="sd"> методы для взаимодействия с элементом типа иконка.</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
|
|
||||||
<span class="nd">@property</span>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">type_of</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Возвращает тип элемента ('иконка').</span>
|
|
||||||
|
|
||||||
<span class="sd"> Returns:</span>
|
|
||||||
<span class="sd"> str: Тип элемента - 'иконка'.</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
|
|
||||||
<span class="k">return</span> <span class="s2">"icon"</span>
|
|
||||||
|
|
||||||
<span class="c1"># Действия:</span>
|
|
||||||
<span class="c1"># (Методы действий будут добавлены по мере необходимости)</span>
|
|
||||||
|
|
||||||
<span class="c1"># Проверки:</span>
|
|
||||||
<div class="viewcode-block" id="Icon.is_password_hidden">
|
|
||||||
<a class="viewcode-back" href="../../elements.html#elements.icon_element.Icon.is_password_hidden">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">is_password_hidden</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">bool</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Проверяет состояние иконки скрытия пароля."""</span>
|
|
||||||
|
|
||||||
<span class="n">state_text</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">locator</span><span class="o">.</span><span class="n">text_content</span><span class="p">()</span>
|
|
||||||
<span class="n">state</span> <span class="o">=</span> <span class="kc">True</span>
|
|
||||||
<span class="k">if</span> <span class="n">state_text</span> <span class="o">==</span> <span class="s2">"visibility"</span><span class="p">:</span>
|
|
||||||
<span class="n">state</span> <span class="o">=</span> <span class="kc">False</span>
|
|
||||||
<span class="k">return</span> <span class="n">state</span></div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</pre></div>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<footer>
|
|
||||||
|
|
||||||
<hr/>
|
|
||||||
|
|
||||||
<div role="contentinfo">
|
|
||||||
<p>© Авторские права 2025, NPO KIS. </p>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
Собрано при помощи <a href="https://www.sphinx-doc.org/">Sphinx</a> с использованием
|
|
||||||
<a href="https://github.com/readthedocs/sphinx_rtd_theme">темы,</a>
|
|
||||||
предоставленной <a href="https://readthedocs.org">Read the Docs</a>.
|
|
||||||
|
|
||||||
|
|
||||||
</footer>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</section>
|
|
||||||
</div>
|
|
||||||
<script>
|
|
||||||
jQuery(function () {
|
|
||||||
SphinxRtdTheme.Navigation.enable(true);
|
|
||||||
});
|
|
||||||
</script>
|
|
||||||
|
|
||||||
</body>
|
|
||||||
</html>
|
|
||||||
|
|
@ -1,136 +0,0 @@
|
||||||
|
|
||||||
|
|
||||||
<!DOCTYPE html>
|
|
||||||
<html class="writer-html5" lang="ru" data-content_root="../../">
|
|
||||||
<head>
|
|
||||||
<meta charset="utf-8" />
|
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
||||||
<title>elements.tab_button_element — документация e-nms-qa-automation 0.1.0</title>
|
|
||||||
<link rel="stylesheet" type="text/css" href="../../_static/pygments.css?v=b86133f3" />
|
|
||||||
<link rel="stylesheet" type="text/css" href="../../_static/css/theme.css?v=e59714d7" />
|
|
||||||
|
|
||||||
|
|
||||||
<script src="../../_static/jquery.js?v=5d32c60e"></script>
|
|
||||||
<script src="../../_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script>
|
|
||||||
<script src="../../_static/documentation_options.js?v=6ff560e8"></script>
|
|
||||||
<script src="../../_static/doctools.js?v=9bcbadda"></script>
|
|
||||||
<script src="../../_static/sphinx_highlight.js?v=dc90522c"></script>
|
|
||||||
<script src="../../_static/translations.js?v=cd1d70c9"></script>
|
|
||||||
<script src="../../_static/js/theme.js"></script>
|
|
||||||
<link rel="index" title="Алфавитный указатель" href="../../genindex.html" />
|
|
||||||
<link rel="search" title="Поиск" href="../../search.html" />
|
|
||||||
</head>
|
|
||||||
|
|
||||||
<body class="wy-body-for-nav">
|
|
||||||
<div class="wy-grid-for-nav">
|
|
||||||
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
|
|
||||||
<div class="wy-side-scroll">
|
|
||||||
<div class="wy-side-nav-search" >
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<a href="../../index.html" class="icon icon-home">
|
|
||||||
e-nms-qa-automation
|
|
||||||
</a>
|
|
||||||
<div role="search">
|
|
||||||
<form id="rtd-search-form" class="wy-form" action="../../search.html" method="get">
|
|
||||||
<input type="text" name="q" placeholder="Поиск в документации" aria-label="Поиск в документации" />
|
|
||||||
<input type="hidden" name="check_keywords" value="yes" />
|
|
||||||
<input type="hidden" name="area" value="default" />
|
|
||||||
</form>
|
|
||||||
</div>
|
|
||||||
</div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Меню навигации">
|
|
||||||
<!-- Local TOC -->
|
|
||||||
<div class="local-toc"></div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</nav>
|
|
||||||
|
|
||||||
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Меню навигации для мобильных устройств" >
|
|
||||||
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
|
|
||||||
<a href="../../index.html">e-nms-qa-automation</a>
|
|
||||||
</nav>
|
|
||||||
|
|
||||||
<div class="wy-nav-content">
|
|
||||||
<div class="rst-content">
|
|
||||||
<div role="navigation" aria-label="Навигация по страницам">
|
|
||||||
<ul class="wy-breadcrumbs">
|
|
||||||
<li><a href="../../index.html" class="icon icon-home" aria-label="Home"></a></li>
|
|
||||||
<li class="breadcrumb-item"><a href="../index.html">Код модуля</a></li>
|
|
||||||
<li class="breadcrumb-item active">elements.tab_button_element</li>
|
|
||||||
<li class="wy-breadcrumbs-aside">
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
<hr/>
|
|
||||||
</div>
|
|
||||||
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
|
|
||||||
<div itemprop="articleBody">
|
|
||||||
|
|
||||||
<h1>Исходный код elements.tab_button_element</h1><div class="highlight"><pre>
|
|
||||||
<span></span><span class="sd">"""Модуль tab_button_element содержит класс для работы с кнопками типа v-tabs на странице.</span>
|
|
||||||
|
|
||||||
<span class="sd">Класс TabButton наследует базовый функционал BaseElement и предоставляет</span>
|
|
||||||
<span class="sd">специфичные методы для работы с элементами.</span>
|
|
||||||
<span class="sd">"""</span>
|
|
||||||
|
|
||||||
<span class="kn">from</span><span class="w"> </span><span class="nn">tools.logger</span><span class="w"> </span><span class="kn">import</span> <span class="n">get_logger</span>
|
|
||||||
<span class="kn">from</span><span class="w"> </span><span class="nn">elements.base_element</span><span class="w"> </span><span class="kn">import</span> <span class="n">BaseElement</span>
|
|
||||||
|
|
||||||
<span class="n">logger</span> <span class="o">=</span> <span class="n">get_logger</span><span class="p">(</span><span class="s2">"BUTTON_TAB"</span><span class="p">)</span>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="TabButton">
|
|
||||||
<a class="viewcode-back" href="../../elements.html#elements.tab_button_element.TabButton">[документация]</a>
|
|
||||||
<span class="k">class</span><span class="w"> </span><span class="nc">TabButton</span><span class="p">(</span><span class="n">BaseElement</span><span class="p">):</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Класс для работы с кнопками типа v-tabs на странице.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Наследует функциональность BaseElement и добавляет специфичные</span>
|
|
||||||
<span class="sd"> для кнопок методы и проверки.</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
|
|
||||||
<span class="nd">@property</span>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">type_of</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Возвращает тип элемента ('кнопка-tab').</span>
|
|
||||||
|
|
||||||
<span class="sd"> Returns:</span>
|
|
||||||
<span class="sd"> str: Тип элемента - 'кнопка-tab'.</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
|
|
||||||
<span class="k">return</span> <span class="s2">"button_tab"</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<span class="c1"># Действия:</span>
|
|
||||||
<span class="c1"># (Методы действий будут добавлены по мере необходимости)</span>
|
|
||||||
|
|
||||||
<span class="c1"># Проверки:</span>
|
|
||||||
<span class="c1"># (Методы проверок будут добавлены по мере необходимости)</span>
|
|
||||||
</pre></div>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<footer>
|
|
||||||
|
|
||||||
<hr/>
|
|
||||||
|
|
||||||
<div role="contentinfo">
|
|
||||||
<p>© Авторские права 2025, NPO KIS. </p>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
Собрано при помощи <a href="https://www.sphinx-doc.org/">Sphinx</a> с использованием
|
|
||||||
<a href="https://github.com/readthedocs/sphinx_rtd_theme">темы,</a>
|
|
||||||
предоставленной <a href="https://readthedocs.org">Read the Docs</a>.
|
|
||||||
|
|
||||||
|
|
||||||
</footer>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</section>
|
|
||||||
</div>
|
|
||||||
<script>
|
|
||||||
jQuery(function () {
|
|
||||||
SphinxRtdTheme.Navigation.enable(true);
|
|
||||||
});
|
|
||||||
</script>
|
|
||||||
|
|
||||||
</body>
|
|
||||||
</html>
|
|
||||||
|
|
@ -1,135 +0,0 @@
|
||||||
|
|
||||||
|
|
||||||
<!DOCTYPE html>
|
|
||||||
<html class="writer-html5" lang="ru" data-content_root="../../">
|
|
||||||
<head>
|
|
||||||
<meta charset="utf-8" />
|
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
||||||
<title>elements.text_element — документация e-nms-qa-automation 0.1.0</title>
|
|
||||||
<link rel="stylesheet" type="text/css" href="../../_static/pygments.css?v=b86133f3" />
|
|
||||||
<link rel="stylesheet" type="text/css" href="../../_static/css/theme.css?v=e59714d7" />
|
|
||||||
|
|
||||||
|
|
||||||
<script src="../../_static/jquery.js?v=5d32c60e"></script>
|
|
||||||
<script src="../../_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script>
|
|
||||||
<script src="../../_static/documentation_options.js?v=6ff560e8"></script>
|
|
||||||
<script src="../../_static/doctools.js?v=9bcbadda"></script>
|
|
||||||
<script src="../../_static/sphinx_highlight.js?v=dc90522c"></script>
|
|
||||||
<script src="../../_static/translations.js?v=cd1d70c9"></script>
|
|
||||||
<script src="../../_static/js/theme.js"></script>
|
|
||||||
<link rel="index" title="Алфавитный указатель" href="../../genindex.html" />
|
|
||||||
<link rel="search" title="Поиск" href="../../search.html" />
|
|
||||||
</head>
|
|
||||||
|
|
||||||
<body class="wy-body-for-nav">
|
|
||||||
<div class="wy-grid-for-nav">
|
|
||||||
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
|
|
||||||
<div class="wy-side-scroll">
|
|
||||||
<div class="wy-side-nav-search" >
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<a href="../../index.html" class="icon icon-home">
|
|
||||||
e-nms-qa-automation
|
|
||||||
</a>
|
|
||||||
<div role="search">
|
|
||||||
<form id="rtd-search-form" class="wy-form" action="../../search.html" method="get">
|
|
||||||
<input type="text" name="q" placeholder="Поиск в документации" aria-label="Поиск в документации" />
|
|
||||||
<input type="hidden" name="check_keywords" value="yes" />
|
|
||||||
<input type="hidden" name="area" value="default" />
|
|
||||||
</form>
|
|
||||||
</div>
|
|
||||||
</div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Меню навигации">
|
|
||||||
<!-- Local TOC -->
|
|
||||||
<div class="local-toc"></div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</nav>
|
|
||||||
|
|
||||||
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Меню навигации для мобильных устройств" >
|
|
||||||
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
|
|
||||||
<a href="../../index.html">e-nms-qa-automation</a>
|
|
||||||
</nav>
|
|
||||||
|
|
||||||
<div class="wy-nav-content">
|
|
||||||
<div class="rst-content">
|
|
||||||
<div role="navigation" aria-label="Навигация по страницам">
|
|
||||||
<ul class="wy-breadcrumbs">
|
|
||||||
<li><a href="../../index.html" class="icon icon-home" aria-label="Home"></a></li>
|
|
||||||
<li class="breadcrumb-item"><a href="../index.html">Код модуля</a></li>
|
|
||||||
<li class="breadcrumb-item active">elements.text_element</li>
|
|
||||||
<li class="wy-breadcrumbs-aside">
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
<hr/>
|
|
||||||
</div>
|
|
||||||
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
|
|
||||||
<div itemprop="articleBody">
|
|
||||||
|
|
||||||
<h1>Исходный код elements.text_element</h1><div class="highlight"><pre>
|
|
||||||
<span></span><span class="sd">"""Модуль text_element содержит класс для работы с текстовыми элементами.</span>
|
|
||||||
|
|
||||||
<span class="sd">Класс Text наследует базовый функционал BaseElement и предоставляет</span>
|
|
||||||
<span class="sd">методы для работы с текстовыми элементами на странице.</span>
|
|
||||||
<span class="sd">"""</span>
|
|
||||||
|
|
||||||
<span class="kn">from</span><span class="w"> </span><span class="nn">tools.logger</span><span class="w"> </span><span class="kn">import</span> <span class="n">get_logger</span>
|
|
||||||
<span class="kn">from</span><span class="w"> </span><span class="nn">elements.base_element</span><span class="w"> </span><span class="kn">import</span> <span class="n">BaseElement</span>
|
|
||||||
|
|
||||||
<span class="n">logger</span> <span class="o">=</span> <span class="n">get_logger</span><span class="p">(</span><span class="s2">"TEXT"</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="Text">
|
|
||||||
<a class="viewcode-back" href="../../elements.html#elements.text_element.Text">[документация]</a>
|
|
||||||
<span class="k">class</span><span class="w"> </span><span class="nc">Text</span><span class="p">(</span><span class="n">BaseElement</span><span class="p">):</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Класс для работы с текстовыми элементами страницы.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Наследует функциональность BaseElement и добавляет специфичные</span>
|
|
||||||
<span class="sd"> методы для взаимодействия с текстовыми элементами.</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
|
|
||||||
<span class="nd">@property</span>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">type_of</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Возвращает тип элемента ('текст').</span>
|
|
||||||
|
|
||||||
<span class="sd"> Returns:</span>
|
|
||||||
<span class="sd"> str: Тип элемента - 'текст'.</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
|
|
||||||
<span class="k">return</span> <span class="s2">"text"</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<span class="c1"># Действия:</span>
|
|
||||||
<span class="c1"># (Методы действий будут добавлены по мере необходимости)</span>
|
|
||||||
|
|
||||||
<span class="c1"># Проверки:</span>
|
|
||||||
<span class="c1"># (Методы проверок будут добавлены по мере необходимости)</span>
|
|
||||||
</pre></div>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<footer>
|
|
||||||
|
|
||||||
<hr/>
|
|
||||||
|
|
||||||
<div role="contentinfo">
|
|
||||||
<p>© Авторские права 2025, NPO KIS. </p>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
Собрано при помощи <a href="https://www.sphinx-doc.org/">Sphinx</a> с использованием
|
|
||||||
<a href="https://github.com/readthedocs/sphinx_rtd_theme">темы,</a>
|
|
||||||
предоставленной <a href="https://readthedocs.org">Read the Docs</a>.
|
|
||||||
|
|
||||||
|
|
||||||
</footer>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</section>
|
|
||||||
</div>
|
|
||||||
<script>
|
|
||||||
jQuery(function () {
|
|
||||||
SphinxRtdTheme.Navigation.enable(true);
|
|
||||||
});
|
|
||||||
</script>
|
|
||||||
|
|
||||||
</body>
|
|
||||||
</html>
|
|
||||||
|
|
@ -1,245 +0,0 @@
|
||||||
|
|
||||||
|
|
||||||
<!DOCTYPE html>
|
|
||||||
<html class="writer-html5" lang="ru" data-content_root="../../">
|
|
||||||
<head>
|
|
||||||
<meta charset="utf-8" />
|
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
||||||
<title>elements.text_input_element — документация e-nms-qa-automation 0.1.0</title>
|
|
||||||
<link rel="stylesheet" type="text/css" href="../../_static/pygments.css?v=b86133f3" />
|
|
||||||
<link rel="stylesheet" type="text/css" href="../../_static/css/theme.css?v=e59714d7" />
|
|
||||||
|
|
||||||
|
|
||||||
<script src="../../_static/jquery.js?v=5d32c60e"></script>
|
|
||||||
<script src="../../_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script>
|
|
||||||
<script src="../../_static/documentation_options.js?v=6ff560e8"></script>
|
|
||||||
<script src="../../_static/doctools.js?v=9bcbadda"></script>
|
|
||||||
<script src="../../_static/sphinx_highlight.js?v=dc90522c"></script>
|
|
||||||
<script src="../../_static/translations.js?v=cd1d70c9"></script>
|
|
||||||
<script src="../../_static/js/theme.js"></script>
|
|
||||||
<link rel="index" title="Алфавитный указатель" href="../../genindex.html" />
|
|
||||||
<link rel="search" title="Поиск" href="../../search.html" />
|
|
||||||
</head>
|
|
||||||
|
|
||||||
<body class="wy-body-for-nav">
|
|
||||||
<div class="wy-grid-for-nav">
|
|
||||||
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
|
|
||||||
<div class="wy-side-scroll">
|
|
||||||
<div class="wy-side-nav-search" >
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<a href="../../index.html" class="icon icon-home">
|
|
||||||
e-nms-qa-automation
|
|
||||||
</a>
|
|
||||||
<div role="search">
|
|
||||||
<form id="rtd-search-form" class="wy-form" action="../../search.html" method="get">
|
|
||||||
<input type="text" name="q" placeholder="Поиск в документации" aria-label="Поиск в документации" />
|
|
||||||
<input type="hidden" name="check_keywords" value="yes" />
|
|
||||||
<input type="hidden" name="area" value="default" />
|
|
||||||
</form>
|
|
||||||
</div>
|
|
||||||
</div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Меню навигации">
|
|
||||||
<!-- Local TOC -->
|
|
||||||
<div class="local-toc"></div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</nav>
|
|
||||||
|
|
||||||
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Меню навигации для мобильных устройств" >
|
|
||||||
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
|
|
||||||
<a href="../../index.html">e-nms-qa-automation</a>
|
|
||||||
</nav>
|
|
||||||
|
|
||||||
<div class="wy-nav-content">
|
|
||||||
<div class="rst-content">
|
|
||||||
<div role="navigation" aria-label="Навигация по страницам">
|
|
||||||
<ul class="wy-breadcrumbs">
|
|
||||||
<li><a href="../../index.html" class="icon icon-home" aria-label="Home"></a></li>
|
|
||||||
<li class="breadcrumb-item"><a href="../index.html">Код модуля</a></li>
|
|
||||||
<li class="breadcrumb-item active">elements.text_input_element</li>
|
|
||||||
<li class="wy-breadcrumbs-aside">
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
<hr/>
|
|
||||||
</div>
|
|
||||||
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
|
|
||||||
<div itemprop="articleBody">
|
|
||||||
|
|
||||||
<h1>Исходный код elements.text_input_element</h1><div class="highlight"><pre>
|
|
||||||
<span></span><span class="sd">"""Модуль text_input_element содержит класс для работы с текстовыми полями ввода.</span>
|
|
||||||
|
|
||||||
<span class="sd">Класс TextInput наследует базовый функционал BaseElement и предоставляет</span>
|
|
||||||
<span class="sd">методы для взаимодействия с текстовыми полями ввода на странице.</span>
|
|
||||||
<span class="sd">"""</span>
|
|
||||||
|
|
||||||
<span class="kn">from</span><span class="w"> </span><span class="nn">playwright.sync_api</span><span class="w"> </span><span class="kn">import</span> <span class="n">expect</span>
|
|
||||||
<span class="kn">from</span><span class="w"> </span><span class="nn">tools.logger</span><span class="w"> </span><span class="kn">import</span> <span class="n">get_logger</span>
|
|
||||||
<span class="kn">from</span><span class="w"> </span><span class="nn">elements.base_element</span><span class="w"> </span><span class="kn">import</span> <span class="n">BaseElement</span>
|
|
||||||
|
|
||||||
<span class="n">logger</span> <span class="o">=</span> <span class="n">get_logger</span><span class="p">(</span><span class="s2">"TEXT_INPUT"</span><span class="p">)</span>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="TextInput">
|
|
||||||
<a class="viewcode-back" href="../../elements.html#elements.text_input_element.TextInput">[документация]</a>
|
|
||||||
<span class="k">class</span><span class="w"> </span><span class="nc">TextInput</span><span class="p">(</span><span class="n">BaseElement</span><span class="p">):</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Класс для работы с текстовыми полями ввода.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Наследует функциональность BaseElement и добавляет методы</span>
|
|
||||||
<span class="sd"> для ввода, очистки и проверки текстовых полей.</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
|
|
||||||
<span class="nd">@property</span>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">type_of</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Возвращает тип элемента ('текстовое поле ввода').</span>
|
|
||||||
|
|
||||||
<span class="sd"> Returns:</span>
|
|
||||||
<span class="sd"> str: Тип элемента - 'текстовое поле ввода'.</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
|
|
||||||
<span class="k">return</span> <span class="s2">"text input"</span>
|
|
||||||
|
|
||||||
<span class="c1"># Действия:</span>
|
|
||||||
<div class="viewcode-block" id="TextInput.get_input_value">
|
|
||||||
<a class="viewcode-back" href="../../elements.html#elements.text_input_element.TextInput.get_input_value">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">get_input_value</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Возвращает текущее значение поля ввода.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Returns:</span>
|
|
||||||
<span class="sd"> str: Текущее значение в поле.</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
|
|
||||||
<span class="n">logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="sa">f</span><span class="s1">'Getting value from text input "</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">name</span><span class="si">}</span><span class="s1">"'</span><span class="p">)</span>
|
|
||||||
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">locator</span><span class="o">.</span><span class="n">input_value</span><span class="p">()</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="TextInput.get_input_type">
|
|
||||||
<a class="viewcode-back" href="../../elements.html#elements.text_input_element.TextInput.get_input_type">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">get_input_type</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Возвращает значение аттрибута type поля ввода.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Returns:</span>
|
|
||||||
<span class="sd"> str: Значение аттрибута type.</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
|
|
||||||
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">locator</span><span class="o">.</span><span class="n">get_attribute</span><span class="p">(</span><span class="s2">"type"</span><span class="p">)</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="TextInput.decrease_value">
|
|
||||||
<a class="viewcode-back" href="../../elements.html#elements.text_input_element.TextInput.decrease_value">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">decrease_value</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Уменьшение на единицу значения поля настройки с помощью стрелочки вниз."""</span>
|
|
||||||
|
|
||||||
<span class="n">logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="sa">f</span><span class="s1">'Decrease input value for "</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">name</span><span class="si">}</span><span class="s1">"'</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="n">attr</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">locator</span><span class="o">.</span><span class="n">get_attribute</span><span class="p">(</span><span class="s2">"type"</span><span class="p">)</span>
|
|
||||||
<span class="k">assert</span> <span class="n">attr</span><span class="o">==</span><span class="s2">"number"</span><span class="p">,</span> <span class="s2">"Field type should be number to increase value"</span>
|
|
||||||
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">locator</span><span class="o">.</span><span class="n">hover</span><span class="p">()</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">locator</span><span class="o">.</span><span class="n">wait_for</span><span class="p">(</span><span class="n">timeout</span><span class="o">=</span><span class="mi">500</span><span class="p">)</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">locator</span><span class="o">.</span><span class="n">press</span><span class="p">(</span><span class="s1">'ArrowDown'</span><span class="p">)</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">locator</span><span class="o">.</span><span class="n">wait_for</span><span class="p">(</span><span class="n">timeout</span><span class="o">=</span><span class="mi">500</span><span class="p">)</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="TextInput.increase_value">
|
|
||||||
<a class="viewcode-back" href="../../elements.html#elements.text_input_element.TextInput.increase_value">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">increase_value</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Увеличение на единицу значения поля настройки с помощью стрелочки вверх."""</span>
|
|
||||||
|
|
||||||
<span class="n">logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="sa">f</span><span class="s1">'Increase input value for "</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">name</span><span class="si">}</span><span class="s1">"'</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="n">attr</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">locator</span><span class="o">.</span><span class="n">get_attribute</span><span class="p">(</span><span class="s2">"type"</span><span class="p">)</span>
|
|
||||||
<span class="k">assert</span> <span class="n">attr</span><span class="o">==</span><span class="s2">"number"</span><span class="p">,</span> <span class="s2">"Field type should be number to increase value"</span>
|
|
||||||
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">locator</span><span class="o">.</span><span class="n">hover</span><span class="p">()</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">locator</span><span class="o">.</span><span class="n">wait_for</span><span class="p">(</span><span class="n">timeout</span><span class="o">=</span><span class="mi">500</span><span class="p">)</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">locator</span><span class="o">.</span><span class="n">press</span><span class="p">(</span><span class="s1">'ArrowUp'</span><span class="p">)</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">locator</span><span class="o">.</span><span class="n">wait_for</span><span class="p">(</span><span class="n">timeout</span><span class="o">=</span><span class="mi">500</span><span class="p">)</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="TextInput.input_value">
|
|
||||||
<a class="viewcode-back" href="../../elements.html#elements.text_input_element.TextInput.input_value">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">input_value</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">value</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Вводит указанное значение в поле.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Args:</span>
|
|
||||||
<span class="sd"> value (str): Значение для ввода.</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
|
|
||||||
<span class="n">logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="sa">f</span><span class="s1">'Inputting value "</span><span class="si">{</span><span class="n">value</span><span class="si">}</span><span class="s1">" to text input "</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">name</span><span class="si">}</span><span class="s1">"'</span><span class="p">)</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">locator</span><span class="o">.</span><span class="n">fill</span><span class="p">(</span><span class="n">value</span><span class="p">)</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="TextInput.clear">
|
|
||||||
<a class="viewcode-back" href="../../elements.html#elements.text_input_element.TextInput.clear">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">clear</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Очищает содержимое текстового поля."""</span>
|
|
||||||
|
|
||||||
<span class="n">logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="sa">f</span><span class="s1">'Clearing text input "</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">name</span><span class="si">}</span><span class="s1">"'</span><span class="p">)</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">locator</span><span class="o">.</span><span class="n">press</span><span class="p">(</span><span class="s1">'Control+A'</span><span class="p">)</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">locator</span><span class="o">.</span><span class="n">press</span><span class="p">(</span><span class="s1">'Backspace'</span><span class="p">)</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<span class="c1"># Проверки:</span>
|
|
||||||
<div class="viewcode-block" id="TextInput.check_empty_input">
|
|
||||||
<a class="viewcode-back" href="../../elements.html#elements.text_input_element.TextInput.check_empty_input">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">check_empty_input</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">msg</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Проверяет, что поле ввода пустое.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Args:</span>
|
|
||||||
<span class="sd"> msg (str): Сообщение об ошибке при неудачной проверке.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Raises:</span>
|
|
||||||
<span class="sd"> AssertionError: Если поле не пустое.</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
|
|
||||||
<span class="n">logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="sa">f</span><span class="s1">'Checking that text input "</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">name</span><span class="si">}</span><span class="s1">" is empty'</span><span class="p">)</span>
|
|
||||||
<span class="n">expect</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">locator</span><span class="p">)</span><span class="o">.</span><span class="n">to_be_empty</span><span class="p">(),</span> <span class="n">msg</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="TextInput.check_editable_input">
|
|
||||||
<a class="viewcode-back" href="../../elements.html#elements.text_input_element.TextInput.check_editable_input">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">check_editable_input</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">msg</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Проверяет, что поле ввода редактируемое.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Args:</span>
|
|
||||||
<span class="sd"> msg (str): Сообщение об ошибке при неудачной проверке.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Raises:</span>
|
|
||||||
<span class="sd"> AssertionError: Если поле не пустое.</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
|
|
||||||
<span class="n">logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="sa">f</span><span class="s1">'Checking that text input "</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">name</span><span class="si">}</span><span class="s1">" is editable'</span><span class="p">)</span>
|
|
||||||
<span class="n">expect</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">locator</span><span class="p">)</span><span class="o">.</span><span class="n">to_be_editable</span><span class="p">(),</span> <span class="n">msg</span></div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</pre></div>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<footer>
|
|
||||||
|
|
||||||
<hr/>
|
|
||||||
|
|
||||||
<div role="contentinfo">
|
|
||||||
<p>© Авторские права 2025, NPO KIS. </p>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
Собрано при помощи <a href="https://www.sphinx-doc.org/">Sphinx</a> с использованием
|
|
||||||
<a href="https://github.com/readthedocs/sphinx_rtd_theme">темы,</a>
|
|
||||||
предоставленной <a href="https://readthedocs.org">Read the Docs</a>.
|
|
||||||
|
|
||||||
|
|
||||||
</footer>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</section>
|
|
||||||
</div>
|
|
||||||
<script>
|
|
||||||
jQuery(function () {
|
|
||||||
SphinxRtdTheme.Navigation.enable(true);
|
|
||||||
});
|
|
||||||
</script>
|
|
||||||
|
|
||||||
</body>
|
|
||||||
</html>
|
|
||||||
|
|
@ -1,195 +0,0 @@
|
||||||
|
|
||||||
|
|
||||||
<!DOCTYPE html>
|
|
||||||
<html class="writer-html5" lang="ru" data-content_root="../../">
|
|
||||||
<head>
|
|
||||||
<meta charset="utf-8" />
|
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
||||||
<title>elements.tooltip_button_element — документация e-nms-qa-automation 0.1.0</title>
|
|
||||||
<link rel="stylesheet" type="text/css" href="../../_static/pygments.css?v=b86133f3" />
|
|
||||||
<link rel="stylesheet" type="text/css" href="../../_static/css/theme.css?v=e59714d7" />
|
|
||||||
|
|
||||||
|
|
||||||
<script src="../../_static/jquery.js?v=5d32c60e"></script>
|
|
||||||
<script src="../../_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script>
|
|
||||||
<script src="../../_static/documentation_options.js?v=6ff560e8"></script>
|
|
||||||
<script src="../../_static/doctools.js?v=9bcbadda"></script>
|
|
||||||
<script src="../../_static/sphinx_highlight.js?v=dc90522c"></script>
|
|
||||||
<script src="../../_static/translations.js?v=cd1d70c9"></script>
|
|
||||||
<script src="../../_static/js/theme.js"></script>
|
|
||||||
<link rel="index" title="Алфавитный указатель" href="../../genindex.html" />
|
|
||||||
<link rel="search" title="Поиск" href="../../search.html" />
|
|
||||||
</head>
|
|
||||||
|
|
||||||
<body class="wy-body-for-nav">
|
|
||||||
<div class="wy-grid-for-nav">
|
|
||||||
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
|
|
||||||
<div class="wy-side-scroll">
|
|
||||||
<div class="wy-side-nav-search" >
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<a href="../../index.html" class="icon icon-home">
|
|
||||||
e-nms-qa-automation
|
|
||||||
</a>
|
|
||||||
<div role="search">
|
|
||||||
<form id="rtd-search-form" class="wy-form" action="../../search.html" method="get">
|
|
||||||
<input type="text" name="q" placeholder="Поиск в документации" aria-label="Поиск в документации" />
|
|
||||||
<input type="hidden" name="check_keywords" value="yes" />
|
|
||||||
<input type="hidden" name="area" value="default" />
|
|
||||||
</form>
|
|
||||||
</div>
|
|
||||||
</div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Меню навигации">
|
|
||||||
<!-- Local TOC -->
|
|
||||||
<div class="local-toc"></div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</nav>
|
|
||||||
|
|
||||||
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Меню навигации для мобильных устройств" >
|
|
||||||
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
|
|
||||||
<a href="../../index.html">e-nms-qa-automation</a>
|
|
||||||
</nav>
|
|
||||||
|
|
||||||
<div class="wy-nav-content">
|
|
||||||
<div class="rst-content">
|
|
||||||
<div role="navigation" aria-label="Навигация по страницам">
|
|
||||||
<ul class="wy-breadcrumbs">
|
|
||||||
<li><a href="../../index.html" class="icon icon-home" aria-label="Home"></a></li>
|
|
||||||
<li class="breadcrumb-item"><a href="../index.html">Код модуля</a></li>
|
|
||||||
<li class="breadcrumb-item active">elements.tooltip_button_element</li>
|
|
||||||
<li class="wy-breadcrumbs-aside">
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
<hr/>
|
|
||||||
</div>
|
|
||||||
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
|
|
||||||
<div itemprop="articleBody">
|
|
||||||
|
|
||||||
<h1>Исходный код elements.tooltip_button_element</h1><div class="highlight"><pre>
|
|
||||||
<span></span><span class="sd">"""Модуль tooltip_button_element содержит класс для работы с кнопками с подсказками.</span>
|
|
||||||
|
|
||||||
<span class="sd">Класс TooltipButton наследует базовый функционал BaseElement и добавляет</span>
|
|
||||||
<span class="sd">методы для проверки всплывающих подсказок у кнопок.</span>
|
|
||||||
<span class="sd">"""</span>
|
|
||||||
|
|
||||||
<span class="kn">from</span><span class="w"> </span><span class="nn">tools.logger</span><span class="w"> </span><span class="kn">import</span> <span class="n">get_logger</span>
|
|
||||||
<span class="kn">from</span><span class="w"> </span><span class="nn">locators.button_locators</span><span class="w"> </span><span class="kn">import</span> <span class="n">ButtonLocators</span>
|
|
||||||
<span class="kn">from</span><span class="w"> </span><span class="nn">elements.base_element</span><span class="w"> </span><span class="kn">import</span> <span class="n">BaseElement</span>
|
|
||||||
|
|
||||||
<span class="n">logger</span> <span class="o">=</span> <span class="n">get_logger</span><span class="p">(</span><span class="s2">"TOOLTIP_BUTTON"</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="TooltipButton">
|
|
||||||
<a class="viewcode-back" href="../../elements.html#elements.tooltip_button_element.TooltipButton">[документация]</a>
|
|
||||||
<span class="k">class</span><span class="w"> </span><span class="nc">TooltipButton</span><span class="p">(</span><span class="n">BaseElement</span><span class="p">):</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Класс для работы с кнопками, имеющими всплывающие подсказки.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Наследует функциональность BaseElement и добавляет методы</span>
|
|
||||||
<span class="sd"> для взаимодействия с подсказками кнопок.</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
|
|
||||||
<span class="nd">@property</span>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">type_of</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Возвращает тип элемента ('tooltip_button').</span>
|
|
||||||
|
|
||||||
<span class="sd"> Returns:</span>
|
|
||||||
<span class="sd"> str: Тип элемента - кнопка с подсказкой.</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
|
|
||||||
<span class="k">return</span> <span class="s2">"tooltip_button"</span>
|
|
||||||
|
|
||||||
<span class="c1"># Действия:</span>
|
|
||||||
<div class="viewcode-block" id="TooltipButton.get_tooltip_text">
|
|
||||||
<a class="viewcode-back" href="../../elements.html#elements.tooltip_button_element.TooltipButton.get_tooltip_text">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">get_tooltip_text</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Возвращает текст всплывающей подсказки.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Returns:</span>
|
|
||||||
<span class="sd"> str: Текст всплывающей подсказки.</span>
|
|
||||||
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
|
|
||||||
<span class="c1"># Наведение на элемент для отображения подсказки</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">locator</span><span class="o">.</span><span class="n">hover</span><span class="p">()</span>
|
|
||||||
|
|
||||||
<span class="c1"># Получение элемента подсказки</span>
|
|
||||||
<span class="n">tooltip</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">page</span><span class="o">.</span><span class="n">locator</span><span class="p">(</span><span class="n">ButtonLocators</span><span class="o">.</span><span class="n">TOOLTIP</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="n">tooltip</span><span class="o">.</span><span class="n">wait_for</span><span class="p">(</span><span class="n">state</span><span class="o">=</span><span class="s2">"visible"</span><span class="p">,</span> <span class="n">timeout</span><span class="o">=</span><span class="mi">5000</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">page</span><span class="o">.</span><span class="n">wait_for_timeout</span><span class="p">(</span><span class="mi">300</span><span class="p">)</span>
|
|
||||||
<span class="k">return</span> <span class="n">tooltip</span><span class="o">.</span><span class="n">text_content</span><span class="p">()</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="TooltipButton.wait_for_tooltip_to_disappear">
|
|
||||||
<a class="viewcode-back" href="../../elements.html#elements.tooltip_button_element.TooltipButton.wait_for_tooltip_to_disappear">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">wait_for_tooltip_to_disappear</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">timeout</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">5000</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Ожидает исчезновения всех активных всплывающих подсказок."""</span>
|
|
||||||
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">page</span><span class="o">.</span><span class="n">mouse</span><span class="o">.</span><span class="n">click</span><span class="p">(</span><span class="mi">10</span><span class="p">,</span> <span class="mi">10</span><span class="p">)</span>
|
|
||||||
<span class="n">tooltip_locator</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">page</span><span class="o">.</span><span class="n">locator</span><span class="p">(</span><span class="s2">".v-tooltip__content.menuable__content__active"</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="n">tooltip_locator</span><span class="o">.</span><span class="n">wait_for</span><span class="p">(</span><span class="n">state</span><span class="o">=</span><span class="s2">"hidden"</span><span class="p">,</span> <span class="n">timeout</span><span class="o">=</span><span class="n">timeout</span><span class="p">)</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<span class="c1"># Проверки:</span>
|
|
||||||
<div class="viewcode-block" id="TooltipButton.check_tooltip_with_text">
|
|
||||||
<a class="viewcode-back" href="../../elements.html#elements.tooltip_button_element.TooltipButton.check_tooltip_with_text">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">check_tooltip_with_text</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expected_text</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Проверяет соответствие текста всплывающей подсказки.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Args:</span>
|
|
||||||
<span class="sd"> expected_text (str): Ожидаемый текст подсказки.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Raises:</span>
|
|
||||||
<span class="sd"> AssertionError: Если текст подсказки не соответствует ожидаемому.</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
|
|
||||||
<span class="c1"># Наведение на элемент для отображения подсказки</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">locator</span><span class="o">.</span><span class="n">hover</span><span class="p">()</span>
|
|
||||||
|
|
||||||
<span class="c1"># Получение элемента подсказки</span>
|
|
||||||
<span class="n">tooltip</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">page</span><span class="o">.</span><span class="n">locator</span><span class="p">(</span><span class="n">ButtonLocators</span><span class="o">.</span><span class="n">TOOLTIP</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="n">tooltip</span><span class="o">.</span><span class="n">wait_for</span><span class="p">(</span><span class="n">state</span><span class="o">=</span><span class="s2">"visible"</span><span class="p">,</span> <span class="n">timeout</span><span class="o">=</span><span class="mi">5000</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">page</span><span class="o">.</span><span class="n">wait_for_timeout</span><span class="p">(</span><span class="mi">300</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="c1"># Проверка соответствия текста</span>
|
|
||||||
<span class="n">actual_text</span> <span class="o">=</span> <span class="n">tooltip</span><span class="o">.</span><span class="n">text_content</span><span class="p">()</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span>
|
|
||||||
<span class="k">assert</span> <span class="n">actual_text</span> <span class="o">==</span> <span class="n">expected_text</span><span class="p">,</span> <span class="p">(</span>
|
|
||||||
<span class="sa">f</span><span class="s2">"Текст подсказки не соответствует ожидаемому. "</span>
|
|
||||||
<span class="sa">f</span><span class="s2">"Ожидалось: '</span><span class="si">{</span><span class="n">expected_text</span><span class="si">}</span><span class="s2">', получено: '</span><span class="si">{</span><span class="n">actual_text</span><span class="si">}</span><span class="s2">'"</span>
|
|
||||||
<span class="p">)</span></div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</pre></div>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<footer>
|
|
||||||
|
|
||||||
<hr/>
|
|
||||||
|
|
||||||
<div role="contentinfo">
|
|
||||||
<p>© Авторские права 2025, NPO KIS. </p>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
Собрано при помощи <a href="https://www.sphinx-doc.org/">Sphinx</a> с использованием
|
|
||||||
<a href="https://github.com/readthedocs/sphinx_rtd_theme">темы,</a>
|
|
||||||
предоставленной <a href="https://readthedocs.org">Read the Docs</a>.
|
|
||||||
|
|
||||||
|
|
||||||
</footer>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</section>
|
|
||||||
</div>
|
|
||||||
<script>
|
|
||||||
jQuery(function () {
|
|
||||||
SphinxRtdTheme.Navigation.enable(true);
|
|
||||||
});
|
|
||||||
</script>
|
|
||||||
|
|
||||||
</body>
|
|
||||||
</html>
|
|
||||||
|
|
@ -1,318 +0,0 @@
|
||||||
|
|
||||||
|
|
||||||
<!DOCTYPE html>
|
|
||||||
<html class="writer-html5" lang="ru" data-content_root="../../">
|
|
||||||
<head>
|
|
||||||
<meta charset="utf-8" />
|
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
||||||
<title>fixtures.pages — документация e-nms-qa-automation 0.1.0</title>
|
|
||||||
<link rel="stylesheet" type="text/css" href="../../_static/pygments.css?v=b86133f3" />
|
|
||||||
<link rel="stylesheet" type="text/css" href="../../_static/css/theme.css?v=e59714d7" />
|
|
||||||
|
|
||||||
|
|
||||||
<script src="../../_static/jquery.js?v=5d32c60e"></script>
|
|
||||||
<script src="../../_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script>
|
|
||||||
<script src="../../_static/documentation_options.js?v=6ff560e8"></script>
|
|
||||||
<script src="../../_static/doctools.js?v=9bcbadda"></script>
|
|
||||||
<script src="../../_static/sphinx_highlight.js?v=dc90522c"></script>
|
|
||||||
<script src="../../_static/translations.js?v=cd1d70c9"></script>
|
|
||||||
<script src="../../_static/js/theme.js"></script>
|
|
||||||
<link rel="index" title="Алфавитный указатель" href="../../genindex.html" />
|
|
||||||
<link rel="search" title="Поиск" href="../../search.html" />
|
|
||||||
</head>
|
|
||||||
|
|
||||||
<body class="wy-body-for-nav">
|
|
||||||
<div class="wy-grid-for-nav">
|
|
||||||
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
|
|
||||||
<div class="wy-side-scroll">
|
|
||||||
<div class="wy-side-nav-search" >
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<a href="../../index.html" class="icon icon-home">
|
|
||||||
e-nms-qa-automation
|
|
||||||
</a>
|
|
||||||
<div role="search">
|
|
||||||
<form id="rtd-search-form" class="wy-form" action="../../search.html" method="get">
|
|
||||||
<input type="text" name="q" placeholder="Поиск в документации" aria-label="Поиск в документации" />
|
|
||||||
<input type="hidden" name="check_keywords" value="yes" />
|
|
||||||
<input type="hidden" name="area" value="default" />
|
|
||||||
</form>
|
|
||||||
</div>
|
|
||||||
</div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Меню навигации">
|
|
||||||
<!-- Local TOC -->
|
|
||||||
<div class="local-toc"></div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</nav>
|
|
||||||
|
|
||||||
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Меню навигации для мобильных устройств" >
|
|
||||||
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
|
|
||||||
<a href="../../index.html">e-nms-qa-automation</a>
|
|
||||||
</nav>
|
|
||||||
|
|
||||||
<div class="wy-nav-content">
|
|
||||||
<div class="rst-content">
|
|
||||||
<div role="navigation" aria-label="Навигация по страницам">
|
|
||||||
<ul class="wy-breadcrumbs">
|
|
||||||
<li><a href="../../index.html" class="icon icon-home" aria-label="Home"></a></li>
|
|
||||||
<li class="breadcrumb-item"><a href="../index.html">Код модуля</a></li>
|
|
||||||
<li class="breadcrumb-item active">fixtures.pages</li>
|
|
||||||
<li class="wy-breadcrumbs-aside">
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
<hr/>
|
|
||||||
</div>
|
|
||||||
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
|
|
||||||
<div itemprop="articleBody">
|
|
||||||
|
|
||||||
<h1>Исходный код fixtures.pages</h1><div class="highlight"><pre>
|
|
||||||
<span></span><span class="sd">"""Модуль pages содержит фикстуры и функции для работы с Playwright.</span>
|
|
||||||
|
|
||||||
<span class="sd">Предоставляет инструменты для управления браузером, контекстами и страницами</span>
|
|
||||||
<span class="sd">в тестах pytest, включая настройку параметров запуска.</span>
|
|
||||||
<span class="sd">"""</span>
|
|
||||||
|
|
||||||
<span class="kn">import</span><span class="w"> </span><span class="nn">ast</span>
|
|
||||||
<span class="kn">import</span><span class="w"> </span><span class="nn">pytest</span>
|
|
||||||
<span class="kn">from</span><span class="w"> </span><span class="nn">playwright.sync_api</span><span class="w"> </span><span class="kn">import</span> <span class="n">Browser</span><span class="p">,</span> <span class="n">BrowserContext</span><span class="p">,</span> <span class="n">Page</span><span class="p">,</span> <span class="n">sync_playwright</span><span class="p">,</span> <span class="n">Playwright</span>
|
|
||||||
<span class="kn">from</span><span class="w"> </span><span class="nn">_pytest.config.argparsing</span><span class="w"> </span><span class="kn">import</span> <span class="n">Parser</span>
|
|
||||||
<span class="kn">from</span><span class="w"> </span><span class="nn">_pytest.fixtures</span><span class="w"> </span><span class="kn">import</span> <span class="n">FixtureRequest</span>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="pytest_addoption">
|
|
||||||
<a class="viewcode-back" href="../../fixtures.html#fixtures.pages.pytest_addoption">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">pytest_addoption</span><span class="p">(</span><span class="n">parser</span><span class="p">:</span> <span class="n">Parser</span><span class="p">):</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Добавляет опции командной строки для настройки браузера.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Args:</span>
|
|
||||||
<span class="sd"> parser: Парсер pytest для добавления опций.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Опции:</span>
|
|
||||||
<span class="sd"> --bn: Браузер (chrome, remote_chrome, firefox)</span>
|
|
||||||
<span class="sd"> --h: Режим headless (True/False)</span>
|
|
||||||
<span class="sd"> --s: Размер окна {'width': int, 'height': int}</span>
|
|
||||||
<span class="sd"> --slow: Задержка между действиями (мс)</span>
|
|
||||||
<span class="sd"> --t: Таймаут по умолчанию (мс)</span>
|
|
||||||
<span class="sd"> --l: Локаль браузера</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
|
|
||||||
<span class="n">parser</span><span class="o">.</span><span class="n">addoption</span><span class="p">(</span><span class="s1">'--bn'</span><span class="p">,</span> <span class="n">action</span><span class="o">=</span><span class="s1">'store'</span><span class="p">,</span> <span class="n">default</span><span class="o">=</span><span class="s2">"chrome"</span><span class="p">,</span>
|
|
||||||
<span class="n">help</span><span class="o">=</span><span class="s2">"Choose browser: chrome, remote_chrome or firefox"</span><span class="p">)</span>
|
|
||||||
<span class="n">parser</span><span class="o">.</span><span class="n">addoption</span><span class="p">(</span><span class="s1">'--h'</span><span class="p">,</span> <span class="n">action</span><span class="o">=</span><span class="s1">'store'</span><span class="p">,</span> <span class="n">default</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span>
|
|
||||||
<span class="n">help</span><span class="o">=</span><span class="s1">'Choose headless: True or False'</span><span class="p">)</span>
|
|
||||||
<span class="n">parser</span><span class="o">.</span><span class="n">addoption</span><span class="p">(</span><span class="s1">'--s'</span><span class="p">,</span> <span class="n">action</span><span class="o">=</span><span class="s1">'store'</span><span class="p">,</span> <span class="n">default</span><span class="o">=</span><span class="s2">"{'width': 1600, 'height': 900}"</span><span class="p">,</span>
|
|
||||||
<span class="n">help</span><span class="o">=</span><span class="s1">'Size window: width,height'</span><span class="p">)</span>
|
|
||||||
<span class="c1"># Закомментированные альтернативные размеры окон</span>
|
|
||||||
<span class="c1"># parser.addoption('--s', action='store', default="{'width': 1920, 'height': 1080}",</span>
|
|
||||||
<span class="c1"># help='Size window: width,height')</span>
|
|
||||||
<span class="c1"># parser.addoption('--s', action='store', default="{'width': 1920, 'height': 300}",</span>
|
|
||||||
<span class="c1"># help='Size window: width,height')</span>
|
|
||||||
<span class="c1"># parser.addoption('--s', action='store', default="{'width': 300, 'height': 420}",</span>
|
|
||||||
<span class="c1"># help='Size window: width,height')</span>
|
|
||||||
<span class="n">parser</span><span class="o">.</span><span class="n">addoption</span><span class="p">(</span><span class="s1">'--slow'</span><span class="p">,</span> <span class="n">action</span><span class="o">=</span><span class="s1">'store'</span><span class="p">,</span> <span class="n">default</span><span class="o">=</span><span class="mi">200</span><span class="p">,</span>
|
|
||||||
<span class="n">help</span><span class="o">=</span><span class="s1">'Choose slow_mo for robot action'</span><span class="p">)</span>
|
|
||||||
<span class="n">parser</span><span class="o">.</span><span class="n">addoption</span><span class="p">(</span><span class="s1">'--t'</span><span class="p">,</span> <span class="n">action</span><span class="o">=</span><span class="s1">'store'</span><span class="p">,</span> <span class="n">default</span><span class="o">=</span><span class="mi">60000</span><span class="p">,</span>
|
|
||||||
<span class="n">help</span><span class="o">=</span><span class="s1">'Choose timeout'</span><span class="p">)</span>
|
|
||||||
<span class="n">parser</span><span class="o">.</span><span class="n">addoption</span><span class="p">(</span><span class="s1">'--l'</span><span class="p">,</span> <span class="n">action</span><span class="o">=</span><span class="s1">'store'</span><span class="p">,</span> <span class="n">default</span><span class="o">=</span><span class="s1">'ru-RU'</span><span class="p">,</span>
|
|
||||||
<span class="n">help</span><span class="o">=</span><span class="s1">'Choose locale'</span><span class="p">)</span></div>
|
|
||||||
|
|
||||||
<span class="c1"># Закомментированная опция для Qase</span>
|
|
||||||
<span class="c1"># parser.addini('qs_to_api_token', default=os.getenv("QASE_TOKEN"), help='Qase app token')</span>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="browser">
|
|
||||||
<a class="viewcode-back" href="../../fixtures.html#fixtures.pages.browser">[документация]</a>
|
|
||||||
<span class="nd">@pytest</span><span class="o">.</span><span class="n">fixture</span><span class="p">(</span><span class="n">scope</span><span class="o">=</span><span class="s1">'class'</span><span class="p">)</span>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">browser</span><span class="p">(</span><span class="n">request</span><span class="p">:</span> <span class="n">FixtureRequest</span><span class="p">)</span> <span class="o">-></span> <span class="n">Page</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Фикстура для управления экземпляром браузера.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Args:</span>
|
|
||||||
<span class="sd"> request: Объект запроса pytest для доступа к конфигурации.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Returns:</span>
|
|
||||||
<span class="sd"> Page: Экземпляр страницы браузера.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Yields:</span>
|
|
||||||
<span class="sd"> Page: Страница для использования в тестах.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Note:</span>
|
|
||||||
<span class="sd"> Автоматически закрывает браузер после тестов.</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
|
|
||||||
<span class="n">playwright</span> <span class="o">=</span> <span class="n">sync_playwright</span><span class="p">()</span><span class="o">.</span><span class="n">start</span><span class="p">()</span>
|
|
||||||
|
|
||||||
<span class="c1"># Выбор браузера на основе параметра командной строки</span>
|
|
||||||
<span class="k">if</span> <span class="n">request</span><span class="o">.</span><span class="n">config</span><span class="o">.</span><span class="n">getoption</span><span class="p">(</span><span class="s2">"bn"</span><span class="p">)</span> <span class="o">==</span> <span class="s1">'remote_chrome'</span><span class="p">:</span>
|
|
||||||
<span class="n">browser</span> <span class="o">=</span> <span class="n">get_remote_chrome</span><span class="p">(</span><span class="n">playwright</span><span class="p">,</span> <span class="n">request</span><span class="p">)</span>
|
|
||||||
<span class="n">context</span> <span class="o">=</span> <span class="n">get_context</span><span class="p">(</span><span class="n">browser</span><span class="p">,</span> <span class="n">request</span><span class="p">,</span> <span class="s1">'remote'</span><span class="p">)</span>
|
|
||||||
<span class="n">page_data</span> <span class="o">=</span> <span class="n">context</span><span class="o">.</span><span class="n">new_page</span><span class="p">()</span>
|
|
||||||
<span class="k">elif</span> <span class="n">request</span><span class="o">.</span><span class="n">config</span><span class="o">.</span><span class="n">getoption</span><span class="p">(</span><span class="s2">"bn"</span><span class="p">)</span> <span class="o">==</span> <span class="s1">'firefox'</span><span class="p">:</span>
|
|
||||||
<span class="n">browser</span> <span class="o">=</span> <span class="n">get_firefox_browser</span><span class="p">(</span><span class="n">playwright</span><span class="p">,</span> <span class="n">request</span><span class="p">)</span>
|
|
||||||
<span class="n">context</span> <span class="o">=</span> <span class="n">get_context</span><span class="p">(</span><span class="n">browser</span><span class="p">,</span> <span class="n">request</span><span class="p">,</span> <span class="s1">'local'</span><span class="p">)</span>
|
|
||||||
<span class="n">page_data</span> <span class="o">=</span> <span class="n">context</span><span class="o">.</span><span class="n">new_page</span><span class="p">()</span>
|
|
||||||
<span class="k">elif</span> <span class="n">request</span><span class="o">.</span><span class="n">config</span><span class="o">.</span><span class="n">getoption</span><span class="p">(</span><span class="s2">"bn"</span><span class="p">)</span> <span class="o">==</span> <span class="s1">'chrome'</span><span class="p">:</span>
|
|
||||||
<span class="n">browser</span> <span class="o">=</span> <span class="n">get_chrome_browser</span><span class="p">(</span><span class="n">playwright</span><span class="p">,</span> <span class="n">request</span><span class="p">)</span>
|
|
||||||
<span class="n">context</span> <span class="o">=</span> <span class="n">get_context</span><span class="p">(</span><span class="n">browser</span><span class="p">,</span> <span class="n">request</span><span class="p">,</span> <span class="s1">'local'</span><span class="p">)</span>
|
|
||||||
<span class="n">page_data</span> <span class="o">=</span> <span class="n">context</span><span class="o">.</span><span class="n">new_page</span><span class="p">()</span>
|
|
||||||
<span class="k">else</span><span class="p">:</span>
|
|
||||||
<span class="n">browser</span> <span class="o">=</span> <span class="n">get_chrome_browser</span><span class="p">(</span><span class="n">playwright</span><span class="p">,</span> <span class="n">request</span><span class="p">)</span>
|
|
||||||
<span class="n">context</span> <span class="o">=</span> <span class="n">get_context</span><span class="p">(</span><span class="n">browser</span><span class="p">,</span> <span class="n">request</span><span class="p">,</span> <span class="s1">'local'</span><span class="p">)</span>
|
|
||||||
<span class="n">page_data</span> <span class="o">=</span> <span class="n">context</span><span class="o">.</span><span class="n">new_page</span><span class="p">()</span>
|
|
||||||
|
|
||||||
<span class="k">yield</span> <span class="n">page_data</span>
|
|
||||||
|
|
||||||
<span class="c1"># Очистка после завершения тестов</span>
|
|
||||||
<span class="k">for</span> <span class="n">context</span> <span class="ow">in</span> <span class="n">browser</span><span class="o">.</span><span class="n">contexts</span><span class="p">:</span>
|
|
||||||
<span class="n">context</span><span class="o">.</span><span class="n">close</span><span class="p">()</span>
|
|
||||||
<span class="n">browser</span><span class="o">.</span><span class="n">close</span><span class="p">()</span>
|
|
||||||
<span class="n">playwright</span><span class="o">.</span><span class="n">stop</span><span class="p">()</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="get_firefox_browser">
|
|
||||||
<a class="viewcode-back" href="../../fixtures.html#fixtures.pages.get_firefox_browser">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">get_firefox_browser</span><span class="p">(</span><span class="n">playwright</span><span class="p">:</span> <span class="n">Playwright</span><span class="p">,</span> <span class="n">request</span><span class="p">:</span> <span class="n">FixtureRequest</span><span class="p">)</span> <span class="o">-></span> <span class="n">Browser</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Создает и возвращает экземпляр Firefox браузера.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Args:</span>
|
|
||||||
<span class="sd"> playwright: Экземпляр Playwright.</span>
|
|
||||||
<span class="sd"> request: Объект запроса pytest.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Returns:</span>
|
|
||||||
<span class="sd"> Browser: Экземпляр Firefox.</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
|
|
||||||
<span class="k">return</span> <span class="n">playwright</span><span class="o">.</span><span class="n">firefox</span><span class="o">.</span><span class="n">launch</span><span class="p">(</span>
|
|
||||||
<span class="n">headless</span><span class="o">=</span><span class="n">request</span><span class="o">.</span><span class="n">config</span><span class="o">.</span><span class="n">getoption</span><span class="p">(</span><span class="s2">"h"</span><span class="p">),</span>
|
|
||||||
<span class="n">slow_mo</span><span class="o">=</span><span class="n">request</span><span class="o">.</span><span class="n">config</span><span class="o">.</span><span class="n">getoption</span><span class="p">(</span><span class="s2">"slow"</span><span class="p">),</span>
|
|
||||||
<span class="p">)</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="get_chrome_browser">
|
|
||||||
<a class="viewcode-back" href="../../fixtures.html#fixtures.pages.get_chrome_browser">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">get_chrome_browser</span><span class="p">(</span><span class="n">playwright</span><span class="p">:</span> <span class="n">Playwright</span><span class="p">,</span> <span class="n">request</span><span class="p">:</span> <span class="n">FixtureRequest</span><span class="p">)</span> <span class="o">-></span> <span class="n">Browser</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Создает и возвращает экземпляр Chrome браузера.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Args:</span>
|
|
||||||
<span class="sd"> playwright: Экземпляр Playwright.</span>
|
|
||||||
<span class="sd"> request: Объект запроса pytest.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Returns:</span>
|
|
||||||
<span class="sd"> Browser: Экземпляр Chrome.</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
|
|
||||||
<span class="k">return</span> <span class="n">playwright</span><span class="o">.</span><span class="n">chromium</span><span class="o">.</span><span class="n">launch</span><span class="p">(</span>
|
|
||||||
<span class="n">headless</span><span class="o">=</span><span class="n">request</span><span class="o">.</span><span class="n">config</span><span class="o">.</span><span class="n">getoption</span><span class="p">(</span><span class="s2">"h"</span><span class="p">),</span>
|
|
||||||
<span class="n">slow_mo</span><span class="o">=</span><span class="n">request</span><span class="o">.</span><span class="n">config</span><span class="o">.</span><span class="n">getoption</span><span class="p">(</span><span class="s2">"slow"</span><span class="p">),</span>
|
|
||||||
<span class="n">args</span><span class="o">=</span><span class="p">[</span><span class="s1">'--s'</span><span class="p">]</span>
|
|
||||||
<span class="p">)</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="get_remote_chrome">
|
|
||||||
<a class="viewcode-back" href="../../fixtures.html#fixtures.pages.get_remote_chrome">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">get_remote_chrome</span><span class="p">(</span><span class="n">playwright</span><span class="p">:</span> <span class="n">Playwright</span><span class="p">,</span> <span class="n">request</span><span class="p">:</span> <span class="n">FixtureRequest</span><span class="p">)</span> <span class="o">-></span> <span class="n">Browser</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Создает экземпляр Chrome для удаленного запуска.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Args:</span>
|
|
||||||
<span class="sd"> playwright: Экземпляр Playwright.</span>
|
|
||||||
<span class="sd"> request: Объект запроса pytest.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Returns:</span>
|
|
||||||
<span class="sd"> Browser: Экземпляр Chrome в headless режиме.</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
|
|
||||||
<span class="k">return</span> <span class="n">playwright</span><span class="o">.</span><span class="n">chromium</span><span class="o">.</span><span class="n">launch</span><span class="p">(</span>
|
|
||||||
<span class="n">headless</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span>
|
|
||||||
<span class="n">slow_mo</span><span class="o">=</span><span class="n">request</span><span class="o">.</span><span class="n">config</span><span class="o">.</span><span class="n">getoption</span><span class="p">(</span><span class="s2">"slow"</span><span class="p">)</span>
|
|
||||||
<span class="p">)</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="get_context">
|
|
||||||
<a class="viewcode-back" href="../../fixtures.html#fixtures.pages.get_context">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">get_context</span><span class="p">(</span><span class="n">browser</span><span class="p">:</span> <span class="n">Browser</span><span class="p">,</span> <span class="n">request</span><span class="p">:</span> <span class="n">FixtureRequest</span><span class="p">,</span> <span class="n">start</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="n">BrowserContext</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Создает и настраивает контекст браузера.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Args:</span>
|
|
||||||
<span class="sd"> browser: Экземпляр браузера.</span>
|
|
||||||
<span class="sd"> request: Объект запроса pytest.</span>
|
|
||||||
<span class="sd"> start: Тип запуска ('local' или 'remote').</span>
|
|
||||||
|
|
||||||
<span class="sd"> Returns:</span>
|
|
||||||
<span class="sd"> BrowserContext: Настроенный контекст.</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
|
|
||||||
<span class="k">if</span> <span class="n">start</span> <span class="o">==</span> <span class="s1">'local'</span><span class="p">:</span>
|
|
||||||
<span class="c1"># current_viewport = json.loads(request.config.getoption('--s'))</span>
|
|
||||||
|
|
||||||
<span class="n">context</span> <span class="o">=</span> <span class="n">browser</span><span class="o">.</span><span class="n">new_context</span><span class="p">(</span>
|
|
||||||
<span class="c1"># no_viewport=True,</span>
|
|
||||||
<span class="n">viewport</span><span class="o">=</span> <span class="n">ast</span><span class="o">.</span><span class="n">literal_eval</span><span class="p">(</span><span class="n">request</span><span class="o">.</span><span class="n">config</span><span class="o">.</span><span class="n">getoption</span><span class="p">(</span><span class="s1">'--s'</span><span class="p">)),</span>
|
|
||||||
<span class="n">locale</span><span class="o">=</span><span class="n">request</span><span class="o">.</span><span class="n">config</span><span class="o">.</span><span class="n">getoption</span><span class="p">(</span><span class="s1">'l'</span><span class="p">)</span>
|
|
||||||
<span class="p">)</span>
|
|
||||||
<span class="n">context</span><span class="o">.</span><span class="n">set_default_timeout</span><span class="p">(</span>
|
|
||||||
<span class="n">timeout</span><span class="o">=</span><span class="n">request</span><span class="o">.</span><span class="n">config</span><span class="o">.</span><span class="n">getoption</span><span class="p">(</span><span class="s1">'t'</span><span class="p">)</span>
|
|
||||||
<span class="p">)</span>
|
|
||||||
<span class="c1"># Пример добавления кук (закомментировано)</span>
|
|
||||||
<span class="c1"># context.add_cookies([{'url': 'https://example.ru', 'name': 'ab_test', 'value': 'd'}])</span>
|
|
||||||
<span class="k">return</span> <span class="n">context</span>
|
|
||||||
|
|
||||||
<span class="k">elif</span> <span class="n">start</span> <span class="o">==</span> <span class="s1">'remote'</span><span class="p">:</span>
|
|
||||||
<span class="n">context</span> <span class="o">=</span> <span class="n">browser</span><span class="o">.</span><span class="n">new_context</span><span class="p">(</span>
|
|
||||||
<span class="n">viewport</span><span class="o">=</span><span class="n">ast</span><span class="o">.</span><span class="n">literal_eval</span><span class="p">(</span><span class="n">request</span><span class="o">.</span><span class="n">config</span><span class="o">.</span><span class="n">getoption</span><span class="p">(</span><span class="s1">'--s'</span><span class="p">)),</span>
|
|
||||||
<span class="n">locale</span><span class="o">=</span><span class="n">request</span><span class="o">.</span><span class="n">config</span><span class="o">.</span><span class="n">getoption</span><span class="p">(</span><span class="s1">'l'</span><span class="p">)</span>
|
|
||||||
<span class="p">)</span>
|
|
||||||
<span class="n">context</span><span class="o">.</span><span class="n">set_default_timeout</span><span class="p">(</span>
|
|
||||||
<span class="n">timeout</span><span class="o">=</span><span class="n">request</span><span class="o">.</span><span class="n">config</span><span class="o">.</span><span class="n">getoption</span><span class="p">(</span><span class="s1">'t'</span><span class="p">)</span>
|
|
||||||
<span class="p">)</span>
|
|
||||||
<span class="c1"># Пример добавления кук (закомментировано)</span>
|
|
||||||
<span class="c1"># context.add_cookies([{'url': 'https://example.ru', 'name': 'ab_test', 'value': 'd'}])</span>
|
|
||||||
<span class="k">return</span> <span class="n">context</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="return_back">
|
|
||||||
<a class="viewcode-back" href="../../fixtures.html#fixtures.pages.return_back">[документация]</a>
|
|
||||||
<span class="nd">@pytest</span><span class="o">.</span><span class="n">fixture</span><span class="p">(</span><span class="n">scope</span><span class="o">=</span><span class="s2">"function"</span><span class="p">)</span>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">return_back</span><span class="p">(</span><span class="n">browser</span><span class="p">:</span> <span class="n">Page</span><span class="p">):</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Фикстура для возврата на предыдущую страницу.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Args:</span>
|
|
||||||
<span class="sd"> browser: Экземпляр страницы браузера.</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
|
|
||||||
<span class="n">browser</span><span class="o">.</span><span class="n">go_back</span><span class="p">()</span></div>
|
|
||||||
|
|
||||||
</pre></div>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<footer>
|
|
||||||
|
|
||||||
<hr/>
|
|
||||||
|
|
||||||
<div role="contentinfo">
|
|
||||||
<p>© Авторские права 2025, NPO KIS. </p>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
Собрано при помощи <a href="https://www.sphinx-doc.org/">Sphinx</a> с использованием
|
|
||||||
<a href="https://github.com/readthedocs/sphinx_rtd_theme">темы,</a>
|
|
||||||
предоставленной <a href="https://readthedocs.org">Read the Docs</a>.
|
|
||||||
|
|
||||||
|
|
||||||
</footer>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</section>
|
|
||||||
</div>
|
|
||||||
<script>
|
|
||||||
jQuery(function () {
|
|
||||||
SphinxRtdTheme.Navigation.enable(true);
|
|
||||||
});
|
|
||||||
</script>
|
|
||||||
|
|
||||||
</body>
|
|
||||||
</html>
|
|
||||||
|
|
@ -1,401 +0,0 @@
|
||||||
|
|
||||||
|
|
||||||
<!DOCTYPE html>
|
|
||||||
<html class="writer-html5" lang="ru" data-content_root="../">
|
|
||||||
<head>
|
|
||||||
<meta charset="utf-8" />
|
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
||||||
<title>Обзор: исходный код модуля — документация e-nms-qa-automation 0.1.0</title>
|
|
||||||
<link rel="stylesheet" type="text/css" href="../_static/pygments.css?v=b86133f3" />
|
|
||||||
<link rel="stylesheet" type="text/css" href="../_static/css/theme.css?v=e59714d7" />
|
|
||||||
|
|
||||||
|
|
||||||
<script src="../_static/jquery.js?v=5d32c60e"></script>
|
|
||||||
<script src="../_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script>
|
|
||||||
<script src="../_static/documentation_options.js?v=6ff560e8"></script>
|
|
||||||
<script src="../_static/doctools.js?v=9bcbadda"></script>
|
|
||||||
<script src="../_static/sphinx_highlight.js?v=dc90522c"></script>
|
|
||||||
<script src="../_static/translations.js?v=cd1d70c9"></script>
|
|
||||||
<script src="../_static/js/theme.js"></script>
|
|
||||||
<link rel="index" title="Алфавитный указатель" href="../genindex.html" />
|
|
||||||
<link rel="search" title="Поиск" href="../search.html" />
|
|
||||||
</head>
|
|
||||||
|
|
||||||
<body class="wy-body-for-nav">
|
|
||||||
<div class="wy-grid-for-nav">
|
|
||||||
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
|
|
||||||
<div class="wy-side-scroll">
|
|
||||||
<div class="wy-side-nav-search" >
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<a href="../index.html" class="icon icon-home">
|
|
||||||
e-nms-qa-automation
|
|
||||||
</a>
|
|
||||||
<div role="search">
|
|
||||||
<form id="rtd-search-form" class="wy-form" action="../search.html" method="get">
|
|
||||||
<input type="text" name="q" placeholder="Поиск в документации" aria-label="Поиск в документации" />
|
|
||||||
<input type="hidden" name="check_keywords" value="yes" />
|
|
||||||
<input type="hidden" name="area" value="default" />
|
|
||||||
</form>
|
|
||||||
</div>
|
|
||||||
</div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Меню навигации">
|
|
||||||
<p class="caption" role="heading"><span class="caption-text">Содержание:</span></p>
|
|
||||||
<ul>
|
|
||||||
<li class="toctree-l1"><a class="reference internal" href="../modules.html">e-nms_qa_automation</a><ul>
|
|
||||||
<li class="toctree-l2"><a class="reference internal" href="../components.html">components package</a><ul>
|
|
||||||
<li class="toctree-l3"><a class="reference internal" href="../components.html#submodules">Submodules</a></li>
|
|
||||||
<li class="toctree-l3"><a class="reference internal" href="../components.html#module-components.alert_component">components.alert_component module</a><ul>
|
|
||||||
<li class="toctree-l4"><a class="reference internal" href="../components.html#components.alert_component.AlertComponent"><code class="docutils literal notranslate"><span class="pre">AlertComponent</span></code></a></li>
|
|
||||||
</ul>
|
|
||||||
</li>
|
|
||||||
<li class="toctree-l3"><a class="reference internal" href="../components.html#module-components.base_component">components.base_component module</a><ul>
|
|
||||||
<li class="toctree-l4"><a class="reference internal" href="../components.html#components.base_component.BaseComponent"><code class="docutils literal notranslate"><span class="pre">BaseComponent</span></code></a></li>
|
|
||||||
</ul>
|
|
||||||
</li>
|
|
||||||
<li class="toctree-l3"><a class="reference internal" href="../components.html#module-components.card_component">components.card_component module</a><ul>
|
|
||||||
<li class="toctree-l4"><a class="reference internal" href="../components.html#components.card_component.CardComponent"><code class="docutils literal notranslate"><span class="pre">CardComponent</span></code></a></li>
|
|
||||||
</ul>
|
|
||||||
</li>
|
|
||||||
<li class="toctree-l3"><a class="reference internal" href="../components.html#module-components.confirm_component">components.confirm_component module</a><ul>
|
|
||||||
<li class="toctree-l4"><a class="reference internal" href="../components.html#components.confirm_component.ConfirmComponent"><code class="docutils literal notranslate"><span class="pre">ConfirmComponent</span></code></a></li>
|
|
||||||
</ul>
|
|
||||||
</li>
|
|
||||||
<li class="toctree-l3"><a class="reference internal" href="../components.html#module-components.date_picker_component">components.date_picker_component module</a><ul>
|
|
||||||
<li class="toctree-l4"><a class="reference internal" href="../components.html#components.date_picker_component.DatePickerComponent"><code class="docutils literal notranslate"><span class="pre">DatePickerComponent</span></code></a></li>
|
|
||||||
</ul>
|
|
||||||
</li>
|
|
||||||
<li class="toctree-l3"><a class="reference internal" href="../components.html#module-components.dropdown_list_component">components.dropdown_list_component module</a><ul>
|
|
||||||
<li class="toctree-l4"><a class="reference internal" href="../components.html#components.dropdown_list_component.DropdownList"><code class="docutils literal notranslate"><span class="pre">DropdownList</span></code></a></li>
|
|
||||||
</ul>
|
|
||||||
</li>
|
|
||||||
<li class="toctree-l3"><a class="reference internal" href="../components.html#module-components.eventbar_component">components.eventbar_component module</a><ul>
|
|
||||||
<li class="toctree-l4"><a class="reference internal" href="../components.html#components.eventbar_component.EventPanelComponent"><code class="docutils literal notranslate"><span class="pre">EventPanelComponent</span></code></a></li>
|
|
||||||
</ul>
|
|
||||||
</li>
|
|
||||||
<li class="toctree-l3"><a class="reference internal" href="../components.html#module-components.events_container_component">components.events_container_component module</a><ul>
|
|
||||||
<li class="toctree-l4"><a class="reference internal" href="../components.html#components.events_container_component.EventsContainerComponent"><code class="docutils literal notranslate"><span class="pre">EventsContainerComponent</span></code></a></li>
|
|
||||||
</ul>
|
|
||||||
</li>
|
|
||||||
<li class="toctree-l3"><a class="reference internal" href="../components.html#module-components.json_container_component">components.json_container_component module</a><ul>
|
|
||||||
<li class="toctree-l4"><a class="reference internal" href="../components.html#components.json_container_component.JsonContainerComponent"><code class="docutils literal notranslate"><span class="pre">JsonContainerComponent</span></code></a></li>
|
|
||||||
</ul>
|
|
||||||
</li>
|
|
||||||
<li class="toctree-l3"><a class="reference internal" href="../components.html#module-components.modal_window_component">components.modal_window_component module</a><ul>
|
|
||||||
<li class="toctree-l4"><a class="reference internal" href="../components.html#components.modal_window_component.ModalWindowComponent"><code class="docutils literal notranslate"><span class="pre">ModalWindowComponent</span></code></a></li>
|
|
||||||
</ul>
|
|
||||||
</li>
|
|
||||||
<li class="toctree-l3"><a class="reference internal" href="../components.html#module-components.navbar_component">components.navbar_component module</a><ul>
|
|
||||||
<li class="toctree-l4"><a class="reference internal" href="../components.html#components.navbar_component.NavigationPanelComponent"><code class="docutils literal notranslate"><span class="pre">NavigationPanelComponent</span></code></a></li>
|
|
||||||
</ul>
|
|
||||||
</li>
|
|
||||||
<li class="toctree-l3"><a class="reference internal" href="../components.html#module-components.settings_form_component">components.settings_form_component module</a><ul>
|
|
||||||
<li class="toctree-l4"><a class="reference internal" href="../components.html#components.settings_form_component.SettingsFormComponent"><code class="docutils literal notranslate"><span class="pre">SettingsFormComponent</span></code></a></li>
|
|
||||||
</ul>
|
|
||||||
</li>
|
|
||||||
<li class="toctree-l3"><a class="reference internal" href="../components.html#module-components.table_component">components.table_component module</a><ul>
|
|
||||||
<li class="toctree-l4"><a class="reference internal" href="../components.html#components.table_component.TableComponent"><code class="docutils literal notranslate"><span class="pre">TableComponent</span></code></a></li>
|
|
||||||
</ul>
|
|
||||||
</li>
|
|
||||||
<li class="toctree-l3"><a class="reference internal" href="../components.html#module-components.toolbar_component">components.toolbar_component module</a><ul>
|
|
||||||
<li class="toctree-l4"><a class="reference internal" href="../components.html#components.toolbar_component.ToolbarComponent"><code class="docutils literal notranslate"><span class="pre">ToolbarComponent</span></code></a></li>
|
|
||||||
</ul>
|
|
||||||
</li>
|
|
||||||
<li class="toctree-l3"><a class="reference internal" href="../components.html#module-components">Module contents</a></li>
|
|
||||||
</ul>
|
|
||||||
</li>
|
|
||||||
<li class="toctree-l2"><a class="reference internal" href="../components_derived.html">components_derived package</a><ul>
|
|
||||||
<li class="toctree-l3"><a class="reference internal" href="../components_derived.html#submodules">Submodules</a></li>
|
|
||||||
<li class="toctree-l3"><a class="reference internal" href="../components_derived.html#module-components_derived.container_system_log_events">components_derived.container_system_log_events module</a><ul>
|
|
||||||
<li class="toctree-l4"><a class="reference internal" href="../components_derived.html#components_derived.container_system_log_events.SystemLogEventsContainer"><code class="docutils literal notranslate"><span class="pre">SystemLogEventsContainer</span></code></a></li>
|
|
||||||
</ul>
|
|
||||||
</li>
|
|
||||||
<li class="toctree-l3"><a class="reference internal" href="../components_derived.html#module-components_derived.date_input_component">components_derived.date_input_component module</a><ul>
|
|
||||||
<li class="toctree-l4"><a class="reference internal" href="../components_derived.html#components_derived.date_input_component.DateInput"><code class="docutils literal notranslate"><span class="pre">DateInput</span></code></a></li>
|
|
||||||
</ul>
|
|
||||||
</li>
|
|
||||||
<li class="toctree-l3"><a class="reference internal" href="../components_derived.html#module-components_derived.modal_add_AD_user">components_derived.modal_add_AD_user module</a><ul>
|
|
||||||
<li class="toctree-l4"><a class="reference internal" href="../components_derived.html#components_derived.modal_add_AD_user.AddADUserModalWindow"><code class="docutils literal notranslate"><span class="pre">AddADUserModalWindow</span></code></a></li>
|
|
||||||
</ul>
|
|
||||||
</li>
|
|
||||||
<li class="toctree-l3"><a class="reference internal" href="../components_derived.html#module-components_derived.modal_add_local_user">components_derived.modal_add_local_user module</a><ul>
|
|
||||||
<li class="toctree-l4"><a class="reference internal" href="../components_derived.html#components_derived.modal_add_local_user.AddLocalUserModalWindow"><code class="docutils literal notranslate"><span class="pre">AddLocalUserModalWindow</span></code></a></li>
|
|
||||||
</ul>
|
|
||||||
</li>
|
|
||||||
<li class="toctree-l3"><a class="reference internal" href="../components_derived.html#module-components_derived.modal_change_password">components_derived.modal_change_password module</a><ul>
|
|
||||||
<li class="toctree-l4"><a class="reference internal" href="../components_derived.html#components_derived.modal_change_password.ChangePasswordModalWindow"><code class="docutils literal notranslate"><span class="pre">ChangePasswordModalWindow</span></code></a></li>
|
|
||||||
</ul>
|
|
||||||
</li>
|
|
||||||
<li class="toctree-l3"><a class="reference internal" href="../components_derived.html#module-components_derived.modal_edit_user">components_derived.modal_edit_user module</a><ul>
|
|
||||||
<li class="toctree-l4"><a class="reference internal" href="../components_derived.html#components_derived.modal_edit_user.EditUserModalWindow"><code class="docutils literal notranslate"><span class="pre">EditUserModalWindow</span></code></a></li>
|
|
||||||
</ul>
|
|
||||||
</li>
|
|
||||||
<li class="toctree-l3"><a class="reference internal" href="../components_derived.html#module-components_derived.modal_view_template">components_derived.modal_view_template module</a><ul>
|
|
||||||
<li class="toctree-l4"><a class="reference internal" href="../components_derived.html#components_derived.modal_view_template.ViewTemplateModalWindow"><code class="docutils literal notranslate"><span class="pre">ViewTemplateModalWindow</span></code></a></li>
|
|
||||||
</ul>
|
|
||||||
</li>
|
|
||||||
<li class="toctree-l3"><a class="reference internal" href="../components_derived.html#module-components_derived.modal_view_ztp_template">components_derived.modal_view_ztp_template module</a><ul>
|
|
||||||
<li class="toctree-l4"><a class="reference internal" href="../components_derived.html#components_derived.modal_view_ztp_template.ViewZTPTemplateModalWindow"><code class="docutils literal notranslate"><span class="pre">ViewZTPTemplateModalWindow</span></code></a></li>
|
|
||||||
</ul>
|
|
||||||
</li>
|
|
||||||
<li class="toctree-l3"><a class="reference internal" href="../components_derived.html#module-components_derived.selection_bar_component">components_derived.selection_bar_component module</a><ul>
|
|
||||||
<li class="toctree-l4"><a class="reference internal" href="../components_derived.html#components_derived.selection_bar_component.SelectionBarComponent"><code class="docutils literal notranslate"><span class="pre">SelectionBarComponent</span></code></a></li>
|
|
||||||
</ul>
|
|
||||||
</li>
|
|
||||||
<li class="toctree-l3"><a class="reference internal" href="../components_derived.html#module-components_derived.sidebar_filter_component">components_derived.sidebar_filter_component module</a><ul>
|
|
||||||
<li class="toctree-l4"><a class="reference internal" href="../components_derived.html#components_derived.sidebar_filter_component.SidebarFilterComponent"><code class="docutils literal notranslate"><span class="pre">SidebarFilterComponent</span></code></a></li>
|
|
||||||
</ul>
|
|
||||||
</li>
|
|
||||||
<li class="toctree-l3"><a class="reference internal" href="../components_derived.html#module-components_derived.user_card">components_derived.user_card module</a><ul>
|
|
||||||
<li class="toctree-l4"><a class="reference internal" href="../components_derived.html#components_derived.user_card.UserCard"><code class="docutils literal notranslate"><span class="pre">UserCard</span></code></a></li>
|
|
||||||
</ul>
|
|
||||||
</li>
|
|
||||||
<li class="toctree-l3"><a class="reference internal" href="../components_derived.html#module-components_derived">Module contents</a></li>
|
|
||||||
</ul>
|
|
||||||
</li>
|
|
||||||
<li class="toctree-l2"><a class="reference internal" href="../conftest.html">conftest module</a><ul>
|
|
||||||
<li class="toctree-l3"><a class="reference internal" href="../conftest.html#conftest.pytest_sessionfinish"><code class="docutils literal notranslate"><span class="pre">pytest_sessionfinish()</span></code></a></li>
|
|
||||||
<li class="toctree-l3"><a class="reference internal" href="../conftest.html#conftest.pytest_addoption"><code class="docutils literal notranslate"><span class="pre">pytest_addoption()</span></code></a></li>
|
|
||||||
</ul>
|
|
||||||
</li>
|
|
||||||
<li class="toctree-l2"><a class="reference internal" href="../data.html">data package</a><ul>
|
|
||||||
<li class="toctree-l3"><a class="reference internal" href="../data.html#submodules">Submodules</a></li>
|
|
||||||
<li class="toctree-l3"><a class="reference internal" href="../data.html#module-data.constants">data.constants module</a><ul>
|
|
||||||
<li class="toctree-l4"><a class="reference internal" href="../data.html#data.constants.Constants"><code class="docutils literal notranslate"><span class="pre">Constants</span></code></a></li>
|
|
||||||
</ul>
|
|
||||||
</li>
|
|
||||||
<li class="toctree-l3"><a class="reference internal" href="../data.html#module-data.environment">data.environment module</a><ul>
|
|
||||||
<li class="toctree-l4"><a class="reference internal" href="../data.html#data.environment.Environment"><code class="docutils literal notranslate"><span class="pre">Environment</span></code></a></li>
|
|
||||||
</ul>
|
|
||||||
</li>
|
|
||||||
<li class="toctree-l3"><a class="reference internal" href="../data.html#module-data.roles_dict">data.roles_dict module</a></li>
|
|
||||||
<li class="toctree-l3"><a class="reference internal" href="../data.html#module-data">Module contents</a></li>
|
|
||||||
</ul>
|
|
||||||
</li>
|
|
||||||
<li class="toctree-l2"><a class="reference internal" href="../elements.html">elements package</a><ul>
|
|
||||||
<li class="toctree-l3"><a class="reference internal" href="../elements.html#submodules">Submodules</a></li>
|
|
||||||
<li class="toctree-l3"><a class="reference internal" href="../elements.html#module-elements.base_element">elements.base_element module</a><ul>
|
|
||||||
<li class="toctree-l4"><a class="reference internal" href="../elements.html#elements.base_element.BaseElement"><code class="docutils literal notranslate"><span class="pre">BaseElement</span></code></a></li>
|
|
||||||
</ul>
|
|
||||||
</li>
|
|
||||||
<li class="toctree-l3"><a class="reference internal" href="../elements.html#module-elements.button_element">elements.button_element module</a><ul>
|
|
||||||
<li class="toctree-l4"><a class="reference internal" href="../elements.html#elements.button_element.Button"><code class="docutils literal notranslate"><span class="pre">Button</span></code></a></li>
|
|
||||||
</ul>
|
|
||||||
</li>
|
|
||||||
<li class="toctree-l3"><a class="reference internal" href="../elements.html#module-elements.checkbox_element">elements.checkbox_element module</a><ul>
|
|
||||||
<li class="toctree-l4"><a class="reference internal" href="../elements.html#elements.checkbox_element.Checkbox"><code class="docutils literal notranslate"><span class="pre">Checkbox</span></code></a></li>
|
|
||||||
</ul>
|
|
||||||
</li>
|
|
||||||
<li class="toctree-l3"><a class="reference internal" href="../elements.html#module-elements.icon_element">elements.icon_element module</a><ul>
|
|
||||||
<li class="toctree-l4"><a class="reference internal" href="../elements.html#elements.icon_element.Icon"><code class="docutils literal notranslate"><span class="pre">Icon</span></code></a></li>
|
|
||||||
</ul>
|
|
||||||
</li>
|
|
||||||
<li class="toctree-l3"><a class="reference internal" href="../elements.html#module-elements.tab_button_element">elements.tab_button_element module</a><ul>
|
|
||||||
<li class="toctree-l4"><a class="reference internal" href="../elements.html#elements.tab_button_element.TabButton"><code class="docutils literal notranslate"><span class="pre">TabButton</span></code></a></li>
|
|
||||||
</ul>
|
|
||||||
</li>
|
|
||||||
<li class="toctree-l3"><a class="reference internal" href="../elements.html#module-elements.text_element">elements.text_element module</a><ul>
|
|
||||||
<li class="toctree-l4"><a class="reference internal" href="../elements.html#elements.text_element.Text"><code class="docutils literal notranslate"><span class="pre">Text</span></code></a></li>
|
|
||||||
</ul>
|
|
||||||
</li>
|
|
||||||
<li class="toctree-l3"><a class="reference internal" href="../elements.html#module-elements.text_input_element">elements.text_input_element module</a><ul>
|
|
||||||
<li class="toctree-l4"><a class="reference internal" href="../elements.html#elements.text_input_element.TextInput"><code class="docutils literal notranslate"><span class="pre">TextInput</span></code></a></li>
|
|
||||||
</ul>
|
|
||||||
</li>
|
|
||||||
<li class="toctree-l3"><a class="reference internal" href="../elements.html#module-elements.tooltip_button_element">elements.tooltip_button_element module</a><ul>
|
|
||||||
<li class="toctree-l4"><a class="reference internal" href="../elements.html#elements.tooltip_button_element.TooltipButton"><code class="docutils literal notranslate"><span class="pre">TooltipButton</span></code></a></li>
|
|
||||||
</ul>
|
|
||||||
</li>
|
|
||||||
<li class="toctree-l3"><a class="reference internal" href="../elements.html#module-elements">Module contents</a></li>
|
|
||||||
</ul>
|
|
||||||
</li>
|
|
||||||
<li class="toctree-l2"><a class="reference internal" href="../fixtures.html">fixtures package</a><ul>
|
|
||||||
<li class="toctree-l3"><a class="reference internal" href="../fixtures.html#submodules">Submodules</a></li>
|
|
||||||
<li class="toctree-l3"><a class="reference internal" href="../fixtures.html#module-fixtures.pages">fixtures.pages module</a><ul>
|
|
||||||
<li class="toctree-l4"><a class="reference internal" href="../fixtures.html#fixtures.pages.pytest_addoption"><code class="docutils literal notranslate"><span class="pre">pytest_addoption()</span></code></a></li>
|
|
||||||
<li class="toctree-l4"><a class="reference internal" href="../fixtures.html#fixtures.pages.browser"><code class="docutils literal notranslate"><span class="pre">browser()</span></code></a></li>
|
|
||||||
<li class="toctree-l4"><a class="reference internal" href="../fixtures.html#fixtures.pages.get_firefox_browser"><code class="docutils literal notranslate"><span class="pre">get_firefox_browser()</span></code></a></li>
|
|
||||||
<li class="toctree-l4"><a class="reference internal" href="../fixtures.html#fixtures.pages.get_chrome_browser"><code class="docutils literal notranslate"><span class="pre">get_chrome_browser()</span></code></a></li>
|
|
||||||
<li class="toctree-l4"><a class="reference internal" href="../fixtures.html#fixtures.pages.get_remote_chrome"><code class="docutils literal notranslate"><span class="pre">get_remote_chrome()</span></code></a></li>
|
|
||||||
<li class="toctree-l4"><a class="reference internal" href="../fixtures.html#fixtures.pages.get_context"><code class="docutils literal notranslate"><span class="pre">get_context()</span></code></a></li>
|
|
||||||
<li class="toctree-l4"><a class="reference internal" href="../fixtures.html#fixtures.pages.return_back"><code class="docutils literal notranslate"><span class="pre">return_back()</span></code></a></li>
|
|
||||||
</ul>
|
|
||||||
</li>
|
|
||||||
<li class="toctree-l3"><a class="reference internal" href="../fixtures.html#module-fixtures">Module contents</a></li>
|
|
||||||
</ul>
|
|
||||||
</li>
|
|
||||||
<li class="toctree-l2"><a class="reference internal" href="../pages.html">pages package</a><ul>
|
|
||||||
<li class="toctree-l3"><a class="reference internal" href="../pages.html#submodules">Submodules</a></li>
|
|
||||||
<li class="toctree-l3"><a class="reference internal" href="../pages.html#module-pages.base_page">pages.base_page module</a><ul>
|
|
||||||
<li class="toctree-l4"><a class="reference internal" href="../pages.html#pages.base_page.BasePage"><code class="docutils literal notranslate"><span class="pre">BasePage</span></code></a></li>
|
|
||||||
</ul>
|
|
||||||
</li>
|
|
||||||
<li class="toctree-l3"><a class="reference internal" href="../pages.html#module-pages.current_session_tab">pages.current_session_tab module</a><ul>
|
|
||||||
<li class="toctree-l4"><a class="reference internal" href="../pages.html#pages.current_session_tab.CurrentSessionsTab"><code class="docutils literal notranslate"><span class="pre">CurrentSessionsTab</span></code></a></li>
|
|
||||||
</ul>
|
|
||||||
</li>
|
|
||||||
<li class="toctree-l3"><a class="reference internal" href="../pages.html#module-pages.license_tab">pages.license_tab module</a><ul>
|
|
||||||
<li class="toctree-l4"><a class="reference internal" href="../pages.html#pages.license_tab.LicenseTab"><code class="docutils literal notranslate"><span class="pre">LicenseTab</span></code></a></li>
|
|
||||||
</ul>
|
|
||||||
</li>
|
|
||||||
<li class="toctree-l3"><a class="reference internal" href="../pages.html#module-pages.location_page">pages.location_page module</a><ul>
|
|
||||||
<li class="toctree-l4"><a class="reference internal" href="../pages.html#pages.location_page.LocationPage"><code class="docutils literal notranslate"><span class="pre">LocationPage</span></code></a></li>
|
|
||||||
</ul>
|
|
||||||
</li>
|
|
||||||
<li class="toctree-l3"><a class="reference internal" href="../pages.html#module-pages.login_page">pages.login_page module</a><ul>
|
|
||||||
<li class="toctree-l4"><a class="reference internal" href="../pages.html#pages.login_page.LoginPage"><code class="docutils literal notranslate"><span class="pre">LoginPage</span></code></a></li>
|
|
||||||
</ul>
|
|
||||||
</li>
|
|
||||||
<li class="toctree-l3"><a class="reference internal" href="../pages.html#module-pages.main_page">pages.main_page module</a><ul>
|
|
||||||
<li class="toctree-l4"><a class="reference internal" href="../pages.html#pages.main_page.MainPage"><code class="docutils literal notranslate"><span class="pre">MainPage</span></code></a></li>
|
|
||||||
</ul>
|
|
||||||
</li>
|
|
||||||
<li class="toctree-l3"><a class="reference internal" href="../pages.html#module-pages.service_status_tab">pages.service_status_tab module</a><ul>
|
|
||||||
<li class="toctree-l4"><a class="reference internal" href="../pages.html#pages.service_status_tab.ServiceStatusTab"><code class="docutils literal notranslate"><span class="pre">ServiceStatusTab</span></code></a></li>
|
|
||||||
</ul>
|
|
||||||
</li>
|
|
||||||
<li class="toctree-l3"><a class="reference internal" href="../pages.html#module-pages.session_settings_tab">pages.session_settings_tab module</a><ul>
|
|
||||||
<li class="toctree-l4"><a class="reference internal" href="../pages.html#pages.session_settings_tab.SessionSettingsTab"><code class="docutils literal notranslate"><span class="pre">SessionSettingsTab</span></code></a></li>
|
|
||||||
</ul>
|
|
||||||
</li>
|
|
||||||
<li class="toctree-l3"><a class="reference internal" href="../pages.html#module-pages.templates_tab">pages.templates_tab module</a><ul>
|
|
||||||
<li class="toctree-l4"><a class="reference internal" href="../pages.html#pages.templates_tab.TemplatesTab"><code class="docutils literal notranslate"><span class="pre">TemplatesTab</span></code></a></li>
|
|
||||||
</ul>
|
|
||||||
</li>
|
|
||||||
<li class="toctree-l3"><a class="reference internal" href="../pages.html#module-pages.users_tab">pages.users_tab module</a><ul>
|
|
||||||
<li class="toctree-l4"><a class="reference internal" href="../pages.html#pages.users_tab.UsersTab"><code class="docutils literal notranslate"><span class="pre">UsersTab</span></code></a></li>
|
|
||||||
</ul>
|
|
||||||
</li>
|
|
||||||
<li class="toctree-l3"><a class="reference internal" href="../pages.html#module-pages.ztp_config_tab">pages.ztp_config_tab module</a><ul>
|
|
||||||
<li class="toctree-l4"><a class="reference internal" href="../pages.html#pages.ztp_config_tab.ZTPConfigTab"><code class="docutils literal notranslate"><span class="pre">ZTPConfigTab</span></code></a></li>
|
|
||||||
</ul>
|
|
||||||
</li>
|
|
||||||
<li class="toctree-l3"><a class="reference internal" href="../pages.html#module-pages.ztp_templates_tab">pages.ztp_templates_tab module</a><ul>
|
|
||||||
<li class="toctree-l4"><a class="reference internal" href="../pages.html#pages.ztp_templates_tab.ZTPTemplatesTab"><code class="docutils literal notranslate"><span class="pre">ZTPTemplatesTab</span></code></a></li>
|
|
||||||
</ul>
|
|
||||||
</li>
|
|
||||||
<li class="toctree-l3"><a class="reference internal" href="../pages.html#module-pages">Module contents</a></li>
|
|
||||||
</ul>
|
|
||||||
</li>
|
|
||||||
<li class="toctree-l2"><a class="reference internal" href="../tools.html">tools package</a><ul>
|
|
||||||
<li class="toctree-l3"><a class="reference internal" href="../tools.html#submodules">Submodules</a></li>
|
|
||||||
<li class="toctree-l3"><a class="reference internal" href="../tools.html#module-tools.fix_python_project">tools.fix_python_project module</a><ul>
|
|
||||||
<li class="toctree-l4"><a class="reference internal" href="../tools.html#tools.fix_python_project.ProjectFixer"><code class="docutils literal notranslate"><span class="pre">ProjectFixer</span></code></a></li>
|
|
||||||
</ul>
|
|
||||||
</li>
|
|
||||||
<li class="toctree-l3"><a class="reference internal" href="../tools.html#module-tools.logger">tools.logger module</a><ul>
|
|
||||||
<li class="toctree-l4"><a class="reference internal" href="../tools.html#tools.logger.get_logger"><code class="docutils literal notranslate"><span class="pre">get_logger()</span></code></a></li>
|
|
||||||
</ul>
|
|
||||||
</li>
|
|
||||||
<li class="toctree-l3"><a class="reference internal" href="../tools.html#module-tools">Module contents</a></li>
|
|
||||||
</ul>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</nav>
|
|
||||||
|
|
||||||
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Меню навигации для мобильных устройств" >
|
|
||||||
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
|
|
||||||
<a href="../index.html">e-nms-qa-automation</a>
|
|
||||||
</nav>
|
|
||||||
|
|
||||||
<div class="wy-nav-content">
|
|
||||||
<div class="rst-content">
|
|
||||||
<div role="navigation" aria-label="Навигация по страницам">
|
|
||||||
<ul class="wy-breadcrumbs">
|
|
||||||
<li><a href="../index.html" class="icon icon-home" aria-label="Home"></a></li>
|
|
||||||
<li class="breadcrumb-item active">Обзор: исходный код модуля</li>
|
|
||||||
<li class="wy-breadcrumbs-aside">
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
<hr/>
|
|
||||||
</div>
|
|
||||||
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
|
|
||||||
<div itemprop="articleBody">
|
|
||||||
|
|
||||||
<h1>Все модули, в которых есть код</h1>
|
|
||||||
<ul><li><a href="components/alert_component.html">components.alert_component</a></li>
|
|
||||||
<li><a href="components/base_component.html">components.base_component</a></li>
|
|
||||||
<li><a href="components/card_component.html">components.card_component</a></li>
|
|
||||||
<li><a href="components/confirm_component.html">components.confirm_component</a></li>
|
|
||||||
<li><a href="components/date_picker_component.html">components.date_picker_component</a></li>
|
|
||||||
<li><a href="components/dropdown_list_component.html">components.dropdown_list_component</a></li>
|
|
||||||
<li><a href="components/eventbar_component.html">components.eventbar_component</a></li>
|
|
||||||
<li><a href="components/events_container_component.html">components.events_container_component</a></li>
|
|
||||||
<li><a href="components/json_container_component.html">components.json_container_component</a></li>
|
|
||||||
<li><a href="components/modal_window_component.html">components.modal_window_component</a></li>
|
|
||||||
<li><a href="components/navbar_component.html">components.navbar_component</a></li>
|
|
||||||
<li><a href="components/settings_form_component.html">components.settings_form_component</a></li>
|
|
||||||
<li><a href="components/table_component.html">components.table_component</a></li>
|
|
||||||
<li><a href="components/toolbar_component.html">components.toolbar_component</a></li>
|
|
||||||
<li><a href="components_derived/container_system_log_events.html">components_derived.container_system_log_events</a></li>
|
|
||||||
<li><a href="components_derived/date_input_component.html">components_derived.date_input_component</a></li>
|
|
||||||
<li><a href="components_derived/modal_add_AD_user.html">components_derived.modal_add_AD_user</a></li>
|
|
||||||
<li><a href="components_derived/modal_add_local_user.html">components_derived.modal_add_local_user</a></li>
|
|
||||||
<li><a href="components_derived/modal_change_password.html">components_derived.modal_change_password</a></li>
|
|
||||||
<li><a href="components_derived/modal_edit_user.html">components_derived.modal_edit_user</a></li>
|
|
||||||
<li><a href="components_derived/modal_view_template.html">components_derived.modal_view_template</a></li>
|
|
||||||
<li><a href="components_derived/modal_view_ztp_template.html">components_derived.modal_view_ztp_template</a></li>
|
|
||||||
<li><a href="components_derived/selection_bar_component.html">components_derived.selection_bar_component</a></li>
|
|
||||||
<li><a href="components_derived/sidebar_filter_component.html">components_derived.sidebar_filter_component</a></li>
|
|
||||||
<li><a href="components_derived/user_card.html">components_derived.user_card</a></li>
|
|
||||||
<li><a href="conftest.html">conftest</a></li>
|
|
||||||
<li><a href="data/constants.html">data.constants</a></li>
|
|
||||||
<li><a href="data/environment.html">data.environment</a></li>
|
|
||||||
<li><a href="elements/base_element.html">elements.base_element</a></li>
|
|
||||||
<li><a href="elements/button_element.html">elements.button_element</a></li>
|
|
||||||
<li><a href="elements/checkbox_element.html">elements.checkbox_element</a></li>
|
|
||||||
<li><a href="elements/icon_element.html">elements.icon_element</a></li>
|
|
||||||
<li><a href="elements/tab_button_element.html">elements.tab_button_element</a></li>
|
|
||||||
<li><a href="elements/text_element.html">elements.text_element</a></li>
|
|
||||||
<li><a href="elements/text_input_element.html">elements.text_input_element</a></li>
|
|
||||||
<li><a href="elements/tooltip_button_element.html">elements.tooltip_button_element</a></li>
|
|
||||||
<li><a href="fixtures/pages.html">fixtures.pages</a></li>
|
|
||||||
<li><a href="pages/base_page.html">pages.base_page</a></li>
|
|
||||||
<li><a href="pages/current_session_tab.html">pages.current_session_tab</a></li>
|
|
||||||
<li><a href="pages/license_tab.html">pages.license_tab</a></li>
|
|
||||||
<li><a href="pages/location_page.html">pages.location_page</a></li>
|
|
||||||
<li><a href="pages/login_page.html">pages.login_page</a></li>
|
|
||||||
<li><a href="pages/main_page.html">pages.main_page</a></li>
|
|
||||||
<li><a href="pages/service_status_tab.html">pages.service_status_tab</a></li>
|
|
||||||
<li><a href="pages/session_settings_tab.html">pages.session_settings_tab</a></li>
|
|
||||||
<li><a href="pages/templates_tab.html">pages.templates_tab</a></li>
|
|
||||||
<li><a href="pages/users_tab.html">pages.users_tab</a></li>
|
|
||||||
<li><a href="pages/ztp_config_tab.html">pages.ztp_config_tab</a></li>
|
|
||||||
<li><a href="pages/ztp_templates_tab.html">pages.ztp_templates_tab</a></li>
|
|
||||||
<li><a href="tools/fix_python_project.html">tools.fix_python_project</a></li>
|
|
||||||
<li><a href="tools/logger.html">tools.logger</a></li>
|
|
||||||
</ul>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<footer>
|
|
||||||
|
|
||||||
<hr/>
|
|
||||||
|
|
||||||
<div role="contentinfo">
|
|
||||||
<p>© Авторские права 2025, NPO KIS. </p>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
Собрано при помощи <a href="https://www.sphinx-doc.org/">Sphinx</a> с использованием
|
|
||||||
<a href="https://github.com/readthedocs/sphinx_rtd_theme">темы,</a>
|
|
||||||
предоставленной <a href="https://readthedocs.org">Read the Docs</a>.
|
|
||||||
|
|
||||||
|
|
||||||
</footer>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</section>
|
|
||||||
</div>
|
|
||||||
<script>
|
|
||||||
jQuery(function () {
|
|
||||||
SphinxRtdTheme.Navigation.enable(true);
|
|
||||||
});
|
|
||||||
</script>
|
|
||||||
|
|
||||||
</body>
|
|
||||||
</html>
|
|
||||||
|
|
@ -1,385 +0,0 @@
|
||||||
|
|
||||||
|
|
||||||
<!DOCTYPE html>
|
|
||||||
<html class="writer-html5" lang="ru" data-content_root="../../">
|
|
||||||
<head>
|
|
||||||
<meta charset="utf-8" />
|
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
||||||
<title>pages.base_page — документация e-nms-qa-automation 0.1.0</title>
|
|
||||||
<link rel="stylesheet" type="text/css" href="../../_static/pygments.css?v=b86133f3" />
|
|
||||||
<link rel="stylesheet" type="text/css" href="../../_static/css/theme.css?v=e59714d7" />
|
|
||||||
|
|
||||||
|
|
||||||
<script src="../../_static/jquery.js?v=5d32c60e"></script>
|
|
||||||
<script src="../../_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script>
|
|
||||||
<script src="../../_static/documentation_options.js?v=6ff560e8"></script>
|
|
||||||
<script src="../../_static/doctools.js?v=9bcbadda"></script>
|
|
||||||
<script src="../../_static/sphinx_highlight.js?v=dc90522c"></script>
|
|
||||||
<script src="../../_static/translations.js?v=cd1d70c9"></script>
|
|
||||||
<script src="../../_static/js/theme.js"></script>
|
|
||||||
<link rel="index" title="Алфавитный указатель" href="../../genindex.html" />
|
|
||||||
<link rel="search" title="Поиск" href="../../search.html" />
|
|
||||||
</head>
|
|
||||||
|
|
||||||
<body class="wy-body-for-nav">
|
|
||||||
<div class="wy-grid-for-nav">
|
|
||||||
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
|
|
||||||
<div class="wy-side-scroll">
|
|
||||||
<div class="wy-side-nav-search" >
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<a href="../../index.html" class="icon icon-home">
|
|
||||||
e-nms-qa-automation
|
|
||||||
</a>
|
|
||||||
<div role="search">
|
|
||||||
<form id="rtd-search-form" class="wy-form" action="../../search.html" method="get">
|
|
||||||
<input type="text" name="q" placeholder="Поиск в документации" aria-label="Поиск в документации" />
|
|
||||||
<input type="hidden" name="check_keywords" value="yes" />
|
|
||||||
<input type="hidden" name="area" value="default" />
|
|
||||||
</form>
|
|
||||||
</div>
|
|
||||||
</div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Меню навигации">
|
|
||||||
<!-- Local TOC -->
|
|
||||||
<div class="local-toc"></div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</nav>
|
|
||||||
|
|
||||||
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Меню навигации для мобильных устройств" >
|
|
||||||
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
|
|
||||||
<a href="../../index.html">e-nms-qa-automation</a>
|
|
||||||
</nav>
|
|
||||||
|
|
||||||
<div class="wy-nav-content">
|
|
||||||
<div class="rst-content">
|
|
||||||
<div role="navigation" aria-label="Навигация по страницам">
|
|
||||||
<ul class="wy-breadcrumbs">
|
|
||||||
<li><a href="../../index.html" class="icon icon-home" aria-label="Home"></a></li>
|
|
||||||
<li class="breadcrumb-item"><a href="../index.html">Код модуля</a></li>
|
|
||||||
<li class="breadcrumb-item active">pages.base_page</li>
|
|
||||||
<li class="wy-breadcrumbs-aside">
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
<hr/>
|
|
||||||
</div>
|
|
||||||
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
|
|
||||||
<div itemprop="articleBody">
|
|
||||||
|
|
||||||
<h1>Исходный код pages.base_page</h1><div class="highlight"><pre>
|
|
||||||
<span></span><span class="sd">"""Базовый класс страницы для работы с Playwright.</span>
|
|
||||||
|
|
||||||
<span class="sd">Содержит общие методы для взаимодействия со страницей и API.</span>
|
|
||||||
<span class="sd">"""</span>
|
|
||||||
<span class="kn">import</span><span class="w"> </span><span class="nn">time</span>
|
|
||||||
<span class="kn">import</span><span class="w"> </span><span class="nn">json</span>
|
|
||||||
<span class="kn">from</span><span class="w"> </span><span class="nn">typing</span><span class="w"> </span><span class="kn">import</span> <span class="n">Dict</span><span class="p">,</span> <span class="n">Any</span>
|
|
||||||
<span class="kn">from</span><span class="w"> </span><span class="nn">playwright.sync_api</span><span class="w"> </span><span class="kn">import</span> <span class="n">Page</span><span class="p">,</span> <span class="n">Response</span><span class="p">,</span> <span class="n">APIRequestContext</span><span class="p">,</span> <span class="n">expect</span>
|
|
||||||
<span class="kn">from</span><span class="w"> </span><span class="nn">data.environment</span><span class="w"> </span><span class="kn">import</span> <span class="n">host</span>
|
|
||||||
<span class="kn">from</span><span class="w"> </span><span class="nn">tools.logger</span><span class="w"> </span><span class="kn">import</span> <span class="n">get_logger</span>
|
|
||||||
|
|
||||||
<span class="n">logger</span> <span class="o">=</span> <span class="n">get_logger</span><span class="p">(</span><span class="s2">"BASE_PAGE"</span><span class="p">)</span>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="BasePage">
|
|
||||||
<a class="viewcode-back" href="../../pages.html#pages.base_page.BasePage">[документация]</a>
|
|
||||||
<span class="k">class</span><span class="w"> </span><span class="nc">BasePage</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Базовый класс для работы со страницами через Playwright.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Атрибуты:</span>
|
|
||||||
<span class="sd"> page (Page): Экземпляр страницы Playwright.</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="BasePage.__init__">
|
|
||||||
<a class="viewcode-back" href="../../pages.html#pages.base_page.BasePage.__init__">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">page</span><span class="p">:</span> <span class="n">Page</span><span class="p">):</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Инициализирует базовую страницу.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Args:</span>
|
|
||||||
<span class="sd"> page (Page): Экземпляр страницы Playwright.</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">page</span> <span class="o">=</span> <span class="n">page</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<span class="c1"># Действия:</span>
|
|
||||||
<div class="viewcode-block" id="BasePage.current_url">
|
|
||||||
<a class="viewcode-back" href="../../pages.html#pages.base_page.BasePage.current_url">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">current_url</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Возвращает текущий URL страницы.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Returns:</span>
|
|
||||||
<span class="sd"> str: Текущий URL страницы.</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">page</span><span class="o">.</span><span class="n">url</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="BasePage.open">
|
|
||||||
<a class="viewcode-back" href="../../pages.html#pages.base_page.BasePage.open">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">open</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">uri</span><span class="p">)</span> <span class="o">-></span> <span class="n">Response</span> <span class="o">|</span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Открывает указанный URI в браузере.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Args:</span>
|
|
||||||
<span class="sd"> uri (str): URI для открытия (без базового URL).</span>
|
|
||||||
|
|
||||||
<span class="sd"> Returns:</span>
|
|
||||||
<span class="sd"> Response | None: Ответ сервера или None в случае ошибки.</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">page</span><span class="o">.</span><span class="n">goto</span><span class="p">(</span><span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">host</span><span class="o">.</span><span class="n">get_base_url</span><span class="p">()</span><span class="si">}{</span><span class="n">uri</span><span class="si">}</span><span class="s2">"</span><span class="p">,</span> <span class="n">wait_until</span><span class="o">=</span><span class="s1">'domcontentloaded'</span><span class="p">)</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="BasePage.page_reload">
|
|
||||||
<a class="viewcode-back" href="../../pages.html#pages.base_page.BasePage.page_reload">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">page_reload</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Перезагружает текущую страницу."""</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">page</span><span class="o">.</span><span class="n">reload</span><span class="p">()</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="BasePage.wait_for_timeout">
|
|
||||||
<a class="viewcode-back" href="../../pages.html#pages.base_page.BasePage.wait_for_timeout">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">wait_for_timeout</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">timeout</span><span class="p">:</span> <span class="nb">int</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Ожидает указанное количество миллисекунд.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Args:</span>
|
|
||||||
<span class="sd"> timeout (int): Время ожидания в миллисекундах.</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">page</span><span class="o">.</span><span class="n">wait_for_timeout</span><span class="p">(</span><span class="n">timeout</span><span class="p">)</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="BasePage.get_api_request_context">
|
|
||||||
<a class="viewcode-back" href="../../pages.html#pages.base_page.BasePage.get_api_request_context">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">get_api_request_context</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">APIRequestContext</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Возвращает контекст API-запросов.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Returns:</span>
|
|
||||||
<span class="sd"> APIRequestContext: Контекст для выполнения API-запросов.</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">page</span><span class="o">.</span><span class="n">context</span><span class="o">.</span><span class="n">request</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="BasePage.send_get_api_request">
|
|
||||||
<a class="viewcode-back" href="../../pages.html#pages.base_page.BasePage.send_get_api_request">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">send_get_api_request</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">uri</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="n">Response</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Отправляет GET-запрос к API.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Args:</span>
|
|
||||||
<span class="sd"> uri (str): URI API-эндпоинта (без базового URL).</span>
|
|
||||||
|
|
||||||
<span class="sd"> Returns:</span>
|
|
||||||
<span class="sd"> Response: Ответ сервера.</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
<span class="n">api_request_context</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_api_request_context</span><span class="p">()</span>
|
|
||||||
<span class="n">token</span> <span class="o">=</span> <span class="n">host</span><span class="o">.</span><span class="n">get_access_token</span><span class="p">()</span>
|
|
||||||
|
|
||||||
<span class="c1"># Проверяем что токен получен</span>
|
|
||||||
<span class="k">if</span> <span class="ow">not</span> <span class="n">token</span><span class="p">:</span>
|
|
||||||
<span class="n">logger</span><span class="o">.</span><span class="n">error</span><span class="p">(</span><span class="s2">"Failed to get access token: token is None or empty"</span><span class="p">)</span>
|
|
||||||
<span class="c1"># Возвращаем заглушечный response или бросаем исключение</span>
|
|
||||||
<span class="c1"># В Playwright можно создать mock response если нужно</span>
|
|
||||||
<span class="k">return</span> <span class="kc">None</span>
|
|
||||||
|
|
||||||
<span class="n">headers</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"Accept"</span><span class="p">:</span> <span class="s2">"application/json"</span><span class="p">,</span> <span class="s2">"Authorization"</span><span class="p">:</span> <span class="sa">f</span><span class="s2">"Bearer </span><span class="si">{</span><span class="n">token</span><span class="si">}</span><span class="s2">"</span><span class="p">}</span>
|
|
||||||
<span class="n">full_url</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">host</span><span class="o">.</span><span class="n">get_request_url</span><span class="p">()</span><span class="si">}{</span><span class="n">uri</span><span class="si">}</span><span class="s2">"</span>
|
|
||||||
|
|
||||||
<span class="n">logger</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s2">"Sending GET request to: </span><span class="si">%s</span><span class="s2">"</span><span class="p">,</span> <span class="n">full_url</span><span class="p">)</span>
|
|
||||||
<span class="n">response</span> <span class="o">=</span> <span class="n">api_request_context</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">full_url</span><span class="p">,</span> <span class="n">headers</span><span class="o">=</span><span class="n">headers</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="c1"># Логируем статус ответа</span>
|
|
||||||
<span class="n">logger</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s2">"GET response status: </span><span class="si">%s</span><span class="s2">"</span><span class="p">,</span> <span class="n">response</span><span class="o">.</span><span class="n">status</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="k">return</span> <span class="n">response</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="BasePage.send_post_api_request">
|
|
||||||
<a class="viewcode-back" href="../../pages.html#pages.base_page.BasePage.send_post_api_request">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">send_post_api_request</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">uri</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">payload</span><span class="p">:</span> <span class="n">Dict</span><span class="p">)</span> <span class="o">-></span> <span class="n">Response</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Отправляет POST-запрос к API."""</span>
|
|
||||||
<span class="n">api_request_context</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_api_request_context</span><span class="p">()</span>
|
|
||||||
<span class="n">token</span> <span class="o">=</span> <span class="n">host</span><span class="o">.</span><span class="n">get_access_token</span><span class="p">()</span>
|
|
||||||
|
|
||||||
<span class="k">if</span> <span class="ow">not</span> <span class="n">token</span><span class="p">:</span>
|
|
||||||
<span class="n">logger</span><span class="o">.</span><span class="n">error</span><span class="p">(</span><span class="s2">"Failed to get access token: token is None or empty"</span><span class="p">)</span>
|
|
||||||
<span class="k">return</span> <span class="kc">None</span>
|
|
||||||
|
|
||||||
<span class="n">headers</span> <span class="o">=</span> <span class="p">{</span>
|
|
||||||
<span class="s2">"Accept"</span><span class="p">:</span> <span class="s2">"application/json"</span><span class="p">,</span>
|
|
||||||
<span class="s2">"Content-Type"</span><span class="p">:</span> <span class="s2">"application/json"</span><span class="p">,</span>
|
|
||||||
<span class="s2">"Authorization"</span><span class="p">:</span> <span class="sa">f</span><span class="s2">"Bearer </span><span class="si">{</span><span class="n">token</span><span class="si">}</span><span class="s2">"</span>
|
|
||||||
<span class="p">}</span>
|
|
||||||
<span class="n">full_url</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">host</span><span class="o">.</span><span class="n">get_request_url</span><span class="p">()</span><span class="si">}{</span><span class="n">uri</span><span class="si">}</span><span class="s2">"</span>
|
|
||||||
|
|
||||||
<span class="n">logger</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s2">"Sending POST request to: </span><span class="si">%s</span><span class="s2">"</span><span class="p">,</span> <span class="n">full_url</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="c1"># Сериализуем payload в JSON</span>
|
|
||||||
<span class="n">json_data</span> <span class="o">=</span> <span class="n">json</span><span class="o">.</span><span class="n">dumps</span><span class="p">(</span><span class="n">payload</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="c1"># Проверяем что сериализация прошла успешно</span>
|
|
||||||
<span class="k">if</span> <span class="n">json_data</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="n">logger</span><span class="o">.</span><span class="n">error</span><span class="p">(</span><span class="s2">"Failed to serialize payload to JSON: result is None"</span><span class="p">)</span>
|
|
||||||
<span class="k">return</span> <span class="kc">None</span>
|
|
||||||
|
|
||||||
<span class="k">if</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">json_data</span><span class="p">,</span> <span class="nb">str</span><span class="p">):</span>
|
|
||||||
<span class="n">logger</span><span class="o">.</span><span class="n">error</span><span class="p">(</span><span class="s2">"Failed to serialize payload to JSON: expected string got </span><span class="si">%s</span><span class="s2">"</span><span class="p">,</span> <span class="nb">type</span><span class="p">(</span><span class="n">json_data</span><span class="p">))</span>
|
|
||||||
<span class="k">return</span> <span class="kc">None</span>
|
|
||||||
|
|
||||||
<span class="n">response</span> <span class="o">=</span> <span class="n">api_request_context</span><span class="o">.</span><span class="n">post</span><span class="p">(</span>
|
|
||||||
<span class="n">full_url</span><span class="p">,</span>
|
|
||||||
<span class="n">headers</span><span class="o">=</span><span class="n">headers</span><span class="p">,</span>
|
|
||||||
<span class="n">data</span><span class="o">=</span><span class="n">json_data</span> <span class="c1"># Передаем сериализованный JSON как data</span>
|
|
||||||
<span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="n">logger</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s2">"POST response status: </span><span class="si">%s</span><span class="s2">"</span><span class="p">,</span> <span class="n">response</span><span class="o">.</span><span class="n">status</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="k">return</span> <span class="n">response</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="BasePage.get_response_body">
|
|
||||||
<a class="viewcode-back" href="../../pages.html#pages.base_page.BasePage.get_response_body">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">get_response_body</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">response</span><span class="p">:</span> <span class="n">Response</span><span class="p">)</span> <span class="o">-></span> <span class="nb">dict</span> <span class="o">|</span> <span class="nb">list</span> <span class="o">|</span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Извлекает тело ответа в format JSON.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Args:</span>
|
|
||||||
<span class="sd"> response (Response): Ответ сервера.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Returns:</span>
|
|
||||||
<span class="sd"> dict | list | None: Распарсенное тело ответа или None в случае ошибки.</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
<span class="n">start_time</span> <span class="o">=</span> <span class="n">time</span><span class="o">.</span><span class="n">time</span><span class="p">()</span>
|
|
||||||
|
|
||||||
<span class="c1"># Проверяем что response не None</span>
|
|
||||||
<span class="k">if</span> <span class="n">response</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="n">logger</span><span class="o">.</span><span class="n">error</span><span class="p">(</span><span class="s2">"Response object is None"</span><span class="p">)</span>
|
|
||||||
<span class="n">processing_time</span> <span class="o">=</span> <span class="n">time</span><span class="o">.</span><span class="n">time</span><span class="p">()</span> <span class="o">-</span> <span class="n">start_time</span>
|
|
||||||
<span class="n">logger</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s2">"Response processing time1: </span><span class="si">%.3f</span><span class="s2"> seconds"</span><span class="p">,</span> <span class="n">processing_time</span><span class="p">)</span>
|
|
||||||
<span class="k">return</span> <span class="kc">None</span>
|
|
||||||
|
|
||||||
<span class="c1"># Проверяем статус ответа</span>
|
|
||||||
<span class="k">if</span> <span class="n">response</span><span class="o">.</span><span class="n">status</span> <span class="o">>=</span> <span class="mi">400</span><span class="p">:</span>
|
|
||||||
<span class="n">logger</span><span class="o">.</span><span class="n">error</span><span class="p">(</span><span class="s2">"API request failed with status </span><span class="si">%s</span><span class="s2">"</span><span class="p">,</span> <span class="n">response</span><span class="o">.</span><span class="n">status</span><span class="p">)</span>
|
|
||||||
<span class="n">processing_time</span> <span class="o">=</span> <span class="n">time</span><span class="o">.</span><span class="n">time</span><span class="p">()</span> <span class="o">-</span> <span class="n">start_time</span>
|
|
||||||
<span class="n">logger</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s2">"Response processing time2: </span><span class="si">%.3f</span><span class="s2"> seconds"</span><span class="p">,</span> <span class="n">processing_time</span><span class="p">)</span>
|
|
||||||
<span class="k">return</span> <span class="kc">None</span>
|
|
||||||
|
|
||||||
<span class="c1"># Пытаемся получить JSON</span>
|
|
||||||
<span class="n">json_result</span> <span class="o">=</span> <span class="n">response</span><span class="o">.</span><span class="n">json</span><span class="p">()</span>
|
|
||||||
|
|
||||||
<span class="c1"># Проверяем что результат не None</span>
|
|
||||||
<span class="k">if</span> <span class="n">json_result</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="n">logger</span><span class="o">.</span><span class="n">error</span><span class="p">(</span><span class="s2">"JSON parsing returned None"</span><span class="p">)</span>
|
|
||||||
<span class="n">processing_time</span> <span class="o">=</span> <span class="n">time</span><span class="o">.</span><span class="n">time</span><span class="p">()</span> <span class="o">-</span> <span class="n">start_time</span>
|
|
||||||
<span class="n">logger</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s2">"Response processing time3: </span><span class="si">%.3f</span><span class="s2"> seconds"</span><span class="p">,</span> <span class="n">processing_time</span><span class="p">)</span>
|
|
||||||
<span class="k">return</span> <span class="kc">None</span>
|
|
||||||
|
|
||||||
<span class="c1"># Принимаем как словари, так и списки</span>
|
|
||||||
<span class="k">if</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">json_result</span><span class="p">,</span> <span class="p">(</span><span class="nb">dict</span><span class="p">,</span> <span class="nb">list</span><span class="p">)):</span>
|
|
||||||
<span class="n">logger</span><span class="o">.</span><span class="n">error</span><span class="p">(</span><span class="s2">"Expected dict or list but got </span><span class="si">%s</span><span class="s2">"</span><span class="p">,</span> <span class="nb">type</span><span class="p">(</span><span class="n">json_result</span><span class="p">))</span>
|
|
||||||
<span class="n">processing_time</span> <span class="o">=</span> <span class="n">time</span><span class="o">.</span><span class="n">time</span><span class="p">()</span> <span class="o">-</span> <span class="n">start_time</span>
|
|
||||||
<span class="n">logger</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s2">"Response processing time4: </span><span class="si">%.3f</span><span class="s2"> seconds"</span><span class="p">,</span> <span class="n">processing_time</span><span class="p">)</span>
|
|
||||||
<span class="k">return</span> <span class="kc">None</span>
|
|
||||||
|
|
||||||
<span class="n">processing_time</span> <span class="o">=</span> <span class="n">time</span><span class="o">.</span><span class="n">time</span><span class="p">()</span> <span class="o">-</span> <span class="n">start_time</span>
|
|
||||||
<span class="n">logger</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s2">"Response processing time5: </span><span class="si">%.3f</span><span class="s2"> seconds"</span><span class="p">,</span> <span class="n">processing_time</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="k">return</span> <span class="n">json_result</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<span class="c1"># Проверки:</span>
|
|
||||||
<div class="viewcode-block" id="BasePage.check_URL">
|
|
||||||
<a class="viewcode-back" href="../../pages.html#pages.base_page.BasePage.check_URL">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">check_URL</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">uri</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">msg</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Проверяет, что текущий URL соответствует ожидаемому.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Args:</span>
|
|
||||||
<span class="sd"> uri (str): Ожидаемый URI (без базового URL).</span>
|
|
||||||
<span class="sd"> msg (str): Сообщение об ошибке при несоответствии.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Raises:</span>
|
|
||||||
<span class="sd"> AssertionError: Если URL не соответствует ожидаемому.</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
<span class="n">expect</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">page</span><span class="p">)</span><span class="o">.</span><span class="n">to_have_url</span><span class="p">(</span> <span class="c1"># pylint: disable=expression-not-assigned</span>
|
|
||||||
<span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">host</span><span class="o">.</span><span class="n">get_base_url</span><span class="p">()</span><span class="si">}{</span><span class="n">uri</span><span class="si">}</span><span class="s2">"</span><span class="p">,</span>
|
|
||||||
<span class="n">timeout</span><span class="o">=</span><span class="mi">60000</span>
|
|
||||||
<span class="p">),</span> <span class="n">msg</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="BasePage.check_equals">
|
|
||||||
<a class="viewcode-back" href="../../pages.html#pages.base_page.BasePage.check_equals">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">check_equals</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">actual</span><span class="p">:</span> <span class="n">Any</span><span class="p">,</span> <span class="n">expected</span><span class="p">:</span> <span class="n">Any</span><span class="p">,</span> <span class="n">msg</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Проверяет равенство фактического и ожидаемого значений.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Args:</span>
|
|
||||||
<span class="sd"> actual (Any): Фактическое значение.</span>
|
|
||||||
<span class="sd"> expected (Any): Ожидаемое значение.</span>
|
|
||||||
<span class="sd"> msg (str): Сообщение об ошибке при несоответствии.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Raises:</span>
|
|
||||||
<span class="sd"> AssertionError: Если значения не равны.</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
<span class="k">assert</span> <span class="n">actual</span> <span class="o">==</span> <span class="n">expected</span><span class="p">,</span> <span class="n">msg</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="BasePage.check_lists_equals">
|
|
||||||
<a class="viewcode-back" href="../../pages.html#pages.base_page.BasePage.check_lists_equals">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">check_lists_equals</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">actual</span><span class="p">:</span> <span class="nb">list</span><span class="p">,</span> <span class="n">expected</span><span class="p">:</span> <span class="nb">list</span><span class="p">,</span> <span class="n">msg</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Рекурсивно проверяет равенство двух списков.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Args:</span>
|
|
||||||
<span class="sd"> actual (list): Фактический список.</span>
|
|
||||||
<span class="sd"> expected (list): Ожидаемый список.</span>
|
|
||||||
<span class="sd"> msg (str): Сообщение об ошибке при несоответствии.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Raises:</span>
|
|
||||||
<span class="sd"> AssertionError: Если списки не равны.</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">compare_lists</span><span class="p">(</span><span class="n">list1</span><span class="p">:</span> <span class="nb">list</span><span class="p">,</span> <span class="n">list2</span><span class="p">:</span> <span class="nb">list</span><span class="p">)</span> <span class="o">-></span> <span class="nb">bool</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Вспомогательная функция для рекурсивного сравнения списков.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Args:</span>
|
|
||||||
<span class="sd"> list1 (list): Первый список для сравнения.</span>
|
|
||||||
<span class="sd"> list2 (list): Второй список для сравнения.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Returns:</span>
|
|
||||||
<span class="sd"> bool: True если списки идентичны, иначе False.</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
<span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">list1</span><span class="p">)</span> <span class="o">!=</span> <span class="nb">len</span><span class="p">(</span><span class="n">list2</span><span class="p">):</span>
|
|
||||||
<span class="k">return</span> <span class="kc">False</span>
|
|
||||||
<span class="k">for</span> <span class="n">item1</span><span class="p">,</span> <span class="n">item2</span> <span class="ow">in</span> <span class="nb">zip</span><span class="p">(</span><span class="n">list1</span><span class="p">,</span> <span class="n">list2</span><span class="p">):</span>
|
|
||||||
<span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">item1</span><span class="p">,</span> <span class="nb">list</span><span class="p">)</span> <span class="ow">and</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">item2</span><span class="p">,</span> <span class="nb">list</span><span class="p">):</span>
|
|
||||||
<span class="k">if</span> <span class="ow">not</span> <span class="n">compare_lists</span><span class="p">(</span><span class="n">item1</span><span class="p">,</span> <span class="n">item2</span><span class="p">):</span>
|
|
||||||
<span class="k">return</span> <span class="kc">False</span>
|
|
||||||
<span class="k">elif</span> <span class="n">item1</span> <span class="o">!=</span> <span class="n">item2</span><span class="p">:</span>
|
|
||||||
<span class="k">return</span> <span class="kc">False</span>
|
|
||||||
<span class="k">return</span> <span class="kc">True</span>
|
|
||||||
|
|
||||||
<span class="k">assert</span> <span class="n">compare_lists</span><span class="p">(</span><span class="n">actual</span><span class="p">,</span> <span class="n">expected</span><span class="p">),</span> <span class="n">msg</span></div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</pre></div>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<footer>
|
|
||||||
|
|
||||||
<hr/>
|
|
||||||
|
|
||||||
<div role="contentinfo">
|
|
||||||
<p>© Авторские права 2025, NPO KIS. </p>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
Собрано при помощи <a href="https://www.sphinx-doc.org/">Sphinx</a> с использованием
|
|
||||||
<a href="https://github.com/readthedocs/sphinx_rtd_theme">темы,</a>
|
|
||||||
предоставленной <a href="https://readthedocs.org">Read the Docs</a>.
|
|
||||||
|
|
||||||
|
|
||||||
</footer>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</section>
|
|
||||||
</div>
|
|
||||||
<script>
|
|
||||||
jQuery(function () {
|
|
||||||
SphinxRtdTheme.Navigation.enable(true);
|
|
||||||
});
|
|
||||||
</script>
|
|
||||||
|
|
||||||
</body>
|
|
||||||
</html>
|
|
||||||
|
|
@ -1,575 +0,0 @@
|
||||||
|
|
||||||
|
|
||||||
<!DOCTYPE html>
|
|
||||||
<html class="writer-html5" lang="ru" data-content_root="../../">
|
|
||||||
<head>
|
|
||||||
<meta charset="utf-8" />
|
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
||||||
<title>pages.current_session_tab — документация e-nms-qa-automation 0.1.0</title>
|
|
||||||
<link rel="stylesheet" type="text/css" href="../../_static/pygments.css?v=b86133f3" />
|
|
||||||
<link rel="stylesheet" type="text/css" href="../../_static/css/theme.css?v=e59714d7" />
|
|
||||||
|
|
||||||
|
|
||||||
<script src="../../_static/jquery.js?v=5d32c60e"></script>
|
|
||||||
<script src="../../_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script>
|
|
||||||
<script src="../../_static/documentation_options.js?v=6ff560e8"></script>
|
|
||||||
<script src="../../_static/doctools.js?v=9bcbadda"></script>
|
|
||||||
<script src="../../_static/sphinx_highlight.js?v=dc90522c"></script>
|
|
||||||
<script src="../../_static/translations.js?v=cd1d70c9"></script>
|
|
||||||
<script src="../../_static/js/theme.js"></script>
|
|
||||||
<link rel="index" title="Алфавитный указатель" href="../../genindex.html" />
|
|
||||||
<link rel="search" title="Поиск" href="../../search.html" />
|
|
||||||
</head>
|
|
||||||
|
|
||||||
<body class="wy-body-for-nav">
|
|
||||||
<div class="wy-grid-for-nav">
|
|
||||||
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
|
|
||||||
<div class="wy-side-scroll">
|
|
||||||
<div class="wy-side-nav-search" >
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<a href="../../index.html" class="icon icon-home">
|
|
||||||
e-nms-qa-automation
|
|
||||||
</a>
|
|
||||||
<div role="search">
|
|
||||||
<form id="rtd-search-form" class="wy-form" action="../../search.html" method="get">
|
|
||||||
<input type="text" name="q" placeholder="Поиск в документации" aria-label="Поиск в документации" />
|
|
||||||
<input type="hidden" name="check_keywords" value="yes" />
|
|
||||||
<input type="hidden" name="area" value="default" />
|
|
||||||
</form>
|
|
||||||
</div>
|
|
||||||
</div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Меню навигации">
|
|
||||||
<!-- Local TOC -->
|
|
||||||
<div class="local-toc"></div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</nav>
|
|
||||||
|
|
||||||
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Меню навигации для мобильных устройств" >
|
|
||||||
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
|
|
||||||
<a href="../../index.html">e-nms-qa-automation</a>
|
|
||||||
</nav>
|
|
||||||
|
|
||||||
<div class="wy-nav-content">
|
|
||||||
<div class="rst-content">
|
|
||||||
<div role="navigation" aria-label="Навигация по страницам">
|
|
||||||
<ul class="wy-breadcrumbs">
|
|
||||||
<li><a href="../../index.html" class="icon icon-home" aria-label="Home"></a></li>
|
|
||||||
<li class="breadcrumb-item"><a href="../index.html">Код модуля</a></li>
|
|
||||||
<li class="breadcrumb-item active">pages.current_session_tab</li>
|
|
||||||
<li class="wy-breadcrumbs-aside">
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
<hr/>
|
|
||||||
</div>
|
|
||||||
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
|
|
||||||
<div itemprop="articleBody">
|
|
||||||
|
|
||||||
<h1>Исходный код pages.current_session_tab</h1><div class="highlight"><pre>
|
|
||||||
<span></span><span class="sd">"""Модуль вкладки 'Сеансы/Текущие'.</span>
|
|
||||||
|
|
||||||
<span class="sd">Содержит класс CurrentSessionsTab для работы с таблицей сеансов.</span>
|
|
||||||
<span class="sd">Позволяет проверять состояние и взаимодействовать с элементами вкладки.</span>
|
|
||||||
<span class="sd">"""</span>
|
|
||||||
|
|
||||||
<span class="kn">from</span><span class="w"> </span><span class="nn">playwright.sync_api</span><span class="w"> </span><span class="kn">import</span> <span class="n">Page</span><span class="p">,</span> <span class="n">Locator</span>
|
|
||||||
<span class="kn">from</span><span class="w"> </span><span class="nn">locators.table_locators</span><span class="w"> </span><span class="kn">import</span> <span class="n">TableLocators</span>
|
|
||||||
<span class="kn">from</span><span class="w"> </span><span class="nn">locators.button_locators</span><span class="w"> </span><span class="kn">import</span> <span class="n">ButtonLocators</span>
|
|
||||||
<span class="kn">from</span><span class="w"> </span><span class="nn">elements.tooltip_button_element</span><span class="w"> </span><span class="kn">import</span> <span class="n">TooltipButton</span>
|
|
||||||
<span class="kn">from</span><span class="w"> </span><span class="nn">data.roles_dict</span><span class="w"> </span><span class="kn">import</span> <span class="n">roles_dict</span>
|
|
||||||
<span class="kn">from</span><span class="w"> </span><span class="nn">data.environment</span><span class="w"> </span><span class="kn">import</span> <span class="n">host</span>
|
|
||||||
<span class="kn">from</span><span class="w"> </span><span class="nn">components.toolbar_component</span><span class="w"> </span><span class="kn">import</span> <span class="n">ToolbarComponent</span>
|
|
||||||
<span class="kn">from</span><span class="w"> </span><span class="nn">components.table_component</span><span class="w"> </span><span class="kn">import</span> <span class="n">TableComponent</span>
|
|
||||||
<span class="kn">from</span><span class="w"> </span><span class="nn">components.confirm_component</span><span class="w"> </span><span class="kn">import</span> <span class="n">ConfirmComponent</span>
|
|
||||||
<span class="kn">from</span><span class="w"> </span><span class="nn">pages.base_page</span><span class="w"> </span><span class="kn">import</span> <span class="n">BasePage</span>
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="CurrentSessionsTab">
|
|
||||||
<a class="viewcode-back" href="../../pages.html#pages.current_session_tab.CurrentSessionsTab">[документация]</a>
|
|
||||||
<span class="k">class</span><span class="w"> </span><span class="nc">CurrentSessionsTab</span><span class="p">(</span><span class="n">BasePage</span><span class="p">):</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Класс для работы с вкладкой 'Сеансы/Текущие'.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Предоставляет методы для взаимодействия с таблицей сеансов и проверки</span>
|
|
||||||
<span class="sd"> её состояния.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Args:</span>
|
|
||||||
<span class="sd"> page: Экземпляр страницы Playwright.</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="CurrentSessionsTab.__init__">
|
|
||||||
<a class="viewcode-back" href="../../pages.html#pages.current_session_tab.CurrentSessionsTab.__init__">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">page</span><span class="p">:</span> <span class="n">Page</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Инициализирует компоненты вкладки 'Сеансы/Текущие'."""</span>
|
|
||||||
|
|
||||||
<span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="fm">__init__</span><span class="p">(</span><span class="n">page</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">toolbar</span> <span class="o">=</span> <span class="n">ToolbarComponent</span><span class="p">(</span><span class="n">page</span><span class="p">,</span> <span class="s2">"Сеансы"</span><span class="p">)</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">sessions_table</span> <span class="o">=</span> <span class="n">TableComponent</span><span class="p">(</span><span class="n">page</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">delete_session_confirm</span> <span class="o">=</span> <span class="n">ConfirmComponent</span><span class="p">(</span><span class="n">page</span><span class="p">,</span> <span class="s2">" Отмена "</span><span class="p">,</span> <span class="s2">" Удалить "</span><span class="p">)</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<span class="c1"># Действия:</span>
|
|
||||||
<div class="viewcode-block" id="CurrentSessionsTab.get_rows_count">
|
|
||||||
<a class="viewcode-back" href="../../pages.html#pages.current_session_tab.CurrentSessionsTab.get_rows_count">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">get_rows_count</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">int</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Возвращает количество строк в таблице (без заголовка).</span>
|
|
||||||
|
|
||||||
<span class="sd"> Returns:</span>
|
|
||||||
<span class="sd"> int: Количество строк с данными.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Raises:</span>
|
|
||||||
<span class="sd"> AssertionError: Если таблица пуста.</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
|
|
||||||
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">sessions_table</span><span class="o">.</span><span class="n">get_rows_count</span><span class="p">(</span><span class="n">TableLocators</span><span class="o">.</span><span class="n">TABLE_WORK_AREA</span><span class="p">)</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="CurrentSessionsTab.get_delete_session_button_from_row">
|
|
||||||
<a class="viewcode-back" href="../../pages.html#pages.current_session_tab.CurrentSessionsTab.get_delete_session_button_from_row">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">get_delete_session_button_from_row</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">row_index</span><span class="p">:</span> <span class="nb">int</span><span class="p">)</span> <span class="o">-></span> <span class="n">TooltipButton</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Возвращает кнопку удаления сеанса для указанной строки.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Args:</span>
|
|
||||||
<span class="sd"> row_index: Индекс строки в таблице.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Returns:</span>
|
|
||||||
<span class="sd"> TooltipButton: Кнопка с подсказкой.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Raises:</span>
|
|
||||||
<span class="sd"> AssertionError: Если строка не найдена.</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
|
|
||||||
<span class="n">row_locator</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sessions_table</span><span class="o">.</span><span class="n">get_row_locator</span><span class="p">(</span>
|
|
||||||
<span class="n">TableLocators</span><span class="o">.</span><span class="n">TABLE_WORK_AREA</span><span class="p">,</span>
|
|
||||||
<span class="n">row_index</span>
|
|
||||||
<span class="p">)</span>
|
|
||||||
<span class="k">assert</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">row_locator</span><span class="p">,</span> <span class="n">Locator</span><span class="p">),</span> <span class="sa">f</span><span class="s2">"Row with index </span><span class="si">{</span><span class="n">row_index</span><span class="si">}</span><span class="s2"> is missing"</span>
|
|
||||||
|
|
||||||
<span class="n">button_locator</span> <span class="o">=</span> <span class="n">row_locator</span><span class="o">.</span><span class="n">locator</span><span class="p">(</span><span class="n">ButtonLocators</span><span class="o">.</span><span class="n">BUTTON_DELETE_SESSION</span><span class="p">)</span>
|
|
||||||
<span class="k">return</span> <span class="n">TooltipButton</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">page</span><span class="p">,</span> <span class="n">button_locator</span><span class="p">,</span> <span class="s2">"delete_session_button"</span><span class="p">)</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="CurrentSessionsTab.get_session_token">
|
|
||||||
<a class="viewcode-back" href="../../pages.html#pages.current_session_tab.CurrentSessionsTab.get_session_token">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">get_session_token</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Возвращает токен текущего пользователя.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Args:</span>
|
|
||||||
|
|
||||||
<span class="sd"> Returns:</span>
|
|
||||||
<span class="sd"> str: Токен текущего пользователя</span>
|
|
||||||
|
|
||||||
<span class="sd"> Raises:</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
<span class="k">return</span> <span class="n">host</span><span class="o">.</span><span class="n">get_access_token</span><span class="p">()</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="CurrentSessionsTab.find_session_in_table">
|
|
||||||
<a class="viewcode-back" href="../../pages.html#pages.current_session_tab.CurrentSessionsTab.find_session_in_table">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">find_session_in_table</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">token</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="nb">int</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Ищет сеанс пользователя в таблице по выданному ему токену.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Args:</span>
|
|
||||||
<span class="sd"> token (str): Токен пользователя</span>
|
|
||||||
|
|
||||||
<span class="sd"> Returns:</span>
|
|
||||||
<span class="sd"> int: Индекс строки или -1 если не найден</span>
|
|
||||||
|
|
||||||
<span class="sd"> Raises:</span>
|
|
||||||
<span class="sd"> AssertionError: Если таблица пуста.</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
<span class="n">table_content</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sessions_table</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="n">TableLocators</span><span class="o">.</span><span class="n">TABLE_WORK_AREA</span><span class="p">)</span>
|
|
||||||
<span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">table_content</span><span class="p">)</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span>
|
|
||||||
<span class="k">assert</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"The contents of the table are missing"</span>
|
|
||||||
|
|
||||||
<span class="k">del</span> <span class="n">table_content</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="c1"># Удаляем заголовок</span>
|
|
||||||
|
|
||||||
<span class="k">for</span> <span class="n">row_index</span><span class="p">,</span> <span class="n">session_info</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="n">table_content</span><span class="p">):</span>
|
|
||||||
<span class="k">if</span> <span class="n">token</span> <span class="ow">in</span> <span class="n">session_info</span><span class="p">:</span>
|
|
||||||
<span class="k">return</span> <span class="n">row_index</span>
|
|
||||||
<span class="k">return</span> <span class="o">-</span><span class="mi">1</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="CurrentSessionsTab.delete_session_by_token">
|
|
||||||
<a class="viewcode-back" href="../../pages.html#pages.current_session_tab.CurrentSessionsTab.delete_session_by_token">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">delete_session_by_token</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">token</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Удаляет сеанс по токену.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Args:</span>
|
|
||||||
<span class="sd"> token (str): Токен сеанс для удаления</span>
|
|
||||||
|
|
||||||
<span class="sd"> Raises:</span>
|
|
||||||
<span class="sd"> AssertionError: Если сеанс не найден или удаление не удалось.</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
<span class="n">row_index</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">find_session_in_table</span><span class="p">(</span><span class="n">token</span><span class="p">)</span>
|
|
||||||
<span class="k">if</span> <span class="n">row_index</span> <span class="o">==</span> <span class="o">-</span><span class="mi">1</span><span class="p">:</span>
|
|
||||||
<span class="k">raise</span> <span class="ne">AssertionError</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Session with token </span><span class="si">{</span><span class="n">token</span><span class="si">}</span><span class="s2"> not found"</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">delete_session_by_index</span><span class="p">(</span><span class="n">row_index</span><span class="p">)</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="CurrentSessionsTab.delete_session_by_index">
|
|
||||||
<a class="viewcode-back" href="../../pages.html#pages.current_session_tab.CurrentSessionsTab.delete_session_by_index">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">delete_session_by_index</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">row_index</span><span class="p">:</span> <span class="nb">int</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Удаляет сеанс по индексу строки.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Args:</span>
|
|
||||||
<span class="sd"> row_index (int): Индекс строки в таблице</span>
|
|
||||||
|
|
||||||
<span class="sd"> Raises:</span>
|
|
||||||
<span class="sd"> AssertionError: Если удаление не удалось.</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
<span class="k">try</span><span class="p">:</span>
|
|
||||||
<span class="c1"># Находим кнопку удаления сеанса и нажимаем на нее</span>
|
|
||||||
<span class="n">delete_session_button</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_delete_session_button_from_row</span><span class="p">(</span><span class="n">row_index</span><span class="p">)</span>
|
|
||||||
<span class="n">delete_session_button</span><span class="o">.</span><span class="n">click</span><span class="p">()</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">page</span><span class="o">.</span><span class="n">wait_for_timeout</span><span class="p">(</span><span class="mi">1000</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="c1"># Подтверждаем удаление</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">delete_session_confirm</span><span class="o">.</span><span class="n">click_allow_button</span><span class="p">()</span>
|
|
||||||
|
|
||||||
<span class="c1"># Ждем обновления таблицы</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">page</span><span class="o">.</span><span class="n">wait_for_timeout</span><span class="p">(</span><span class="mi">1000</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="k">except</span> <span class="ne">Exception</span> <span class="k">as</span> <span class="n">e</span><span class="p">:</span>
|
|
||||||
<span class="k">raise</span> <span class="ne">AssertionError</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Failed to delete session at index </span><span class="si">{</span><span class="n">row_index</span><span class="si">}</span><span class="s2">: </span><span class="si">{</span><span class="n">e</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="CurrentSessionsTab.scroll_sessions_table_up">
|
|
||||||
<a class="viewcode-back" href="../../pages.html#pages.current_session_tab.CurrentSessionsTab.scroll_sessions_table_up">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">scroll_sessions_table_up</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Прокручивает таблицу сеансов вверх."""</span>
|
|
||||||
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">sessions_table</span><span class="o">.</span><span class="n">scroll_up</span><span class="p">(</span><span class="n">TableLocators</span><span class="o">.</span><span class="n">TABLE_SCROLL_CONTAINER</span><span class="p">)</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="CurrentSessionsTab.scroll_sessions_table_down">
|
|
||||||
<a class="viewcode-back" href="../../pages.html#pages.current_session_tab.CurrentSessionsTab.scroll_sessions_table_down">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">scroll_sessions_table_down</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Прокручивает таблицу сеансов вниз."""</span>
|
|
||||||
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">sessions_table</span><span class="o">.</span><span class="n">scroll_down</span><span class="p">(</span><span class="n">TableLocators</span><span class="o">.</span><span class="n">TABLE_SCROLL_CONTAINER</span><span class="p">)</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<span class="c1"># Проверки:</span>
|
|
||||||
<div class="viewcode-block" id="CurrentSessionsTab.check_delete_session_confirm_window">
|
|
||||||
<a class="viewcode-back" href="../../pages.html#pages.current_session_tab.CurrentSessionsTab.check_delete_session_confirm_window">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">check_delete_session_confirm_window</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
|
||||||
<span class="w"> </span><span class="sd">""" Проверяет контент и возможность горизонтального скроллинга окна подтверждения удаления сеанс. """</span>
|
|
||||||
|
|
||||||
<span class="c1"># Поиск в таблице сеанс сроки для текущего пользователя</span>
|
|
||||||
<span class="n">session_token</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_session_token</span><span class="p">()</span>
|
|
||||||
<span class="n">row_index</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">find_session_in_table</span><span class="p">(</span><span class="n">session_token</span><span class="p">)</span>
|
|
||||||
<span class="k">if</span> <span class="n">row_index</span> <span class="o">==</span> <span class="o">-</span><span class="mi">1</span><span class="p">:</span>
|
|
||||||
<span class="k">assert</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"Session for this token has not been found"</span>
|
|
||||||
|
|
||||||
<span class="c1"># Найти кнопку удаления сеанса и нажать на нее</span>
|
|
||||||
<span class="n">delete_session_button</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_delete_session_button_from_row</span><span class="p">(</span><span class="n">row_index</span><span class="p">)</span>
|
|
||||||
<span class="n">delete_session_button</span><span class="o">.</span><span class="n">click</span><span class="p">()</span>
|
|
||||||
|
|
||||||
<span class="c1"># Проверка открытия окна подтверждения с заголовком "Удаление"</span>
|
|
||||||
<span class="n">title</span> <span class="o">=</span> <span class="s2">"Удаление"</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">delete_session_confirm</span><span class="o">.</span><span class="n">check_title</span><span class="p">(</span>
|
|
||||||
<span class="n">title</span><span class="p">,</span>
|
|
||||||
<span class="sa">f</span><span class="s2">"Confirmation dialog window text '</span><span class="si">{</span><span class="n">title</span><span class="si">}</span><span class="s2">' is missing"</span>
|
|
||||||
<span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="c1"># Проверка текста в окне подтверждения</span>
|
|
||||||
<span class="n">confirm_message</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"Удалить сеанс </span><span class="si">{</span><span class="n">session_token</span><span class="si">}</span><span class="s2">?"</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">delete_session_confirm</span><span class="o">.</span><span class="n">check_text</span><span class="p">(</span>
|
|
||||||
<span class="n">confirm_message</span><span class="p">,</span>
|
|
||||||
<span class="s2">"Confirmation dialog window text does not match what is expected"</span>
|
|
||||||
<span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="c1"># Проверка наличия и видимости кнопки "Отмена"</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">delete_session_confirm</span><span class="o">.</span><span class="n">should_be_cancel_button</span><span class="p">()</span>
|
|
||||||
|
|
||||||
<span class="c1"># Проверка наличия и видимости кнопки "Удалить"</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">delete_session_confirm</span><span class="o">.</span><span class="n">should_be_allow_button</span><span class="p">()</span>
|
|
||||||
|
|
||||||
<span class="c1"># Проверка текста на кнопках</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">delete_session_confirm</span><span class="o">.</span><span class="n">check_cancel_button_text</span><span class="p">(</span><span class="s2">" Отмена "</span><span class="p">)</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">delete_session_confirm</span><span class="o">.</span><span class="n">check_allow_button_text</span><span class="p">(</span><span class="s2">" Удалить "</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="c1"># Проверка горизонтального скроллинга</span>
|
|
||||||
<span class="n">is_scrollable_horizontally</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">delete_session_confirm</span><span class="o">.</span><span class="n">check_window_horizontal_scrolling</span><span class="p">()</span>
|
|
||||||
<span class="k">assert</span> <span class="n">is_scrollable_horizontally</span><span class="p">,</span> <span class="s2">"Should be horizontal scrolling"</span>
|
|
||||||
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">delete_session_confirm</span><span class="o">.</span><span class="n">scroll_window_right</span><span class="p">()</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">page</span><span class="o">.</span><span class="n">wait_for_timeout</span><span class="p">(</span><span class="mi">3000</span><span class="p">)</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">delete_session_confirm</span><span class="o">.</span><span class="n">scroll_window_left</span><span class="p">()</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">page</span><span class="o">.</span><span class="n">wait_for_timeout</span><span class="p">(</span><span class="mi">2000</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="c1"># Нажать кнопку "Отмена"</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">delete_session_confirm</span><span class="o">.</span><span class="n">click_cancel_button</span><span class="p">()</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="CurrentSessionsTab.check_sessions_table_content">
|
|
||||||
<a class="viewcode-back" href="../../pages.html#pages.current_session_tab.CurrentSessionsTab.check_sessions_table_content">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">check_sessions_table_content</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">verify</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Проверяет содержимое таблицы сеансов.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Args:</span>
|
|
||||||
<span class="sd"> verify: Проверять соответствие данных из БД. По умолчанию False.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Raises:</span>
|
|
||||||
<span class="sd"> AssertionError: Если таблица пуста или заголовки неверны.</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
|
|
||||||
<span class="n">expected_headers</span> <span class="o">=</span> <span class="p">[</span>
|
|
||||||
<span class="s1">'ID сеанса'</span><span class="p">,</span>
|
|
||||||
<span class="s1">'ID пользователя'</span><span class="p">,</span>
|
|
||||||
<span class="s1">'Время жизни'</span><span class="p">,</span>
|
|
||||||
<span class="s1">'Роль'</span><span class="p">,</span>
|
|
||||||
<span class="s1">'Адрес'</span>
|
|
||||||
<span class="p">]</span>
|
|
||||||
|
|
||||||
|
|
||||||
<span class="n">table_content</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sessions_table</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="n">TableLocators</span><span class="o">.</span><span class="n">TABLE_WORK_AREA</span><span class="p">)</span>
|
|
||||||
<span class="n">len_table_content</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">table_content</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="k">if</span> <span class="n">len_table_content</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span>
|
|
||||||
<span class="k">assert</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"The contents of the table are missing"</span>
|
|
||||||
|
|
||||||
<span class="n">actual_headers</span> <span class="o">=</span> <span class="n">table_content</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span>
|
|
||||||
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">check_equals</span><span class="p">(</span>
|
|
||||||
<span class="n">actual_headers</span><span class="p">,</span>
|
|
||||||
<span class="n">expected_headers</span><span class="p">,</span>
|
|
||||||
<span class="sa">f</span><span class="s2">"Expected table headers </span><span class="si">{</span><span class="n">expected_headers</span><span class="si">}</span><span class="s2"> are not equal </span><span class="si">{</span><span class="n">actual_headers</span><span class="si">}</span><span class="s2">"</span>
|
|
||||||
<span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="k">if</span> <span class="n">len_table_content</span> <span class="o">==</span> <span class="mi">1</span><span class="p">:</span>
|
|
||||||
<span class="k">assert</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"Table body is missing"</span>
|
|
||||||
|
|
||||||
<span class="k">if</span> <span class="n">verify</span><span class="p">:</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">verify_sessions_table_content</span><span class="p">(</span><span class="n">table_content</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="k">for</span> <span class="n">index</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">len_table_content</span> <span class="o">-</span> <span class="mi">1</span><span class="p">):</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">should_be_delete_button_on_sessions_table_row</span><span class="p">(</span><span class="n">index</span><span class="p">,</span> <span class="s2">"Удалить"</span><span class="p">)</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="CurrentSessionsTab.check_sessions_table_verticall_scrolling">
|
|
||||||
<a class="viewcode-back" href="../../pages.html#pages.current_session_tab.CurrentSessionsTab.check_sessions_table_verticall_scrolling">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">check_sessions_table_verticall_scrolling</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">bool</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Проверяет возможность вертикальной прокрутки таблицы.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Returns:</span>
|
|
||||||
<span class="sd"> bool: True если прокрутка возможна, иначе False.</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
|
|
||||||
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">sessions_table</span><span class="o">.</span><span class="n">is_scrollable_vertically</span><span class="p">(</span>
|
|
||||||
<span class="n">TableLocators</span><span class="o">.</span><span class="n">TABLE_SCROLL_CONTAINER</span>
|
|
||||||
<span class="p">)</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="CurrentSessionsTab.check_sessions_table_first_row_visibility">
|
|
||||||
<a class="viewcode-back" href="../../pages.html#pages.current_session_tab.CurrentSessionsTab.check_sessions_table_first_row_visibility">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">check_sessions_table_first_row_visibility</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Проверяет видимость первой строки таблицы.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Raises:</span>
|
|
||||||
<span class="sd"> AssertionError: Если строка не видна.</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">sessions_table</span><span class="o">.</span><span class="n">check_first_row_visibility</span><span class="p">(</span><span class="n">TableLocators</span><span class="o">.</span><span class="n">TABLE_WORK_AREA</span><span class="p">)</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="CurrentSessionsTab.check_sessions_table_last_row_visibility">
|
|
||||||
<a class="viewcode-back" href="../../pages.html#pages.current_session_tab.CurrentSessionsTab.check_sessions_table_last_row_visibility">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">check_sessions_table_last_row_visibility</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Проверяет видимость последней строки таблицы.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Raises:</span>
|
|
||||||
<span class="sd"> AssertionError: Если строка не видна.</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">sessions_table</span><span class="o">.</span><span class="n">check_last_row_visibility</span><span class="p">(</span><span class="n">TableLocators</span><span class="o">.</span><span class="n">TABLE_WORK_AREA</span><span class="p">)</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="CurrentSessionsTab.check_sessions_table_row_highlighting">
|
|
||||||
<a class="viewcode-back" href="../../pages.html#pages.current_session_tab.CurrentSessionsTab.check_sessions_table_row_highlighting">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">check_sessions_table_row_highlighting</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">row_index</span><span class="p">:</span> <span class="nb">int</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Проверяет выделение указанной строки таблицы.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Args:</span>
|
|
||||||
<span class="sd"> row_index: Индекс проверяемой строки.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Raises:</span>
|
|
||||||
<span class="sd"> AssertionError: Если строка не выделена.</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">sessions_table</span><span class="o">.</span><span class="n">check_row_highlighting</span><span class="p">(</span>
|
|
||||||
<span class="n">TableLocators</span><span class="o">.</span><span class="n">TABLE_WORK_AREA</span><span class="p">,</span>
|
|
||||||
<span class="n">row_index</span>
|
|
||||||
<span class="p">)</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="CurrentSessionsTab.should_be_toolbar">
|
|
||||||
<a class="viewcode-back" href="../../pages.html#pages.current_session_tab.CurrentSessionsTab.should_be_toolbar">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">should_be_toolbar</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Проверяет наличие тулбара на вкладке.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Raises:</span>
|
|
||||||
<span class="sd"> AssertionError: Если тулбар отсутствует.</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">toolbar</span><span class="o">.</span><span class="n">check_toolbar_presence</span><span class="p">(</span><span class="s2">"Toolbar is missing"</span><span class="p">)</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="CurrentSessionsTab.should_be_sessions_table">
|
|
||||||
<a class="viewcode-back" href="../../pages.html#pages.current_session_tab.CurrentSessionsTab.should_be_sessions_table">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">should_be_sessions_table</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Проверяет наличие таблицы сеансов.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Raises:</span>
|
|
||||||
<span class="sd"> AssertionError: Если таблица отсутствует.</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">sessions_table</span><span class="o">.</span><span class="n">check_visibility</span><span class="p">(</span>
|
|
||||||
<span class="n">TableLocators</span><span class="o">.</span><span class="n">TABLE_WORK_AREA</span><span class="p">,</span>
|
|
||||||
<span class="s2">"Sessions table is missing"</span>
|
|
||||||
<span class="p">)</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="CurrentSessionsTab.should_be_delete_button_on_sessions_table_row">
|
|
||||||
<a class="viewcode-back" href="../../pages.html#pages.current_session_tab.CurrentSessionsTab.should_be_delete_button_on_sessions_table_row">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">should_be_delete_button_on_sessions_table_row</span><span class="p">(</span>
|
|
||||||
<span class="bp">self</span><span class="p">,</span>
|
|
||||||
<span class="n">row_index</span><span class="p">:</span> <span class="nb">int</span><span class="p">,</span>
|
|
||||||
<span class="n">tooltip</span><span class="p">:</span> <span class="nb">str</span>
|
|
||||||
<span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Проверяет наличие кнопки удаления в строке таблицы.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Args:</span>
|
|
||||||
<span class="sd"> row_index: Индекс проверяемой строки.</span>
|
|
||||||
<span class="sd"> tooltip: Ожидаемый текст подсказки.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Raises:</span>
|
|
||||||
<span class="sd"> AssertionError: Если кнопка отсутствует или подсказка неверна.</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
<span class="n">delete_button</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_delete_session_button_from_row</span><span class="p">(</span><span class="n">row_index</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="c1"># Ожидаем исчезновения предыдущих подсказок перед проверкой</span>
|
|
||||||
<span class="n">delete_button</span><span class="o">.</span><span class="n">wait_for_tooltip_to_disappear</span><span class="p">()</span>
|
|
||||||
|
|
||||||
<span class="n">delete_button</span><span class="o">.</span><span class="n">check_visibility</span><span class="p">(</span>
|
|
||||||
<span class="sa">f</span><span class="s2">"Delete session button is missing on </span><span class="si">{</span><span class="n">row_index</span><span class="si">}</span><span class="s2"> row"</span>
|
|
||||||
<span class="p">)</span>
|
|
||||||
<span class="n">delete_button</span><span class="o">.</span><span class="n">check_tooltip_with_text</span><span class="p">(</span><span class="n">tooltip</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="c1"># Ожидаем исчезновения подсказки после проверки</span>
|
|
||||||
<span class="n">delete_button</span><span class="o">.</span><span class="n">wait_for_tooltip_to_disappear</span><span class="p">()</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="CurrentSessionsTab.should_be_session_in_table">
|
|
||||||
<a class="viewcode-back" href="../../pages.html#pages.current_session_tab.CurrentSessionsTab.should_be_session_in_table">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">should_be_session_in_table</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">token</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Проверяет наличие сеанса пользователя в таблице.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Args:</span>
|
|
||||||
<span class="sd"> token (str): Токен пользователя</span>
|
|
||||||
|
|
||||||
<span class="sd"> Raises:</span>
|
|
||||||
<span class="sd"> AssertionError: Если сеанс не найден.</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
<span class="n">found</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">find_session_in_table</span><span class="p">(</span><span class="n">token</span><span class="p">)</span>
|
|
||||||
<span class="k">if</span> <span class="n">found</span> <span class="o">==</span> <span class="o">-</span><span class="mi">1</span><span class="p">:</span>
|
|
||||||
<span class="k">assert</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"Session for this token has not been found"</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="CurrentSessionsTab.should_not_be_session_in_table">
|
|
||||||
<a class="viewcode-back" href="../../pages.html#pages.current_session_tab.CurrentSessionsTab.should_not_be_session_in_table">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">should_not_be_session_in_table</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">token</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Проверяет отсутствие сеанса пользователя в таблице.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Args:</span>
|
|
||||||
<span class="sd"> token (str): Токен пользователя</span>
|
|
||||||
|
|
||||||
<span class="sd"> Raises:</span>
|
|
||||||
<span class="sd"> AssertionError: Если сеанс найден.</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
<span class="n">found</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">find_session_in_table</span><span class="p">(</span><span class="n">token</span><span class="p">)</span>
|
|
||||||
<span class="k">if</span> <span class="n">found</span> <span class="o">!=</span> <span class="o">-</span><span class="mi">1</span><span class="p">:</span>
|
|
||||||
<span class="k">assert</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"Session for this token has been found"</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="CurrentSessionsTab.verify_sessions_table_content">
|
|
||||||
<a class="viewcode-back" href="../../pages.html#pages.current_session_tab.CurrentSessionsTab.verify_sessions_table_content">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">verify_sessions_table_content</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">sessions_table</span><span class="p">:</span> <span class="nb">list</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Сверяет данные таблицы с данными из БД.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Args:</span>
|
|
||||||
<span class="sd"> sessions_table: Данные из таблицы на странице.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Raises:</span>
|
|
||||||
<span class="sd"> AssertionError: Если данные не соответствуют.</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
|
|
||||||
<span class="n">expected_sessions_list</span> <span class="o">=</span> <span class="p">[]</span>
|
|
||||||
|
|
||||||
<span class="c1"># Отправка запроса к бэкенду для получения информации о сеансах</span>
|
|
||||||
<span class="n">response</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">send_get_api_request</span><span class="p">(</span><span class="s2">"e-nms/auth/sessions"</span><span class="p">)</span>
|
|
||||||
<span class="n">response_body</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_response_body</span><span class="p">(</span><span class="n">response</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="k">for</span> <span class="n">item</span> <span class="ow">in</span> <span class="n">response_body</span><span class="p">:</span>
|
|
||||||
<span class="n">session_info</span> <span class="o">=</span> <span class="p">[]</span>
|
|
||||||
<span class="n">session_info</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">item</span><span class="p">[</span><span class="s2">"id"</span><span class="p">])</span>
|
|
||||||
<span class="n">session_info</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">item</span><span class="p">[</span><span class="s2">"userId"</span><span class="p">])</span>
|
|
||||||
|
|
||||||
<span class="c1"># Временно неподдерживаемое поле: время жизни сеанса</span>
|
|
||||||
<span class="n">session_info</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s2">""</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="n">roles</span> <span class="o">=</span> <span class="p">[]</span>
|
|
||||||
<span class="k">for</span> <span class="n">role</span> <span class="ow">in</span> <span class="n">item</span><span class="p">[</span><span class="s2">"roles"</span><span class="p">]:</span>
|
|
||||||
<span class="k">if</span> <span class="n">role</span> <span class="ow">in</span> <span class="n">roles_dict</span><span class="o">.</span><span class="n">keys</span><span class="p">():</span>
|
|
||||||
<span class="n">roles</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">roles_dict</span><span class="p">[</span><span class="n">role</span><span class="p">])</span>
|
|
||||||
|
|
||||||
<span class="n">session_info</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s2">","</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">roles</span><span class="p">))</span>
|
|
||||||
<span class="n">session_info</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">item</span><span class="p">[</span><span class="s2">"ip"</span><span class="p">])</span>
|
|
||||||
|
|
||||||
<span class="n">expected_sessions_list</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">session_info</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="k">del</span> <span class="n">sessions_table</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="c1"># Удаляем заголовок</span>
|
|
||||||
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">check_lists_equals</span><span class="p">(</span>
|
|
||||||
<span class="n">sessions_table</span><span class="p">,</span>
|
|
||||||
<span class="n">expected_sessions_list</span><span class="p">,</span>
|
|
||||||
<span class="s2">"Actual sessions list is not equal expected users list on base db"</span>
|
|
||||||
<span class="p">)</span></div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</pre></div>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<footer>
|
|
||||||
|
|
||||||
<hr/>
|
|
||||||
|
|
||||||
<div role="contentinfo">
|
|
||||||
<p>© Авторские права 2025, NPO KIS. </p>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
Собрано при помощи <a href="https://www.sphinx-doc.org/">Sphinx</a> с использованием
|
|
||||||
<a href="https://github.com/readthedocs/sphinx_rtd_theme">темы,</a>
|
|
||||||
предоставленной <a href="https://readthedocs.org">Read the Docs</a>.
|
|
||||||
|
|
||||||
|
|
||||||
</footer>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</section>
|
|
||||||
</div>
|
|
||||||
<script>
|
|
||||||
jQuery(function () {
|
|
||||||
SphinxRtdTheme.Navigation.enable(true);
|
|
||||||
});
|
|
||||||
</script>
|
|
||||||
|
|
||||||
</body>
|
|
||||||
</html>
|
|
||||||
|
|
@ -1,317 +0,0 @@
|
||||||
|
|
||||||
|
|
||||||
<!DOCTYPE html>
|
|
||||||
<html class="writer-html5" lang="ru" data-content_root="../../">
|
|
||||||
<head>
|
|
||||||
<meta charset="utf-8" />
|
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
||||||
<title>pages.license_tab — документация e-nms-qa-automation 0.1.0</title>
|
|
||||||
<link rel="stylesheet" type="text/css" href="../../_static/pygments.css?v=b86133f3" />
|
|
||||||
<link rel="stylesheet" type="text/css" href="../../_static/css/theme.css?v=e59714d7" />
|
|
||||||
|
|
||||||
|
|
||||||
<script src="../../_static/jquery.js?v=5d32c60e"></script>
|
|
||||||
<script src="../../_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script>
|
|
||||||
<script src="../../_static/documentation_options.js?v=6ff560e8"></script>
|
|
||||||
<script src="../../_static/doctools.js?v=9bcbadda"></script>
|
|
||||||
<script src="../../_static/sphinx_highlight.js?v=dc90522c"></script>
|
|
||||||
<script src="../../_static/translations.js?v=cd1d70c9"></script>
|
|
||||||
<script src="../../_static/js/theme.js"></script>
|
|
||||||
<link rel="index" title="Алфавитный указатель" href="../../genindex.html" />
|
|
||||||
<link rel="search" title="Поиск" href="../../search.html" />
|
|
||||||
</head>
|
|
||||||
|
|
||||||
<body class="wy-body-for-nav">
|
|
||||||
<div class="wy-grid-for-nav">
|
|
||||||
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
|
|
||||||
<div class="wy-side-scroll">
|
|
||||||
<div class="wy-side-nav-search" >
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<a href="../../index.html" class="icon icon-home">
|
|
||||||
e-nms-qa-automation
|
|
||||||
</a>
|
|
||||||
<div role="search">
|
|
||||||
<form id="rtd-search-form" class="wy-form" action="../../search.html" method="get">
|
|
||||||
<input type="text" name="q" placeholder="Поиск в документации" aria-label="Поиск в документации" />
|
|
||||||
<input type="hidden" name="check_keywords" value="yes" />
|
|
||||||
<input type="hidden" name="area" value="default" />
|
|
||||||
</form>
|
|
||||||
</div>
|
|
||||||
</div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Меню навигации">
|
|
||||||
<!-- Local TOC -->
|
|
||||||
<div class="local-toc"></div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</nav>
|
|
||||||
|
|
||||||
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Меню навигации для мобильных устройств" >
|
|
||||||
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
|
|
||||||
<a href="../../index.html">e-nms-qa-automation</a>
|
|
||||||
</nav>
|
|
||||||
|
|
||||||
<div class="wy-nav-content">
|
|
||||||
<div class="rst-content">
|
|
||||||
<div role="navigation" aria-label="Навигация по страницам">
|
|
||||||
<ul class="wy-breadcrumbs">
|
|
||||||
<li><a href="../../index.html" class="icon icon-home" aria-label="Home"></a></li>
|
|
||||||
<li class="breadcrumb-item"><a href="../index.html">Код модуля</a></li>
|
|
||||||
<li class="breadcrumb-item active">pages.license_tab</li>
|
|
||||||
<li class="wy-breadcrumbs-aside">
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
<hr/>
|
|
||||||
</div>
|
|
||||||
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
|
|
||||||
<div itemprop="articleBody">
|
|
||||||
|
|
||||||
<h1>Исходный код pages.license_tab</h1><div class="highlight"><pre>
|
|
||||||
<span></span><span class="sd">"""Модуль license_tab содержит класс для работы с вкладкой 'Лицензии'.</span>
|
|
||||||
|
|
||||||
<span class="sd">Класс LicenseTab наследует BasePage и реализует методы для взаимодействия</span>
|
|
||||||
<span class="sd">с элементами вкладки лицензий и проверки их состояния.</span>
|
|
||||||
<span class="sd">"""</span>
|
|
||||||
|
|
||||||
<span class="kn">from</span><span class="w"> </span><span class="nn">playwright.sync_api</span><span class="w"> </span><span class="kn">import</span> <span class="n">Page</span>
|
|
||||||
<span class="kn">from</span><span class="w"> </span><span class="nn">locators.text_locators</span><span class="w"> </span><span class="kn">import</span> <span class="n">TextLocators</span>
|
|
||||||
<span class="kn">from</span><span class="w"> </span><span class="nn">locators.input_locators</span><span class="w"> </span><span class="kn">import</span> <span class="n">InputLocators</span>
|
|
||||||
<span class="kn">from</span><span class="w"> </span><span class="nn">locators.json_container_locators</span><span class="w"> </span><span class="kn">import</span> <span class="n">JsonContainerLocators</span>
|
|
||||||
<span class="kn">from</span><span class="w"> </span><span class="nn">locators.button_locators</span><span class="w"> </span><span class="kn">import</span> <span class="n">ButtonLocators</span>
|
|
||||||
<span class="kn">from</span><span class="w"> </span><span class="nn">elements.text_input_element</span><span class="w"> </span><span class="kn">import</span> <span class="n">TextInput</span>
|
|
||||||
<span class="kn">from</span><span class="w"> </span><span class="nn">elements.text_element</span><span class="w"> </span><span class="kn">import</span> <span class="n">Text</span>
|
|
||||||
<span class="kn">from</span><span class="w"> </span><span class="nn">elements.button_element</span><span class="w"> </span><span class="kn">import</span> <span class="n">Button</span>
|
|
||||||
<span class="kn">from</span><span class="w"> </span><span class="nn">components.toolbar_component</span><span class="w"> </span><span class="kn">import</span> <span class="n">ToolbarComponent</span>
|
|
||||||
<span class="kn">from</span><span class="w"> </span><span class="nn">components.json_container_component</span><span class="w"> </span><span class="kn">import</span> <span class="n">JsonContainerComponent</span>
|
|
||||||
<span class="kn">from</span><span class="w"> </span><span class="nn">components.alert_component</span><span class="w"> </span><span class="kn">import</span> <span class="n">AlertComponent</span>
|
|
||||||
<span class="kn">from</span><span class="w"> </span><span class="nn">pages.base_page</span><span class="w"> </span><span class="kn">import</span> <span class="n">BasePage</span>
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="LicenseTab">
|
|
||||||
<a class="viewcode-back" href="../../pages.html#pages.license_tab.LicenseTab">[документация]</a>
|
|
||||||
<span class="k">class</span><span class="w"> </span><span class="nc">LicenseTab</span><span class="p">(</span><span class="n">BasePage</span><span class="p">):</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Класс для работы с вкладкой 'Лицензии'.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Содержит методы для:</span>
|
|
||||||
<span class="sd"> - Взаимодействия с формой ввода лицензии</span>
|
|
||||||
<span class="sd"> - Проверки содержимого JSON-контейнера</span>
|
|
||||||
<span class="sd"> - Работы с элементами управления</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="LicenseTab.__init__">
|
|
||||||
<a class="viewcode-back" href="../../pages.html#pages.license_tab.LicenseTab.__init__">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">page</span><span class="p">:</span> <span class="n">Page</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Инициализирует элементы вкладки 'Лицензии'.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Args:</span>
|
|
||||||
<span class="sd"> page: Экземпляр страницы Playwright</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
|
|
||||||
<span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="fm">__init__</span><span class="p">(</span><span class="n">page</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">toolbar</span> <span class="o">=</span> <span class="n">ToolbarComponent</span><span class="p">(</span><span class="n">page</span><span class="p">,</span> <span class="s2">"Лицензии"</span><span class="p">)</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">json_container</span> <span class="o">=</span> <span class="n">JsonContainerComponent</span><span class="p">(</span><span class="n">page</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">input_form_title</span> <span class="o">=</span> <span class="n">Text</span><span class="p">(</span><span class="n">page</span><span class="p">,</span> <span class="n">TextLocators</span><span class="o">.</span><span class="n">TITLE_LICENSE_INPUT_FORM</span><span class="p">,</span> <span class="s2">"input form title"</span><span class="p">)</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">license_id</span> <span class="o">=</span> <span class="n">Text</span><span class="p">(</span><span class="n">page</span><span class="p">,</span> <span class="n">TextLocators</span><span class="o">.</span><span class="n">LICENSE_ID</span><span class="p">,</span> <span class="s2">"license id"</span><span class="p">)</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">license_id_input</span> <span class="o">=</span> <span class="n">TextInput</span><span class="p">(</span><span class="n">page</span><span class="p">,</span> <span class="n">InputLocators</span><span class="o">.</span><span class="n">LICENSE_ID_UPDATE</span><span class="p">,</span> <span class="s2">"license id input"</span><span class="p">)</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">update_button</span> <span class="o">=</span> <span class="n">Button</span><span class="p">(</span><span class="n">page</span><span class="p">,</span> <span class="n">ButtonLocators</span><span class="o">.</span><span class="n">BUTTON_LICENSE_UPDATE</span><span class="p">,</span> <span class="s2">"update license button"</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">alert</span> <span class="o">=</span> <span class="n">AlertComponent</span><span class="p">(</span><span class="n">page</span><span class="p">)</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<span class="c1"># Действия:</span>
|
|
||||||
<div class="viewcode-block" id="LicenseTab.fill_license_input_form">
|
|
||||||
<a class="viewcode-back" href="../../pages.html#pages.license_tab.LicenseTab.fill_license_input_form">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">fill_license_input_form</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">value</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Заполняет форму ввода лицензии указанным значением.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Args:</span>
|
|
||||||
<span class="sd"> value: Значение для ввода</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">license_id_input</span><span class="o">.</span><span class="n">clear</span><span class="p">()</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">license_id_input</span><span class="o">.</span><span class="n">input_value</span><span class="p">(</span><span class="n">value</span><span class="p">)</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">update_button</span><span class="o">.</span><span class="n">click</span><span class="p">()</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="LicenseTab.scroll_json_container_up">
|
|
||||||
<a class="viewcode-back" href="../../pages.html#pages.license_tab.LicenseTab.scroll_json_container_up">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">scroll_json_container_up</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Прокручивает JSON-контейнер вверх."""</span>
|
|
||||||
|
|
||||||
<span class="n">loc</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">page</span><span class="o">.</span><span class="n">locator</span><span class="p">(</span><span class="n">JsonContainerLocators</span><span class="o">.</span><span class="n">SCROLL_CONTAINER</span><span class="p">)</span><span class="o">.</span><span class="n">first</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">json_container</span><span class="o">.</span><span class="n">scroll_up</span><span class="p">(</span><span class="n">loc</span><span class="p">)</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="LicenseTab.scroll_json_container_down">
|
|
||||||
<a class="viewcode-back" href="../../pages.html#pages.license_tab.LicenseTab.scroll_json_container_down">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">scroll_json_container_down</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Прокручивает JSON-контейнер вниз."""</span>
|
|
||||||
|
|
||||||
<span class="n">loc</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">page</span><span class="o">.</span><span class="n">locator</span><span class="p">(</span><span class="n">JsonContainerLocators</span><span class="o">.</span><span class="n">SCROLL_CONTAINER</span><span class="p">)</span><span class="o">.</span><span class="n">first</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">json_container</span><span class="o">.</span><span class="n">scroll_down</span><span class="p">(</span><span class="n">loc</span><span class="p">)</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<span class="c1"># Проверки:</span>
|
|
||||||
<div class="viewcode-block" id="LicenseTab.check_json_container_verticall_scrolling">
|
|
||||||
<a class="viewcode-back" href="../../pages.html#pages.license_tab.LicenseTab.check_json_container_verticall_scrolling">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">check_json_container_verticall_scrolling</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">bool</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Проверяет возможность вертикальной прокрутки контейнера.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Returns:</span>
|
|
||||||
<span class="sd"> bool: Доступность прокрутки</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
|
|
||||||
<span class="n">loc</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">page</span><span class="o">.</span><span class="n">locator</span><span class="p">(</span><span class="n">JsonContainerLocators</span><span class="o">.</span><span class="n">SCROLL_CONTAINER</span><span class="p">)</span><span class="o">.</span><span class="n">first</span>
|
|
||||||
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">json_container</span><span class="o">.</span><span class="n">is_scrollable_vertically</span><span class="p">(</span><span class="n">loc</span><span class="p">)</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="LicenseTab.check_content">
|
|
||||||
<a class="viewcode-back" href="../../pages.html#pages.license_tab.LicenseTab.check_content">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">check_content</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Проверяет наличие всех основных элементов вкладки."""</span>
|
|
||||||
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">should_be_toolbar</span><span class="p">()</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">should_be_json_container</span><span class="p">()</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">should_be_input_form_title</span><span class="p">()</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">should_be_empty_input_form</span><span class="p">()</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">should_be_update_button</span><span class="p">()</span>
|
|
||||||
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">verify_json_container_content</span><span class="p">()</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="LicenseTab.should_be_error_alert_window_with_text">
|
|
||||||
<a class="viewcode-back" href="../../pages.html#pages.license_tab.LicenseTab.should_be_error_alert_window_with_text">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">should_be_error_alert_window_with_text</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">text</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Проверяет наличие/отсутствие алерта с указанным текстом.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Args:</span>
|
|
||||||
<span class="sd"> text: Текст для проверки</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
|
|
||||||
<span class="n">alert_type</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">alert</span><span class="o">.</span><span class="n">get_alert_type</span><span class="p">()</span>
|
|
||||||
<span class="k">assert</span> <span class="n">alert_type</span><span class="o">==</span><span class="s2">"error"</span><span class="p">,</span> <span class="sa">f</span><span class="s2">"Expected error alert, but got </span><span class="si">{</span><span class="n">alert_type</span><span class="si">}</span><span class="s2"> alert"</span>
|
|
||||||
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">alert</span><span class="o">.</span><span class="n">check_alert_presence</span><span class="p">(</span><span class="n">text</span><span class="p">)</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">alert</span><span class="o">.</span><span class="n">check_alert_absence</span><span class="p">(</span><span class="n">text</span><span class="p">)</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="LicenseTab.should_be_toolbar">
|
|
||||||
<a class="viewcode-back" href="../../pages.html#pages.license_tab.LicenseTab.should_be_toolbar">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">should_be_toolbar</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Проверяет наличие панели инструментов."""</span>
|
|
||||||
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">toolbar</span><span class="o">.</span><span class="n">check_toolbar_presence</span><span class="p">(</span><span class="s2">"Toolbar is missing"</span><span class="p">)</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="LicenseTab.should_be_json_container">
|
|
||||||
<a class="viewcode-back" href="../../pages.html#pages.license_tab.LicenseTab.should_be_json_container">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">should_be_json_container</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Проверяет наличие JSON-контейнера."""</span>
|
|
||||||
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">json_container</span><span class="o">.</span><span class="n">check_visibility</span><span class="p">(</span>
|
|
||||||
<span class="n">JsonContainerLocators</span><span class="o">.</span><span class="n">CONTAINER</span><span class="p">,</span>
|
|
||||||
<span class="s2">"Json container with license info is missing"</span>
|
|
||||||
<span class="p">)</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="LicenseTab.should_be_input_form_title">
|
|
||||||
<a class="viewcode-back" href="../../pages.html#pages.license_tab.LicenseTab.should_be_input_form_title">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">should_be_input_form_title</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Проверяет заголовок формы и соответствие ID лицензии."""</span>
|
|
||||||
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">input_form_title</span><span class="o">.</span><span class="n">check_have_text</span><span class="p">(</span>
|
|
||||||
<span class="s2">"Идентификатор:"</span><span class="p">,</span>
|
|
||||||
<span class="s2">"Input lisence id form title 'Идентификатор:' is missing"</span>
|
|
||||||
<span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="n">actual_lisence_id</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">license_id</span><span class="o">.</span><span class="n">get_text</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span>
|
|
||||||
|
|
||||||
<span class="c1"># send request to backend to get license id</span>
|
|
||||||
<span class="n">response</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">send_get_api_request</span><span class="p">(</span><span class="s2">"e-cmdb/api/lic/deviceid"</span><span class="p">)</span>
|
|
||||||
<span class="n">response_body</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_response_body</span><span class="p">(</span><span class="n">response</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">check_equals</span><span class="p">(</span>
|
|
||||||
<span class="n">actual_lisence_id</span><span class="p">,</span>
|
|
||||||
<span class="n">response_body</span><span class="p">[</span><span class="s1">'deviceId'</span><span class="p">],</span>
|
|
||||||
<span class="sa">f</span><span class="s2">"Expected ID value </span><span class="si">{</span><span class="n">response_body</span><span class="p">[</span><span class="s1">'deviceId'</span><span class="p">]</span><span class="si">}</span><span class="s2"> is not equal actual value </span><span class="si">{</span><span class="n">actual_lisence_id</span><span class="si">}</span><span class="s2">"</span>
|
|
||||||
<span class="p">)</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="LicenseTab.should_be_empty_input_form">
|
|
||||||
<a class="viewcode-back" href="../../pages.html#pages.license_tab.LicenseTab.should_be_empty_input_form">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">should_be_empty_input_form</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Проверяет пустоту формы ввода лицензии."""</span>
|
|
||||||
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">license_id_input</span><span class="o">.</span><span class="n">check_empty_input</span><span class="p">(</span><span class="s2">"Input lisence id form is missing or not empty"</span><span class="p">)</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="LicenseTab.should_be_update_button">
|
|
||||||
<a class="viewcode-back" href="../../pages.html#pages.license_tab.LicenseTab.should_be_update_button">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">should_be_update_button</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Проверяет наличие кнопки обновления лицензии."""</span>
|
|
||||||
|
|
||||||
<span class="n">button_text</span> <span class="o">=</span> <span class="s2">"Обновить лицензию"</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">update_button</span><span class="o">.</span><span class="n">check_have_text</span><span class="p">(</span>
|
|
||||||
<span class="n">button_text</span><span class="p">,</span>
|
|
||||||
<span class="sa">f</span><span class="s2">"Update button with text '</span><span class="si">{</span><span class="n">button_text</span><span class="si">}</span><span class="s2">' is missing"</span>
|
|
||||||
<span class="p">)</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="LicenseTab.verify_json_container_content">
|
|
||||||
<a class="viewcode-back" href="../../pages.html#pages.license_tab.LicenseTab.verify_json_container_content">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">verify_json_container_content</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Проверяет соответствие данных контейнера данным из API."""</span>
|
|
||||||
|
|
||||||
<span class="n">actual_data</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">json_container</span><span class="o">.</span><span class="n">read_data</span><span class="p">(</span><span class="n">JsonContainerLocators</span><span class="o">.</span><span class="n">CONTAINER</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="c1"># send request to backend to get license info</span>
|
|
||||||
<span class="n">response</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">send_get_api_request</span><span class="p">(</span><span class="s2">"api/service-manager/license"</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="k">if</span> <span class="n">response</span><span class="o">.</span><span class="n">status</span> <span class="o">==</span> <span class="mi">200</span><span class="p">:</span>
|
|
||||||
<span class="n">response_body</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_response_body</span><span class="p">(</span><span class="n">response</span><span class="p">)</span>
|
|
||||||
<span class="n">expected_data</span> <span class="o">=</span> <span class="n">response_body</span><span class="p">[</span><span class="s2">"data"</span><span class="p">][</span><span class="s2">"config"</span><span class="p">][</span><span class="s2">"config"</span><span class="p">][</span><span class="s2">"e-nms"</span><span class="p">]</span>
|
|
||||||
|
|
||||||
<span class="k">for</span> <span class="n">key_1</span><span class="p">,</span> <span class="n">item</span> <span class="ow">in</span> <span class="n">actual_data</span><span class="o">.</span><span class="n">items</span><span class="p">():</span>
|
|
||||||
<span class="k">if</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">item</span><span class="p">,</span> <span class="nb">dict</span><span class="p">):</span>
|
|
||||||
<span class="k">assert</span> <span class="n">actual_data</span><span class="p">[</span><span class="n">key_1</span><span class="p">]</span> <span class="o">==</span> <span class="n">expected_data</span><span class="p">[</span><span class="n">key_1</span><span class="p">],</span>\
|
|
||||||
<span class="sa">f</span><span class="s2">"Expected json content is not equal actual: </span><span class="si">{</span><span class="n">actual_data</span><span class="p">[</span><span class="n">key_1</span><span class="p">]</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="n">expected_data</span><span class="p">[</span><span class="n">key_1</span><span class="p">]</span><span class="si">}</span><span class="s2">"</span>
|
|
||||||
<span class="k">continue</span>
|
|
||||||
|
|
||||||
<span class="k">for</span> <span class="n">key_2</span> <span class="ow">in</span> <span class="n">item</span><span class="p">:</span>
|
|
||||||
<span class="k">assert</span> <span class="n">actual_data</span><span class="p">[</span><span class="n">key_1</span><span class="p">][</span><span class="n">key_2</span><span class="p">]</span> <span class="o">==</span> <span class="n">expected_data</span><span class="p">[</span><span class="n">key_1</span><span class="p">][</span><span class="n">key_2</span><span class="p">],</span>\
|
|
||||||
<span class="sa">f</span><span class="s2">"Expected json content is not equal actual: </span><span class="si">{</span><span class="n">actual_data</span><span class="p">[</span><span class="n">key_1</span><span class="p">][</span><span class="n">key_2</span><span class="p">]</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="n">expected_data</span><span class="p">[</span><span class="n">key_1</span><span class="p">][</span><span class="n">key_2</span><span class="p">]</span><span class="si">}</span><span class="s2">"</span>
|
|
||||||
<span class="k">else</span><span class="p">:</span>
|
|
||||||
<span class="k">assert</span> <span class="kc">False</span><span class="p">,</span> <span class="sa">f</span><span class="s2">"No response from 'api/service-manager/license' request: </span><span class="si">{</span><span class="n">response</span><span class="o">.</span><span class="n">status_text</span><span class="si">}</span><span class="s2">"</span></div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</pre></div>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<footer>
|
|
||||||
|
|
||||||
<hr/>
|
|
||||||
|
|
||||||
<div role="contentinfo">
|
|
||||||
<p>© Авторские права 2025, NPO KIS. </p>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
Собрано при помощи <a href="https://www.sphinx-doc.org/">Sphinx</a> с использованием
|
|
||||||
<a href="https://github.com/readthedocs/sphinx_rtd_theme">темы,</a>
|
|
||||||
предоставленной <a href="https://readthedocs.org">Read the Docs</a>.
|
|
||||||
|
|
||||||
|
|
||||||
</footer>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</section>
|
|
||||||
</div>
|
|
||||||
<script>
|
|
||||||
jQuery(function () {
|
|
||||||
SphinxRtdTheme.Navigation.enable(true);
|
|
||||||
});
|
|
||||||
</script>
|
|
||||||
|
|
||||||
</body>
|
|
||||||
</html>
|
|
||||||
|
|
@ -1,197 +0,0 @@
|
||||||
|
|
||||||
|
|
||||||
<!DOCTYPE html>
|
|
||||||
<html class="writer-html5" lang="ru" data-content_root="../../">
|
|
||||||
<head>
|
|
||||||
<meta charset="utf-8" />
|
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
||||||
<title>pages.location_page — документация e-nms-qa-automation 0.1.0</title>
|
|
||||||
<link rel="stylesheet" type="text/css" href="../../_static/pygments.css?v=b86133f3" />
|
|
||||||
<link rel="stylesheet" type="text/css" href="../../_static/css/theme.css?v=e59714d7" />
|
|
||||||
|
|
||||||
|
|
||||||
<script src="../../_static/jquery.js?v=5d32c60e"></script>
|
|
||||||
<script src="../../_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script>
|
|
||||||
<script src="../../_static/documentation_options.js?v=6ff560e8"></script>
|
|
||||||
<script src="../../_static/doctools.js?v=9bcbadda"></script>
|
|
||||||
<script src="../../_static/sphinx_highlight.js?v=dc90522c"></script>
|
|
||||||
<script src="../../_static/translations.js?v=cd1d70c9"></script>
|
|
||||||
<script src="../../_static/js/theme.js"></script>
|
|
||||||
<link rel="index" title="Алфавитный указатель" href="../../genindex.html" />
|
|
||||||
<link rel="search" title="Поиск" href="../../search.html" />
|
|
||||||
</head>
|
|
||||||
|
|
||||||
<body class="wy-body-for-nav">
|
|
||||||
<div class="wy-grid-for-nav">
|
|
||||||
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
|
|
||||||
<div class="wy-side-scroll">
|
|
||||||
<div class="wy-side-nav-search" >
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<a href="../../index.html" class="icon icon-home">
|
|
||||||
e-nms-qa-automation
|
|
||||||
</a>
|
|
||||||
<div role="search">
|
|
||||||
<form id="rtd-search-form" class="wy-form" action="../../search.html" method="get">
|
|
||||||
<input type="text" name="q" placeholder="Поиск в документации" aria-label="Поиск в документации" />
|
|
||||||
<input type="hidden" name="check_keywords" value="yes" />
|
|
||||||
<input type="hidden" name="area" value="default" />
|
|
||||||
</form>
|
|
||||||
</div>
|
|
||||||
</div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Меню навигации">
|
|
||||||
<!-- Local TOC -->
|
|
||||||
<div class="local-toc"></div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</nav>
|
|
||||||
|
|
||||||
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Меню навигации для мобильных устройств" >
|
|
||||||
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
|
|
||||||
<a href="../../index.html">e-nms-qa-automation</a>
|
|
||||||
</nav>
|
|
||||||
|
|
||||||
<div class="wy-nav-content">
|
|
||||||
<div class="rst-content">
|
|
||||||
<div role="navigation" aria-label="Навигация по страницам">
|
|
||||||
<ul class="wy-breadcrumbs">
|
|
||||||
<li><a href="../../index.html" class="icon icon-home" aria-label="Home"></a></li>
|
|
||||||
<li class="breadcrumb-item"><a href="../index.html">Код модуля</a></li>
|
|
||||||
<li class="breadcrumb-item active">pages.location_page</li>
|
|
||||||
<li class="wy-breadcrumbs-aside">
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
<hr/>
|
|
||||||
</div>
|
|
||||||
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
|
|
||||||
<div itemprop="articleBody">
|
|
||||||
|
|
||||||
<h1>Исходный код pages.location_page</h1><div class="highlight"><pre>
|
|
||||||
<span></span><span class="sd">"""Модуль страницы локации."""</span>
|
|
||||||
|
|
||||||
<span class="kn">from</span><span class="w"> </span><span class="nn">playwright.sync_api</span><span class="w"> </span><span class="kn">import</span> <span class="n">Page</span>
|
|
||||||
<span class="kn">from</span><span class="w"> </span><span class="nn">components.toolbar_component</span><span class="w"> </span><span class="kn">import</span> <span class="n">ToolbarComponent</span>
|
|
||||||
<span class="kn">from</span><span class="w"> </span><span class="nn">components_derived.frames.create_child_element_frame</span><span class="w"> </span><span class="kn">import</span> <span class="p">(</span>
|
|
||||||
<span class="n">CreateChildElementFrame</span>
|
|
||||||
<span class="p">)</span>
|
|
||||||
<span class="kn">from</span><span class="w"> </span><span class="nn">pages.base_page</span><span class="w"> </span><span class="kn">import</span> <span class="n">BasePage</span>
|
|
||||||
|
|
||||||
|
|
||||||
<span class="c1"># =============== Локаторы ================================================</span>
|
|
||||||
<span class="n">PANEL_HEADER</span> <span class="o">=</span> <span class="s2">"//span[text()='Объекты']/following-sibling::i"</span>
|
|
||||||
<span class="n">CREATE_BUTTON_ANCESTOR_DIV3</span> <span class="o">=</span> <span class="s2">"xpath=/ancestor::div[3]//button"</span>
|
|
||||||
<span class="c1"># =========================================================================</span>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="LocationPage">
|
|
||||||
<a class="viewcode-back" href="../../pages.html#pages.location_page.LocationPage">[документация]</a>
|
|
||||||
<span class="k">class</span><span class="w"> </span><span class="nc">LocationPage</span><span class="p">(</span><span class="n">BasePage</span><span class="p">):</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Класс для работы со страницей локации."""</span>
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="LocationPage.__init__">
|
|
||||||
<a class="viewcode-back" href="../../pages.html#pages.location_page.LocationPage.__init__">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">page</span><span class="p">:</span> <span class="n">Page</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""</span>
|
|
||||||
<span class="sd"> Инициализирует страницу локации.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Args:</span>
|
|
||||||
<span class="sd"> page: Экземпляр страницы Playwright</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
<span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="fm">__init__</span><span class="p">(</span><span class="n">page</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="c1"># Инициализация тулбара</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">toolbar</span> <span class="o">=</span> <span class="n">ToolbarComponent</span><span class="p">(</span><span class="n">page</span><span class="p">,</span> <span class="s2">""</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="n">panel_header_locator</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">page</span><span class="o">.</span><span class="n">locator</span><span class="p">(</span><span class="n">PANEL_HEADER</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="c1"># Кнопка "Создать" - первая кнопка в тулбаре</span>
|
|
||||||
<span class="n">create_button_locator</span> <span class="o">=</span> <span class="n">panel_header_locator</span><span class="o">.</span><span class="n">locator</span><span class="p">(</span>
|
|
||||||
<span class="n">CREATE_BUTTON_ANCESTOR_DIV3</span>
|
|
||||||
<span class="p">)</span><span class="o">.</span><span class="n">nth</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="c1"># Инициализация кнопки</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">toolbar</span><span class="o">.</span><span class="n">add_tooltip_button</span><span class="p">(</span><span class="n">create_button_locator</span><span class="p">,</span> <span class="s2">"create"</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="c1"># Инициализация фреймов (ленивая загрузка)</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">_create_child_frame</span> <span class="o">=</span> <span class="kc">None</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="LocationPage.click_create_button">
|
|
||||||
<a class="viewcode-back" href="../../pages.html#pages.location_page.LocationPage.click_create_button">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">click_create_button</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">CreateChildElementFrame</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""</span>
|
|
||||||
<span class="sd"> Кликает на кнопку 'Создать' и возвращает фрейм создания.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Returns:</span>
|
|
||||||
<span class="sd"> CreateChildElementFrame: Фрейм создания дочернего элемента</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
|
|
||||||
<span class="c1"># Используем метод тулбара для клика</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">toolbar</span><span class="o">.</span><span class="n">click_button</span><span class="p">(</span><span class="s2">"create"</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">wait_for_timeout</span><span class="p">(</span><span class="mi">3000</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="c1"># Создаем и возвращаем фрейм</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">_create_child_frame</span> <span class="o">=</span> <span class="n">CreateChildElementFrame</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">page</span><span class="p">)</span>
|
|
||||||
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_create_child_frame</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="LocationPage.is_create_button_visible">
|
|
||||||
<a class="viewcode-back" href="../../pages.html#pages.location_page.LocationPage.is_create_button_visible">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">is_create_button_visible</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">bool</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""</span>
|
|
||||||
<span class="sd"> Проверяет видимость кнопки 'Создать'.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Returns:</span>
|
|
||||||
<span class="sd"> bool: True если кнопка видима</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
<span class="n">button</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">toolbar</span><span class="o">.</span><span class="n">get_button_by_name</span><span class="p">(</span><span class="s2">"create"</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="k">if</span> <span class="n">button</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="k">return</span> <span class="kc">False</span>
|
|
||||||
|
|
||||||
<span class="k">return</span> <span class="n">button</span><span class="o">.</span><span class="n">is_present</span><span class="p">(</span><span class="n">timeout</span><span class="o">=</span><span class="mi">5000</span><span class="p">)</span> <span class="ow">and</span> <span class="n">button</span><span class="o">.</span><span class="n">locator</span><span class="o">.</span><span class="n">is_visible</span><span class="p">()</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="LocationPage.wait_for_timeout">
|
|
||||||
<a class="viewcode-back" href="../../pages.html#pages.location_page.LocationPage.wait_for_timeout">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">wait_for_timeout</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">timeout</span><span class="p">:</span> <span class="nb">int</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""</span>
|
|
||||||
<span class="sd"> Ожидает указанное количество миллисекунд.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Args:</span>
|
|
||||||
<span class="sd"> timeout: Время ожидания в миллисекундах</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">page</span><span class="o">.</span><span class="n">wait_for_timeout</span><span class="p">(</span><span class="n">timeout</span><span class="p">)</span></div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</pre></div>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<footer>
|
|
||||||
|
|
||||||
<hr/>
|
|
||||||
|
|
||||||
<div role="contentinfo">
|
|
||||||
<p>© Авторские права 2025, NPO KIS. </p>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
Собрано при помощи <a href="https://www.sphinx-doc.org/">Sphinx</a> с использованием
|
|
||||||
<a href="https://github.com/readthedocs/sphinx_rtd_theme">темы,</a>
|
|
||||||
предоставленной <a href="https://readthedocs.org">Read the Docs</a>.
|
|
||||||
|
|
||||||
|
|
||||||
</footer>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</section>
|
|
||||||
</div>
|
|
||||||
<script>
|
|
||||||
jQuery(function () {
|
|
||||||
SphinxRtdTheme.Navigation.enable(true);
|
|
||||||
});
|
|
||||||
</script>
|
|
||||||
|
|
||||||
</body>
|
|
||||||
</html>
|
|
||||||
|
|
@ -1,256 +0,0 @@
|
||||||
|
|
||||||
|
|
||||||
<!DOCTYPE html>
|
|
||||||
<html class="writer-html5" lang="ru" data-content_root="../../">
|
|
||||||
<head>
|
|
||||||
<meta charset="utf-8" />
|
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
||||||
<title>pages.login_page — документация e-nms-qa-automation 0.1.0</title>
|
|
||||||
<link rel="stylesheet" type="text/css" href="../../_static/pygments.css?v=b86133f3" />
|
|
||||||
<link rel="stylesheet" type="text/css" href="../../_static/css/theme.css?v=e59714d7" />
|
|
||||||
|
|
||||||
|
|
||||||
<script src="../../_static/jquery.js?v=5d32c60e"></script>
|
|
||||||
<script src="../../_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script>
|
|
||||||
<script src="../../_static/documentation_options.js?v=6ff560e8"></script>
|
|
||||||
<script src="../../_static/doctools.js?v=9bcbadda"></script>
|
|
||||||
<script src="../../_static/sphinx_highlight.js?v=dc90522c"></script>
|
|
||||||
<script src="../../_static/translations.js?v=cd1d70c9"></script>
|
|
||||||
<script src="../../_static/js/theme.js"></script>
|
|
||||||
<link rel="index" title="Алфавитный указатель" href="../../genindex.html" />
|
|
||||||
<link rel="search" title="Поиск" href="../../search.html" />
|
|
||||||
</head>
|
|
||||||
|
|
||||||
<body class="wy-body-for-nav">
|
|
||||||
<div class="wy-grid-for-nav">
|
|
||||||
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
|
|
||||||
<div class="wy-side-scroll">
|
|
||||||
<div class="wy-side-nav-search" >
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<a href="../../index.html" class="icon icon-home">
|
|
||||||
e-nms-qa-automation
|
|
||||||
</a>
|
|
||||||
<div role="search">
|
|
||||||
<form id="rtd-search-form" class="wy-form" action="../../search.html" method="get">
|
|
||||||
<input type="text" name="q" placeholder="Поиск в документации" aria-label="Поиск в документации" />
|
|
||||||
<input type="hidden" name="check_keywords" value="yes" />
|
|
||||||
<input type="hidden" name="area" value="default" />
|
|
||||||
</form>
|
|
||||||
</div>
|
|
||||||
</div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Меню навигации">
|
|
||||||
<!-- Local TOC -->
|
|
||||||
<div class="local-toc"></div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</nav>
|
|
||||||
|
|
||||||
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Меню навигации для мобильных устройств" >
|
|
||||||
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
|
|
||||||
<a href="../../index.html">e-nms-qa-automation</a>
|
|
||||||
</nav>
|
|
||||||
|
|
||||||
<div class="wy-nav-content">
|
|
||||||
<div class="rst-content">
|
|
||||||
<div role="navigation" aria-label="Навигация по страницам">
|
|
||||||
<ul class="wy-breadcrumbs">
|
|
||||||
<li><a href="../../index.html" class="icon icon-home" aria-label="Home"></a></li>
|
|
||||||
<li class="breadcrumb-item"><a href="../index.html">Код модуля</a></li>
|
|
||||||
<li class="breadcrumb-item active">pages.login_page</li>
|
|
||||||
<li class="wy-breadcrumbs-aside">
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
<hr/>
|
|
||||||
</div>
|
|
||||||
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
|
|
||||||
<div itemprop="articleBody">
|
|
||||||
|
|
||||||
<h1>Исходный код pages.login_page</h1><div class="highlight"><pre>
|
|
||||||
<span></span><span class="sd">"""Модуль страницы авторизации.</span>
|
|
||||||
|
|
||||||
<span class="sd">Содержит класс LoginPage для работы с элементами страницы входа в систему.</span>
|
|
||||||
<span class="sd">Использует Playwright для взаимодействия с UI и обработки ответов сервера.</span>
|
|
||||||
<span class="sd">"""</span>
|
|
||||||
|
|
||||||
<span class="kn">from</span><span class="w"> </span><span class="nn">playwright.sync_api</span><span class="w"> </span><span class="kn">import</span> <span class="n">Page</span>
|
|
||||||
<span class="kn">from</span><span class="w"> </span><span class="nn">locators.text_input_locators</span><span class="w"> </span><span class="kn">import</span> <span class="n">TextInputLocators</span>
|
|
||||||
<span class="kn">from</span><span class="w"> </span><span class="nn">elements.text_input_element</span><span class="w"> </span><span class="kn">import</span> <span class="n">TextInput</span>
|
|
||||||
<span class="kn">from</span><span class="w"> </span><span class="nn">elements.icon_element</span><span class="w"> </span><span class="kn">import</span> <span class="n">Icon</span>
|
|
||||||
<span class="kn">from</span><span class="w"> </span><span class="nn">elements.button_element</span><span class="w"> </span><span class="kn">import</span> <span class="n">Button</span>
|
|
||||||
<span class="kn">from</span><span class="w"> </span><span class="nn">data.environment</span><span class="w"> </span><span class="kn">import</span> <span class="n">host</span>
|
|
||||||
<span class="kn">from</span><span class="w"> </span><span class="nn">data.constants</span><span class="w"> </span><span class="kn">import</span> <span class="n">Constants</span>
|
|
||||||
<span class="kn">from</span><span class="w"> </span><span class="nn">components.alert_component</span><span class="w"> </span><span class="kn">import</span> <span class="n">AlertComponent</span>
|
|
||||||
<span class="kn">from</span><span class="w"> </span><span class="nn">pages.base_page</span><span class="w"> </span><span class="kn">import</span> <span class="n">BasePage</span>
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="LoginPage">
|
|
||||||
<a class="viewcode-back" href="../../pages.html#pages.login_page.LoginPage">[документация]</a>
|
|
||||||
<span class="k">class</span><span class="w"> </span><span class="nc">LoginPage</span><span class="p">(</span><span class="n">BasePage</span><span class="p">):</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Класс для работы со страницей авторизации.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Атрибуты:</span>
|
|
||||||
<span class="sd"> page: Экземпляр страницы Playwright.</span>
|
|
||||||
<span class="sd"> login_input: Поле ввода логина.</span>
|
|
||||||
<span class="sd"> password_input: Поле ввода пароля.</span>
|
|
||||||
<span class="sd"> login_button: Кнопка входа.</span>
|
|
||||||
<span class="sd"> alert: Алерт окно с сообщением об ошибке.</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="LoginPage.__init__">
|
|
||||||
<a class="viewcode-back" href="../../pages.html#pages.login_page.LoginPage.__init__">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">page</span><span class="p">:</span> <span class="n">Page</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Инициализирует элементы страницы авторизации.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Args:</span>
|
|
||||||
<span class="sd"> page: Экземпляр страницы Playwright.</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
|
|
||||||
<span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="fm">__init__</span><span class="p">(</span><span class="n">page</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">login_input</span> <span class="o">=</span> <span class="n">TextInput</span><span class="p">(</span><span class="n">page</span><span class="p">,</span> <span class="n">page</span><span class="o">.</span><span class="n">get_by_label</span><span class="p">(</span><span class="s2">"Имя пользователя"</span><span class="p">),</span> <span class="s2">"login input"</span><span class="p">)</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">password_input</span> <span class="o">=</span> <span class="n">TextInput</span><span class="p">(</span><span class="n">page</span><span class="p">,</span> <span class="n">page</span><span class="o">.</span><span class="n">get_by_label</span><span class="p">(</span><span class="s2">"Пароль"</span><span class="p">),</span> <span class="s2">"password input"</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="n">icon_locator</span> <span class="o">=</span> <span class="n">page</span><span class="o">.</span><span class="n">get_by_label</span><span class="p">(</span><span class="s2">"Пароль"</span><span class="p">)</span><span class="o">.</span><span class="n">locator</span><span class="p">(</span><span class="s2">"xpath=../.."</span><span class="p">)</span><span class="o">.</span><span class="n">locator</span><span class="p">(</span><span class="n">TextInputLocators</span><span class="o">.</span><span class="n">ICON_PASSWORD_HIDING</span><span class="p">)</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">password_hidden_icon</span> <span class="o">=</span> <span class="n">Icon</span><span class="p">(</span><span class="n">page</span><span class="p">,</span>
|
|
||||||
<span class="n">icon_locator</span><span class="p">,</span>
|
|
||||||
<span class="s2">"password hidden icon"</span><span class="p">)</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">login_button</span> <span class="o">=</span> <span class="n">Button</span><span class="p">(</span><span class="n">page</span><span class="p">,</span> <span class="n">page</span><span class="o">.</span><span class="n">get_by_role</span><span class="p">(</span><span class="s2">"button"</span><span class="p">),</span> <span class="s2">"login button"</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">alert</span> <span class="o">=</span> <span class="n">AlertComponent</span><span class="p">(</span><span class="n">page</span><span class="p">)</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<span class="c1"># Действия:</span>
|
|
||||||
<div class="viewcode-block" id="LoginPage.click_password_hidden_icon">
|
|
||||||
<a class="viewcode-back" href="../../pages.html#pages.login_page.LoginPage.click_password_hidden_icon">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">click_password_hidden_icon</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Нажатие на иконку скрытия пароля."""</span>
|
|
||||||
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">password_hidden_icon</span><span class="o">.</span><span class="n">click</span><span class="p">()</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="LoginPage.do_login">
|
|
||||||
<a class="viewcode-back" href="../../pages.html#pages.login_page.LoginPage.do_login">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">do_login</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">username</span><span class="p">:</span> <span class="nb">str</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> <span class="n">password</span><span class="p">:</span> <span class="nb">str</span> <span class="o">=</span> <span class="kc">None</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Выполняет вход в систему.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Использует переданные учетные данные или значения из Constants.</span>
|
|
||||||
<span class="sd"> Обрабатывает ответ сервера для получения токена доступа.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Args:</span>
|
|
||||||
<span class="sd"> username: Логин пользователя. По умолчанию из Constants.</span>
|
|
||||||
<span class="sd"> password: Пароль пользователя. По умолчанию из Constants.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Raises:</span>
|
|
||||||
<span class="sd"> AssertionError: Если после входа открылась неожиданная страница.</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">handle_response</span><span class="p">(</span><span class="n">response</span><span class="p">):</span>
|
|
||||||
<span class="k">if</span> <span class="s2">"login"</span> <span class="ow">in</span> <span class="n">response</span><span class="o">.</span><span class="n">url</span><span class="p">:</span>
|
|
||||||
<span class="n">response_body</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_response_body</span><span class="p">(</span><span class="n">response</span><span class="p">)</span>
|
|
||||||
<span class="k">if</span> <span class="n">response_body</span><span class="p">:</span>
|
|
||||||
<span class="n">host</span><span class="o">.</span><span class="n">set_current_user_credential</span><span class="p">(</span><span class="n">response_body</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">page</span><span class="o">.</span><span class="n">on</span><span class="p">(</span><span class="s2">"response"</span><span class="p">,</span> <span class="n">handle_response</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">open</span><span class="p">(</span><span class="s2">""</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="c1"># Используем переданные значения или значения по умолчанию из Constants</span>
|
|
||||||
<span class="n">actual_username</span> <span class="o">=</span> <span class="n">username</span> <span class="k">if</span> <span class="n">username</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span> <span class="k">else</span> <span class="n">Constants</span><span class="o">.</span><span class="n">login</span>
|
|
||||||
<span class="n">actual_password</span> <span class="o">=</span> <span class="n">password</span> <span class="k">if</span> <span class="n">password</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span> <span class="k">else</span> <span class="n">Constants</span><span class="o">.</span><span class="n">password</span>
|
|
||||||
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">login_input</span><span class="o">.</span><span class="n">clear</span><span class="p">()</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">login_input</span><span class="o">.</span><span class="n">input_value</span><span class="p">(</span><span class="n">actual_username</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">password_input</span><span class="o">.</span><span class="n">clear</span><span class="p">()</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">password_input</span><span class="o">.</span><span class="n">input_value</span><span class="p">(</span><span class="n">actual_password</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">login_button</span><span class="o">.</span><span class="n">click</span><span class="p">()</span>
|
|
||||||
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">check_URL</span><span class="p">(</span><span class="s2">"dashboard"</span><span class="p">,</span> <span class="s2">"An unexpected page has been opened"</span><span class="p">)</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="LoginPage.do_unsuccessful_login">
|
|
||||||
<a class="viewcode-back" href="../../pages.html#pages.login_page.LoginPage.do_unsuccessful_login">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">do_unsuccessful_login</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">username</span><span class="p">:</span> <span class="nb">str</span> <span class="o">=</span> <span class="s2">"someuser"</span><span class="p">,</span> <span class="n">password</span><span class="p">:</span> <span class="nb">str</span> <span class="o">=</span> <span class="s2">"password"</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Выполняет попытку входа с неверными учетными данными.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Проверяет наличие сообщения об ошибке. Можно передать свои данные</span>
|
|
||||||
<span class="sd"> или использовать значения по умолчанию.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Args:</span>
|
|
||||||
<span class="sd"> username: Неверный логин. По умолчанию "someuser".</span>
|
|
||||||
<span class="sd"> password: Неверный пароль. По умолчанию "password".</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">open</span><span class="p">(</span><span class="s2">""</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">login_input</span><span class="o">.</span><span class="n">clear</span><span class="p">()</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">login_input</span><span class="o">.</span><span class="n">input_value</span><span class="p">(</span><span class="n">username</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">password_input</span><span class="o">.</span><span class="n">clear</span><span class="p">()</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">password_input</span><span class="o">.</span><span class="n">input_value</span><span class="p">(</span><span class="n">password</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">login_button</span><span class="o">.</span><span class="n">click</span><span class="p">()</span>
|
|
||||||
|
|
||||||
<span class="n">alert_type</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">alert</span><span class="o">.</span><span class="n">get_alert_type</span><span class="p">()</span>
|
|
||||||
<span class="k">assert</span> <span class="n">alert_type</span><span class="o">==</span><span class="s2">"error"</span><span class="p">,</span> <span class="sa">f</span><span class="s2">"Expected error alert, but got </span><span class="si">{</span><span class="n">alert_type</span><span class="si">}</span><span class="s2"> alert"</span>
|
|
||||||
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">alert</span><span class="o">.</span><span class="n">check_alert_presence</span><span class="p">(</span><span class="s2">"Неверная пара логин/пароль"</span><span class="p">)</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">alert</span><span class="o">.</span><span class="n">check_alert_absence</span><span class="p">(</span><span class="s2">"Неверная пара логин/пароль"</span><span class="p">)</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<span class="c1"># Проверки:</span>
|
|
||||||
<div class="viewcode-block" id="LoginPage.is_password_icon_hidden">
|
|
||||||
<a class="viewcode-back" href="../../pages.html#pages.login_page.LoginPage.is_password_icon_hidden">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">is_password_icon_hidden</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">bool</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Проверяет состояние иконки скрытия символов пароля.</span>
|
|
||||||
<span class="sd"> Возвращает True если пароль будет скрыт, иначе False</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
|
|
||||||
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">password_hidden_icon</span><span class="o">.</span><span class="n">is_password_hidden</span><span class="p">()</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="LoginPage.is_password_hidden">
|
|
||||||
<a class="viewcode-back" href="../../pages.html#pages.login_page.LoginPage.is_password_hidden">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">is_password_hidden</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">bool</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Проверяет видимость символов пароля."""</span>
|
|
||||||
|
|
||||||
<span class="n">input_type</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">password_input</span><span class="o">.</span><span class="n">get_input_type</span><span class="p">()</span>
|
|
||||||
<span class="k">if</span> <span class="n">input_type</span> <span class="o">==</span> <span class="s2">"password"</span><span class="p">:</span>
|
|
||||||
<span class="k">return</span> <span class="kc">True</span>
|
|
||||||
<span class="k">elif</span> <span class="n">input_type</span> <span class="o">==</span> <span class="s2">"text"</span><span class="p">:</span>
|
|
||||||
<span class="k">return</span> <span class="kc">False</span>
|
|
||||||
<span class="k">else</span><span class="p">:</span>
|
|
||||||
<span class="k">assert</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"Check password hidden error"</span></div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</pre></div>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<footer>
|
|
||||||
|
|
||||||
<hr/>
|
|
||||||
|
|
||||||
<div role="contentinfo">
|
|
||||||
<p>© Авторские права 2025, NPO KIS. </p>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
Собрано при помощи <a href="https://www.sphinx-doc.org/">Sphinx</a> с использованием
|
|
||||||
<a href="https://github.com/readthedocs/sphinx_rtd_theme">темы,</a>
|
|
||||||
предоставленной <a href="https://readthedocs.org">Read the Docs</a>.
|
|
||||||
|
|
||||||
|
|
||||||
</footer>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</section>
|
|
||||||
</div>
|
|
||||||
<script>
|
|
||||||
jQuery(function () {
|
|
||||||
SphinxRtdTheme.Navigation.enable(true);
|
|
||||||
});
|
|
||||||
</script>
|
|
||||||
|
|
||||||
</body>
|
|
||||||
</html>
|
|
||||||
|
|
@ -1,376 +0,0 @@
|
||||||
|
|
||||||
|
|
||||||
<!DOCTYPE html>
|
|
||||||
<html class="writer-html5" lang="ru" data-content_root="../../">
|
|
||||||
<head>
|
|
||||||
<meta charset="utf-8" />
|
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
||||||
<title>pages.main_page — документация e-nms-qa-automation 0.1.0</title>
|
|
||||||
<link rel="stylesheet" type="text/css" href="../../_static/pygments.css?v=b86133f3" />
|
|
||||||
<link rel="stylesheet" type="text/css" href="../../_static/css/theme.css?v=e59714d7" />
|
|
||||||
|
|
||||||
|
|
||||||
<script src="../../_static/jquery.js?v=5d32c60e"></script>
|
|
||||||
<script src="../../_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script>
|
|
||||||
<script src="../../_static/documentation_options.js?v=6ff560e8"></script>
|
|
||||||
<script src="../../_static/doctools.js?v=9bcbadda"></script>
|
|
||||||
<script src="../../_static/sphinx_highlight.js?v=dc90522c"></script>
|
|
||||||
<script src="../../_static/translations.js?v=cd1d70c9"></script>
|
|
||||||
<script src="../../_static/js/theme.js"></script>
|
|
||||||
<link rel="index" title="Алфавитный указатель" href="../../genindex.html" />
|
|
||||||
<link rel="search" title="Поиск" href="../../search.html" />
|
|
||||||
</head>
|
|
||||||
|
|
||||||
<body class="wy-body-for-nav">
|
|
||||||
<div class="wy-grid-for-nav">
|
|
||||||
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
|
|
||||||
<div class="wy-side-scroll">
|
|
||||||
<div class="wy-side-nav-search" >
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<a href="../../index.html" class="icon icon-home">
|
|
||||||
e-nms-qa-automation
|
|
||||||
</a>
|
|
||||||
<div role="search">
|
|
||||||
<form id="rtd-search-form" class="wy-form" action="../../search.html" method="get">
|
|
||||||
<input type="text" name="q" placeholder="Поиск в документации" aria-label="Поиск в документации" />
|
|
||||||
<input type="hidden" name="check_keywords" value="yes" />
|
|
||||||
<input type="hidden" name="area" value="default" />
|
|
||||||
</form>
|
|
||||||
</div>
|
|
||||||
</div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Меню навигации">
|
|
||||||
<!-- Local TOC -->
|
|
||||||
<div class="local-toc"></div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</nav>
|
|
||||||
|
|
||||||
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Меню навигации для мобильных устройств" >
|
|
||||||
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
|
|
||||||
<a href="../../index.html">e-nms-qa-automation</a>
|
|
||||||
</nav>
|
|
||||||
|
|
||||||
<div class="wy-nav-content">
|
|
||||||
<div class="rst-content">
|
|
||||||
<div role="navigation" aria-label="Навигация по страницам">
|
|
||||||
<ul class="wy-breadcrumbs">
|
|
||||||
<li><a href="../../index.html" class="icon icon-home" aria-label="Home"></a></li>
|
|
||||||
<li class="breadcrumb-item"><a href="../index.html">Код модуля</a></li>
|
|
||||||
<li class="breadcrumb-item active">pages.main_page</li>
|
|
||||||
<li class="wy-breadcrumbs-aside">
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
<hr/>
|
|
||||||
</div>
|
|
||||||
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
|
|
||||||
<div itemprop="articleBody">
|
|
||||||
|
|
||||||
<h1>Исходный код pages.main_page</h1><div class="highlight"><pre>
|
|
||||||
<span></span><span class="sd">"""Модуль главной страницы приложения.</span>
|
|
||||||
|
|
||||||
<span class="sd">Содержит класс MainPage для работы с элементами главной страницы.</span>
|
|
||||||
<span class="sd">Включает взаимодействие с панелью навигации, кнопками и карточкой пользователя.</span>
|
|
||||||
<span class="sd">"""</span>
|
|
||||||
|
|
||||||
<span class="kn">from</span><span class="w"> </span><span class="nn">playwright.sync_api</span><span class="w"> </span><span class="kn">import</span> <span class="n">Page</span>
|
|
||||||
<span class="kn">from</span><span class="w"> </span><span class="nn">locators.navigation_panel_locators</span><span class="w"> </span><span class="kn">import</span> <span class="n">NavigationPanelLocators</span>
|
|
||||||
<span class="kn">from</span><span class="w"> </span><span class="nn">components_derived.container_system_log_events</span><span class="w"> </span><span class="kn">import</span> <span class="n">SystemLogEventsContainer</span>
|
|
||||||
<span class="kn">from</span><span class="w"> </span><span class="nn">components_derived.user_card</span><span class="w"> </span><span class="kn">import</span> <span class="n">UserCard</span>
|
|
||||||
<span class="kn">from</span><span class="w"> </span><span class="nn">components.eventbar_component</span><span class="w"> </span><span class="kn">import</span> <span class="n">EventPanelComponent</span>
|
|
||||||
<span class="kn">from</span><span class="w"> </span><span class="nn">components.navbar_component</span><span class="w"> </span><span class="kn">import</span> <span class="n">NavigationPanelComponent</span>
|
|
||||||
<span class="kn">from</span><span class="w"> </span><span class="nn">pages.base_page</span><span class="w"> </span><span class="kn">import</span> <span class="n">BasePage</span>
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="MainPage">
|
|
||||||
<a class="viewcode-back" href="../../pages.html#pages.main_page.MainPage">[документация]</a>
|
|
||||||
<span class="k">class</span><span class="w"> </span><span class="nc">MainPage</span><span class="p">(</span><span class="n">BasePage</span><span class="p">):</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Класс для работы с главной страницей приложения.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Атрибуты:</span>
|
|
||||||
<span class="sd"> page: Экземпляр страницы Playwright.</span>
|
|
||||||
<span class="sd"> navigation_panel: Компонент панели навигации.</span>
|
|
||||||
<span class="sd"> user_button: Кнопка пользователя.</span>
|
|
||||||
<span class="sd"> user_card: Карточка пользователя.</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="MainPage.__init__">
|
|
||||||
<a class="viewcode-back" href="../../pages.html#pages.main_page.MainPage.__init__">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">page</span><span class="p">:</span> <span class="n">Page</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Инициализирует элементы главной страницы.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Args:</span>
|
|
||||||
<span class="sd"> page: Экземпляр страницы Playwright.</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
|
|
||||||
<span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="fm">__init__</span><span class="p">(</span><span class="n">page</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">navigation_panel</span> <span class="o">=</span> <span class="n">NavigationPanelComponent</span><span class="p">(</span><span class="n">page</span><span class="p">)</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">event_panel</span> <span class="o">=</span> <span class="n">EventPanelComponent</span><span class="p">(</span><span class="n">page</span><span class="p">)</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<span class="c1"># Действия:</span>
|
|
||||||
<div class="viewcode-block" id="MainPage.click_events_panel_expand_less_button">
|
|
||||||
<a class="viewcode-back" href="../../pages.html#pages.main_page.MainPage.click_events_panel_expand_less_button">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">click_events_panel_expand_less_button</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Выполняет нажатие кнопки галочка вверх."""</span>
|
|
||||||
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">event_panel</span><span class="o">.</span><span class="n">click_expand_less_button</span><span class="p">()</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="MainPage.click_events_panel_expand_more_button">
|
|
||||||
<a class="viewcode-back" href="../../pages.html#pages.main_page.MainPage.click_events_panel_expand_more_button">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">click_events_panel_expand_more_button</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Выполняет нажатие кнопки галочка вниз."""</span>
|
|
||||||
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">event_panel</span><span class="o">.</span><span class="n">click_expand_more_button</span><span class="p">()</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="MainPage.click_events_panel_system_log_tab">
|
|
||||||
<a class="viewcode-back" href="../../pages.html#pages.main_page.MainPage.click_events_panel_system_log_tab">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">click_events_panel_system_log_tab</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">SystemLogEventsContainer</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Выполняет нажатие tab-кнопки Системный журнал."""</span>
|
|
||||||
|
|
||||||
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">event_panel</span><span class="o">.</span><span class="n">click_system_log_tab</span><span class="p">()</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="MainPage.click_main_navigation_panel_item">
|
|
||||||
<a class="viewcode-back" href="../../pages.html#pages.main_page.MainPage.click_main_navigation_panel_item">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">click_main_navigation_panel_item</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">item_name</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Кликает по элементу основной панели навигации.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Args:</span>
|
|
||||||
<span class="sd"> item_name: Название элемента для клика.</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">navigation_panel</span><span class="o">.</span><span class="n">click_item</span><span class="p">(</span>
|
|
||||||
<span class="n">NavigationPanelLocators</span><span class="o">.</span><span class="n">PANEL_MAIN</span><span class="p">,</span>
|
|
||||||
<span class="n">item_name</span>
|
|
||||||
<span class="p">)</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="MainPage.click_subpanel_item">
|
|
||||||
<a class="viewcode-back" href="../../pages.html#pages.main_page.MainPage.click_subpanel_item">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">click_subpanel_item</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">item_name</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">parent</span><span class="o">=</span><span class="kc">None</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Выполняет рекурсивный поиск по панели навигации</span>
|
|
||||||
<span class="sd"> заданного элемента и делает клик по нему."""</span>
|
|
||||||
|
|
||||||
<span class="n">active_item_locator</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">page</span><span class="o">.</span><span class="n">locator</span><span class="p">(</span>
|
|
||||||
<span class="n">NavigationPanelLocators</span><span class="o">.</span><span class="n">PANEL_MAIN</span>
|
|
||||||
<span class="p">)</span><span class="o">.</span><span class="n">locator</span><span class="p">(</span><span class="n">NavigationPanelLocators</span><span class="o">.</span><span class="n">ACTIVE_CONTAINER</span><span class="p">)</span>
|
|
||||||
<span class="n">node_locator</span> <span class="o">=</span> <span class="n">active_item_locator</span><span class="o">.</span><span class="n">locator</span><span class="p">(</span>
|
|
||||||
<span class="n">NavigationPanelLocators</span><span class="o">.</span><span class="n">SUB_PANEL_MAIN</span>
|
|
||||||
<span class="p">)</span><span class="o">.</span><span class="n">locator</span><span class="p">(</span><span class="n">NavigationPanelLocators</span><span class="o">.</span><span class="n">TREEVIEW</span><span class="p">)</span><span class="o">.</span><span class="n">first</span>
|
|
||||||
|
|
||||||
<span class="c1"># Рекурсивный поиск в дереве v-treeview заданного элемента</span>
|
|
||||||
<span class="c1"># и клик по нему</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">navigation_panel</span><span class="o">.</span><span class="n">click_sub_item</span><span class="p">(</span>
|
|
||||||
<span class="n">node_locator</span><span class="p">,</span> <span class="n">item_name</span><span class="p">,</span> <span class="n">parent</span>
|
|
||||||
<span class="p">)</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="MainPage.click_user_button">
|
|
||||||
<a class="viewcode-back" href="../../pages.html#pages.main_page.MainPage.click_user_button">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">click_user_button</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">UserCard</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Выполняет нажатие кнопки пользователя."""</span>
|
|
||||||
|
|
||||||
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">event_panel</span><span class="o">.</span><span class="n">click_user_button</span><span class="p">()</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="MainPage.do_logout">
|
|
||||||
<a class="viewcode-back" href="../../pages.html#pages.main_page.MainPage.do_logout">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">do_logout</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Выполняет выход из системы."""</span>
|
|
||||||
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">event_panel</span><span class="o">.</span><span class="n">do_logout</span><span class="p">()</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="MainPage.expand_navigation_subpanel">
|
|
||||||
<a class="viewcode-back" href="../../pages.html#pages.main_page.MainPage.expand_navigation_subpanel">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">expand_navigation_subpanel</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Выполняет полное открытие активной главной</span>
|
|
||||||
<span class="sd"> навигационной подпанели."""</span>
|
|
||||||
|
|
||||||
<span class="n">active_item_locator</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">page</span><span class="o">.</span><span class="n">locator</span><span class="p">(</span>
|
|
||||||
<span class="n">NavigationPanelLocators</span><span class="o">.</span><span class="n">PANEL_MAIN</span>
|
|
||||||
<span class="p">)</span><span class="o">.</span><span class="n">locator</span><span class="p">(</span><span class="n">NavigationPanelLocators</span><span class="o">.</span><span class="n">ACTIVE_CONTAINER</span><span class="p">)</span>
|
|
||||||
<span class="n">node_locator</span> <span class="o">=</span> <span class="n">active_item_locator</span><span class="o">.</span><span class="n">locator</span><span class="p">(</span>
|
|
||||||
<span class="n">NavigationPanelLocators</span><span class="o">.</span><span class="n">SUB_PANEL_MAIN</span>
|
|
||||||
<span class="p">)</span><span class="o">.</span><span class="n">locator</span><span class="p">(</span><span class="n">NavigationPanelLocators</span><span class="o">.</span><span class="n">TREEVIEW</span><span class="p">)</span><span class="o">.</span><span class="n">first</span>
|
|
||||||
|
|
||||||
<span class="c1"># Рекурсивный обход дерева v-treeview выбранной подпанели</span>
|
|
||||||
<span class="c1"># и вывод информации об элементах в режиме отладки (debug=True)</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">navigation_panel</span><span class="o">.</span><span class="n">traverse_panel_tree</span><span class="p">(</span>
|
|
||||||
<span class="n">node_locator</span><span class="p">,</span> <span class="n">debug</span><span class="o">=</span><span class="kc">False</span>
|
|
||||||
<span class="p">)</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="MainPage.get_event_counters_by_buttons">
|
|
||||||
<a class="viewcode-back" href="../../pages.html#pages.main_page.MainPage.get_event_counters_by_buttons">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">get_event_counters_by_buttons</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">dict</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Возвращает набор значений кнопок счетчиков событий."""</span>
|
|
||||||
|
|
||||||
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">event_panel</span><span class="o">.</span><span class="n">get_event_button_values</span><span class="p">()</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="MainPage.get_event_counters_by_tooltips">
|
|
||||||
<a class="viewcode-back" href="../../pages.html#pages.main_page.MainPage.get_event_counters_by_tooltips">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">get_event_counters_by_tooltips</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">dict</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Возвращает набор текстов всплывающих подсказок</span>
|
|
||||||
<span class="sd"> кнопок счетчиков событий."""</span>
|
|
||||||
|
|
||||||
<span class="n">events</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">event_panel</span><span class="o">.</span><span class="n">get_event_tooltip_texts</span><span class="p">()</span>
|
|
||||||
|
|
||||||
<span class="n">event_counters</span> <span class="o">=</span> <span class="p">{}</span>
|
|
||||||
|
|
||||||
<span class="k">for</span> <span class="n">event</span> <span class="ow">in</span> <span class="n">events</span><span class="p">:</span>
|
|
||||||
<span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">event</span><span class="p">)</span> <span class="o">></span> <span class="mi">0</span><span class="p">:</span>
|
|
||||||
<span class="n">event_name</span><span class="p">,</span> <span class="n">count</span> <span class="o">=</span> <span class="n">event</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s2">" "</span><span class="p">)</span>
|
|
||||||
<span class="n">event_counters</span><span class="p">[</span><span class="n">event_name</span><span class="p">]</span> <span class="o">=</span> <span class="n">count</span>
|
|
||||||
<span class="k">return</span> <span class="n">event_counters</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="MainPage.get_events_panel_position">
|
|
||||||
<a class="viewcode-back" href="../../pages.html#pages.main_page.MainPage.get_events_panel_position">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">get_events_panel_position</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Возвращает текущее положение панели событий</span>
|
|
||||||
<span class="sd"> относительно страницы: "top", "center","bottom"."""</span>
|
|
||||||
|
|
||||||
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">event_panel</span><span class="o">.</span><span class="n">get_panel_position</span><span class="p">()</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="MainPage.scroll_navigation_panel_down">
|
|
||||||
<a class="viewcode-back" href="../../pages.html#pages.main_page.MainPage.scroll_navigation_panel_down">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">scroll_navigation_panel_down</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Прокручивает панель навигации вниз."""</span>
|
|
||||||
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">navigation_panel</span><span class="o">.</span><span class="n">scroll_down</span><span class="p">(</span>
|
|
||||||
<span class="n">NavigationPanelLocators</span><span class="o">.</span><span class="n">PANEL_SCROLL_CONTAINER</span>
|
|
||||||
<span class="p">)</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="MainPage.scroll_navigation_panel_up">
|
|
||||||
<a class="viewcode-back" href="../../pages.html#pages.main_page.MainPage.scroll_navigation_panel_up">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">scroll_navigation_panel_up</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Прокручивает панель навигации вверх."""</span>
|
|
||||||
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">navigation_panel</span><span class="o">.</span><span class="n">scroll_up</span><span class="p">(</span>
|
|
||||||
<span class="n">NavigationPanelLocators</span><span class="o">.</span><span class="n">PANEL_SCROLL_CONTAINER</span>
|
|
||||||
<span class="p">)</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<span class="c1"># Проверки:</span>
|
|
||||||
<div class="viewcode-block" id="MainPage.check_expand_less_button">
|
|
||||||
<a class="viewcode-back" href="../../pages.html#pages.main_page.MainPage.check_expand_less_button">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">check_expand_less_button</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">bool</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Проверяет наличие кнопки галочка вверх."""</span>
|
|
||||||
|
|
||||||
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">event_panel</span><span class="o">.</span><span class="n">check_expand_less_button</span><span class="p">()</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="MainPage.check_expand_more_button">
|
|
||||||
<a class="viewcode-back" href="../../pages.html#pages.main_page.MainPage.check_expand_more_button">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">check_expand_more_button</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">bool</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Проверяет наличие кнопки галочка вниз."""</span>
|
|
||||||
|
|
||||||
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">event_panel</span><span class="o">.</span><span class="n">check_expand_more_button</span><span class="p">()</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="MainPage.check_navigation_item_exists">
|
|
||||||
<a class="viewcode-back" href="../../pages.html#pages.main_page.MainPage.check_navigation_item_exists">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">check_navigation_item_exists</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">item_name</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="nb">bool</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Проверяет существование элемента в навигационной панели.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Args:</span>
|
|
||||||
<span class="sd"> item_name: Название элемента для проверки</span>
|
|
||||||
|
|
||||||
<span class="sd"> Returns:</span>
|
|
||||||
<span class="sd"> bool: True если элемент существует, False если нет</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">navigation_panel</span><span class="o">.</span><span class="n">is_item_visible</span><span class="p">(</span>
|
|
||||||
<span class="n">NavigationPanelLocators</span><span class="o">.</span><span class="n">PANEL_MAIN</span><span class="p">,</span>
|
|
||||||
<span class="n">item_name</span>
|
|
||||||
<span class="p">)</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="MainPage.check_navigation_panel_item_visibility">
|
|
||||||
<a class="viewcode-back" href="../../pages.html#pages.main_page.MainPage.check_navigation_panel_item_visibility">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">check_navigation_panel_item_visibility</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">item_name</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Проверяет видимость элемента в панели навигации.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Args:</span>
|
|
||||||
<span class="sd"> item_name: Название элемента для проверки.</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">navigation_panel</span><span class="o">.</span><span class="n">check_item_visibility</span><span class="p">(</span>
|
|
||||||
<span class="n">NavigationPanelLocators</span><span class="o">.</span><span class="n">PANEL_MAIN</span><span class="p">,</span>
|
|
||||||
<span class="n">item_name</span>
|
|
||||||
<span class="p">)</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="MainPage.check_navigation_panel_verticall_scrolling">
|
|
||||||
<a class="viewcode-back" href="../../pages.html#pages.main_page.MainPage.check_navigation_panel_verticall_scrolling">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">check_navigation_panel_verticall_scrolling</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">bool</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Проверяет возможность вертикальной прокрутки панели.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Returns:</span>
|
|
||||||
<span class="sd"> bool: True если прокрутка возможна, иначе False.</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
|
|
||||||
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">navigation_panel</span><span class="o">.</span><span class="n">is_scrollable_vertically</span><span class="p">(</span>
|
|
||||||
<span class="n">NavigationPanelLocators</span><span class="o">.</span><span class="n">PANEL_SCROLL_CONTAINER</span>
|
|
||||||
<span class="p">)</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="MainPage.should_be_event_panel">
|
|
||||||
<a class="viewcode-back" href="../../pages.html#pages.main_page.MainPage.should_be_event_panel">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">should_be_event_panel</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Проверяет наличие элементов панели событий."""</span>
|
|
||||||
|
|
||||||
<span class="c1">## to-do: кнопки галочки???</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">event_panel</span><span class="o">.</span><span class="n">should_be_tab_buttons</span><span class="p">()</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">event_panel</span><span class="o">.</span><span class="n">should_be_event_buttons</span><span class="p">()</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">event_panel</span><span class="o">.</span><span class="n">should_be_search_button</span><span class="p">()</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">event_panel</span><span class="o">.</span><span class="n">should_be_user_button</span><span class="p">()</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="MainPage.should_be_navigation_panel">
|
|
||||||
<a class="viewcode-back" href="../../pages.html#pages.main_page.MainPage.should_be_navigation_panel">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">should_be_navigation_panel</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Проверяет наличие панели навигации."""</span>
|
|
||||||
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">navigation_panel</span><span class="o">.</span><span class="n">check_visibility</span><span class="p">(</span>
|
|
||||||
<span class="n">NavigationPanelLocators</span><span class="o">.</span><span class="n">PANEL_MAIN</span><span class="p">,</span>
|
|
||||||
<span class="s2">"Navigation panel is missing"</span>
|
|
||||||
<span class="p">)</span></div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</pre></div>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<footer>
|
|
||||||
|
|
||||||
<hr/>
|
|
||||||
|
|
||||||
<div role="contentinfo">
|
|
||||||
<p>© Авторские права 2025, NPO KIS. </p>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
Собрано при помощи <a href="https://www.sphinx-doc.org/">Sphinx</a> с использованием
|
|
||||||
<a href="https://github.com/readthedocs/sphinx_rtd_theme">темы,</a>
|
|
||||||
предоставленной <a href="https://readthedocs.org">Read the Docs</a>.
|
|
||||||
|
|
||||||
|
|
||||||
</footer>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</section>
|
|
||||||
</div>
|
|
||||||
<script>
|
|
||||||
jQuery(function () {
|
|
||||||
SphinxRtdTheme.Navigation.enable(true);
|
|
||||||
});
|
|
||||||
</script>
|
|
||||||
|
|
||||||
</body>
|
|
||||||
</html>
|
|
||||||
|
|
@ -1,272 +0,0 @@
|
||||||
|
|
||||||
|
|
||||||
<!DOCTYPE html>
|
|
||||||
<html class="writer-html5" lang="ru" data-content_root="../../">
|
|
||||||
<head>
|
|
||||||
<meta charset="utf-8" />
|
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
||||||
<title>pages.service_status_tab — документация e-nms-qa-automation 0.1.0</title>
|
|
||||||
<link rel="stylesheet" type="text/css" href="../../_static/pygments.css?v=b86133f3" />
|
|
||||||
<link rel="stylesheet" type="text/css" href="../../_static/css/theme.css?v=e59714d7" />
|
|
||||||
|
|
||||||
|
|
||||||
<script src="../../_static/jquery.js?v=5d32c60e"></script>
|
|
||||||
<script src="../../_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script>
|
|
||||||
<script src="../../_static/documentation_options.js?v=6ff560e8"></script>
|
|
||||||
<script src="../../_static/doctools.js?v=9bcbadda"></script>
|
|
||||||
<script src="../../_static/sphinx_highlight.js?v=dc90522c"></script>
|
|
||||||
<script src="../../_static/translations.js?v=cd1d70c9"></script>
|
|
||||||
<script src="../../_static/js/theme.js"></script>
|
|
||||||
<link rel="index" title="Алфавитный указатель" href="../../genindex.html" />
|
|
||||||
<link rel="search" title="Поиск" href="../../search.html" />
|
|
||||||
</head>
|
|
||||||
|
|
||||||
<body class="wy-body-for-nav">
|
|
||||||
<div class="wy-grid-for-nav">
|
|
||||||
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
|
|
||||||
<div class="wy-side-scroll">
|
|
||||||
<div class="wy-side-nav-search" >
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<a href="../../index.html" class="icon icon-home">
|
|
||||||
e-nms-qa-automation
|
|
||||||
</a>
|
|
||||||
<div role="search">
|
|
||||||
<form id="rtd-search-form" class="wy-form" action="../../search.html" method="get">
|
|
||||||
<input type="text" name="q" placeholder="Поиск в документации" aria-label="Поиск в документации" />
|
|
||||||
<input type="hidden" name="check_keywords" value="yes" />
|
|
||||||
<input type="hidden" name="area" value="default" />
|
|
||||||
</form>
|
|
||||||
</div>
|
|
||||||
</div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Меню навигации">
|
|
||||||
<!-- Local TOC -->
|
|
||||||
<div class="local-toc"></div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</nav>
|
|
||||||
|
|
||||||
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Меню навигации для мобильных устройств" >
|
|
||||||
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
|
|
||||||
<a href="../../index.html">e-nms-qa-automation</a>
|
|
||||||
</nav>
|
|
||||||
|
|
||||||
<div class="wy-nav-content">
|
|
||||||
<div class="rst-content">
|
|
||||||
<div role="navigation" aria-label="Навигация по страницам">
|
|
||||||
<ul class="wy-breadcrumbs">
|
|
||||||
<li><a href="../../index.html" class="icon icon-home" aria-label="Home"></a></li>
|
|
||||||
<li class="breadcrumb-item"><a href="../index.html">Код модуля</a></li>
|
|
||||||
<li class="breadcrumb-item active">pages.service_status_tab</li>
|
|
||||||
<li class="wy-breadcrumbs-aside">
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
<hr/>
|
|
||||||
</div>
|
|
||||||
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
|
|
||||||
<div itemprop="articleBody">
|
|
||||||
|
|
||||||
<h1>Исходный код pages.service_status_tab</h1><div class="highlight"><pre>
|
|
||||||
<span></span><span class="sd">"""Модуль вкладки 'Статус обслуживания'.</span>
|
|
||||||
|
|
||||||
<span class="sd">Содержит класс ServiceStatusTab для работы с таблицей сервисов.</span>
|
|
||||||
<span class="sd">Позволяет проверять состояние и взаимодействовать с элементами вкладки.</span>
|
|
||||||
<span class="sd">"""</span>
|
|
||||||
|
|
||||||
<span class="kn">from</span><span class="w"> </span><span class="nn">playwright.sync_api</span><span class="w"> </span><span class="kn">import</span> <span class="n">Page</span>
|
|
||||||
<span class="kn">from</span><span class="w"> </span><span class="nn">locators.table_locators</span><span class="w"> </span><span class="kn">import</span> <span class="n">TableLocators</span>
|
|
||||||
<span class="kn">from</span><span class="w"> </span><span class="nn">components.toolbar_component</span><span class="w"> </span><span class="kn">import</span> <span class="n">ToolbarComponent</span>
|
|
||||||
<span class="kn">from</span><span class="w"> </span><span class="nn">components.table_component</span><span class="w"> </span><span class="kn">import</span> <span class="n">TableComponent</span>
|
|
||||||
<span class="kn">from</span><span class="w"> </span><span class="nn">pages.base_page</span><span class="w"> </span><span class="kn">import</span> <span class="n">BasePage</span>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="ServiceStatusTab">
|
|
||||||
<a class="viewcode-back" href="../../pages.html#pages.service_status_tab.ServiceStatusTab">[документация]</a>
|
|
||||||
<span class="k">class</span><span class="w"> </span><span class="nc">ServiceStatusTab</span><span class="p">(</span><span class="n">BasePage</span><span class="p">):</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Класс для работы с вкладкой 'Статус обслуживания'.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Предоставляет методы для взаимодействия с таблицей сервисов и проверки</span>
|
|
||||||
<span class="sd"> её состояния.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Args:</span>
|
|
||||||
<span class="sd"> page: Экземпляр страницы Playwright.</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="ServiceStatusTab.__init__">
|
|
||||||
<a class="viewcode-back" href="../../pages.html#pages.service_status_tab.ServiceStatusTab.__init__">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">page</span><span class="p">:</span> <span class="n">Page</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Инициализирует компоненты вкладки 'Статус обслуживания'."""</span>
|
|
||||||
|
|
||||||
<span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="fm">__init__</span><span class="p">(</span><span class="n">page</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">toolbar</span> <span class="o">=</span> <span class="n">ToolbarComponent</span><span class="p">(</span><span class="n">page</span><span class="p">,</span> <span class="s2">"Статус обслуживания"</span><span class="p">)</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">services_table</span> <span class="o">=</span> <span class="n">TableComponent</span><span class="p">(</span><span class="n">page</span><span class="p">)</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="ServiceStatusTab.get_rows_count">
|
|
||||||
<a class="viewcode-back" href="../../pages.html#pages.service_status_tab.ServiceStatusTab.get_rows_count">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">get_rows_count</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">int</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Возвращает количество строк в таблице (без заголовка).</span>
|
|
||||||
|
|
||||||
<span class="sd"> Returns:</span>
|
|
||||||
<span class="sd"> int: Количество строк с данными.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Raises:</span>
|
|
||||||
<span class="sd"> AssertionError: Если таблица пуста.</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
|
|
||||||
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">services_table</span><span class="o">.</span><span class="n">get_rows_count</span><span class="p">(</span><span class="n">TableLocators</span><span class="o">.</span><span class="n">TABLE_WORK_AREA</span><span class="p">)</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="ServiceStatusTab.scroll_services_table_up">
|
|
||||||
<a class="viewcode-back" href="../../pages.html#pages.service_status_tab.ServiceStatusTab.scroll_services_table_up">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">scroll_services_table_up</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Прокручивает таблицу сервисов вверх."""</span>
|
|
||||||
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">services_table</span><span class="o">.</span><span class="n">scroll_up</span><span class="p">(</span><span class="n">TableLocators</span><span class="o">.</span><span class="n">TABLE_SCROLL_CONTAINER</span><span class="p">)</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="ServiceStatusTab.scroll_services_table_down">
|
|
||||||
<a class="viewcode-back" href="../../pages.html#pages.service_status_tab.ServiceStatusTab.scroll_services_table_down">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">scroll_services_table_down</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Прокручивает таблицу сервисов вниз."""</span>
|
|
||||||
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">services_table</span><span class="o">.</span><span class="n">scroll_down</span><span class="p">(</span><span class="n">TableLocators</span><span class="o">.</span><span class="n">TABLE_SCROLL_CONTAINER</span><span class="p">)</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="ServiceStatusTab.check_services_table_content">
|
|
||||||
<a class="viewcode-back" href="../../pages.html#pages.service_status_tab.ServiceStatusTab.check_services_table_content">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">check_services_table_content</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Проверяет содержимое таблицы сервисов.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Проверяет заголовки и наличие данных в таблице.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Raises:</span>
|
|
||||||
<span class="sd"> AssertionError: Если таблица пуста или заголовки неверны.</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
|
|
||||||
<span class="n">expected_headers</span> <span class="o">=</span> <span class="p">[</span>
|
|
||||||
<span class="s1">'Контейнер'</span><span class="p">,</span>
|
|
||||||
<span class="s1">'Время создания'</span><span class="p">,</span>
|
|
||||||
<span class="s1">'Статус'</span><span class="p">,</span>
|
|
||||||
<span class="s1">'Время работы'</span><span class="p">,</span>
|
|
||||||
<span class="s1">'Image ID'</span><span class="p">,</span>
|
|
||||||
<span class="s1">'Image ТЭГ'</span>
|
|
||||||
<span class="p">]</span>
|
|
||||||
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">services_table</span><span class="o">.</span><span class="n">check_content</span><span class="p">(</span><span class="n">TableLocators</span><span class="o">.</span><span class="n">TABLE_WORK_AREA</span><span class="p">,</span> <span class="n">expected_headers</span><span class="p">)</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="ServiceStatusTab.check_services_table_verticall_scrolling">
|
|
||||||
<a class="viewcode-back" href="../../pages.html#pages.service_status_tab.ServiceStatusTab.check_services_table_verticall_scrolling">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">check_services_table_verticall_scrolling</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">bool</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Проверяет возможность вертикальной прокрутки таблицы.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Returns:</span>
|
|
||||||
<span class="sd"> bool: True если прокрутка возможна, иначе False.</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
|
|
||||||
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">services_table</span><span class="o">.</span><span class="n">is_scrollable_vertically</span><span class="p">(</span>
|
|
||||||
<span class="n">TableLocators</span><span class="o">.</span><span class="n">TABLE_SCROLL_CONTAINER</span>
|
|
||||||
<span class="p">)</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="ServiceStatusTab.check_services_table_first_row_visibility">
|
|
||||||
<a class="viewcode-back" href="../../pages.html#pages.service_status_tab.ServiceStatusTab.check_services_table_first_row_visibility">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">check_services_table_first_row_visibility</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Проверяет видимость первой строки таблицы.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Raises:</span>
|
|
||||||
<span class="sd"> AssertionError: Если строка не видна.</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">services_table</span><span class="o">.</span><span class="n">check_first_row_visibility</span><span class="p">(</span><span class="n">TableLocators</span><span class="o">.</span><span class="n">TABLE_WORK_AREA</span><span class="p">)</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="ServiceStatusTab.check_services_table_last_row_visibility">
|
|
||||||
<a class="viewcode-back" href="../../pages.html#pages.service_status_tab.ServiceStatusTab.check_services_table_last_row_visibility">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">check_services_table_last_row_visibility</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Проверяет видимость последней строки таблицы.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Raises:</span>
|
|
||||||
<span class="sd"> AssertionError: Если строка не видна.</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">services_table</span><span class="o">.</span><span class="n">check_last_row_visibility</span><span class="p">(</span><span class="n">TableLocators</span><span class="o">.</span><span class="n">TABLE_WORK_AREA</span><span class="p">)</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="ServiceStatusTab.check_services_table_row_highlighting">
|
|
||||||
<a class="viewcode-back" href="../../pages.html#pages.service_status_tab.ServiceStatusTab.check_services_table_row_highlighting">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">check_services_table_row_highlighting</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">row_index</span><span class="p">:</span> <span class="nb">int</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Проверяет выделение указанной строки таблицы.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Args:</span>
|
|
||||||
<span class="sd"> row_index: Индекс проверяемой строки.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Raises:</span>
|
|
||||||
<span class="sd"> AssertionError: Если строка не выделена.</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">services_table</span><span class="o">.</span><span class="n">check_row_highlighting</span><span class="p">(</span>
|
|
||||||
<span class="n">TableLocators</span><span class="o">.</span><span class="n">TABLE_WORK_AREA</span><span class="p">,</span>
|
|
||||||
<span class="n">row_index</span>
|
|
||||||
<span class="p">)</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="ServiceStatusTab.should_be_toolbar">
|
|
||||||
<a class="viewcode-back" href="../../pages.html#pages.service_status_tab.ServiceStatusTab.should_be_toolbar">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">should_be_toolbar</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Проверяет наличие тулбара на вкладке.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Raises:</span>
|
|
||||||
<span class="sd"> AssertionError: Если тулбар отсутствует.</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">toolbar</span><span class="o">.</span><span class="n">check_toolbar_presence</span><span class="p">(</span><span class="s2">"Toolbar is missing"</span><span class="p">)</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="ServiceStatusTab.should_be_services_table">
|
|
||||||
<a class="viewcode-back" href="../../pages.html#pages.service_status_tab.ServiceStatusTab.should_be_services_table">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">should_be_services_table</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Проверяет наличие таблицы сервисов.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Raises:</span>
|
|
||||||
<span class="sd"> AssertionError: Если таблица отсутствует.</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">services_table</span><span class="o">.</span><span class="n">check_visibility</span><span class="p">(</span>
|
|
||||||
<span class="n">TableLocators</span><span class="o">.</span><span class="n">TABLE_WORK_AREA</span><span class="p">,</span>
|
|
||||||
<span class="s2">"Service statuses table is missing"</span>
|
|
||||||
<span class="p">)</span></div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</pre></div>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<footer>
|
|
||||||
|
|
||||||
<hr/>
|
|
||||||
|
|
||||||
<div role="contentinfo">
|
|
||||||
<p>© Авторские права 2025, NPO KIS. </p>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
Собрано при помощи <a href="https://www.sphinx-doc.org/">Sphinx</a> с использованием
|
|
||||||
<a href="https://github.com/readthedocs/sphinx_rtd_theme">темы,</a>
|
|
||||||
предоставленной <a href="https://readthedocs.org">Read the Docs</a>.
|
|
||||||
|
|
||||||
|
|
||||||
</footer>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</section>
|
|
||||||
</div>
|
|
||||||
<script>
|
|
||||||
jQuery(function () {
|
|
||||||
SphinxRtdTheme.Navigation.enable(true);
|
|
||||||
});
|
|
||||||
</script>
|
|
||||||
|
|
||||||
</body>
|
|
||||||
</html>
|
|
||||||
|
|
@ -1,489 +0,0 @@
|
||||||
|
|
||||||
|
|
||||||
<!DOCTYPE html>
|
|
||||||
<html class="writer-html5" lang="ru" data-content_root="../../">
|
|
||||||
<head>
|
|
||||||
<meta charset="utf-8" />
|
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
||||||
<title>pages.session_settings_tab — документация e-nms-qa-automation 0.1.0</title>
|
|
||||||
<link rel="stylesheet" type="text/css" href="../../_static/pygments.css?v=b86133f3" />
|
|
||||||
<link rel="stylesheet" type="text/css" href="../../_static/css/theme.css?v=e59714d7" />
|
|
||||||
|
|
||||||
|
|
||||||
<script src="../../_static/jquery.js?v=5d32c60e"></script>
|
|
||||||
<script src="../../_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script>
|
|
||||||
<script src="../../_static/documentation_options.js?v=6ff560e8"></script>
|
|
||||||
<script src="../../_static/doctools.js?v=9bcbadda"></script>
|
|
||||||
<script src="../../_static/sphinx_highlight.js?v=dc90522c"></script>
|
|
||||||
<script src="../../_static/translations.js?v=cd1d70c9"></script>
|
|
||||||
<script src="../../_static/js/theme.js"></script>
|
|
||||||
<link rel="index" title="Алфавитный указатель" href="../../genindex.html" />
|
|
||||||
<link rel="search" title="Поиск" href="../../search.html" />
|
|
||||||
</head>
|
|
||||||
|
|
||||||
<body class="wy-body-for-nav">
|
|
||||||
<div class="wy-grid-for-nav">
|
|
||||||
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
|
|
||||||
<div class="wy-side-scroll">
|
|
||||||
<div class="wy-side-nav-search" >
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<a href="../../index.html" class="icon icon-home">
|
|
||||||
e-nms-qa-automation
|
|
||||||
</a>
|
|
||||||
<div role="search">
|
|
||||||
<form id="rtd-search-form" class="wy-form" action="../../search.html" method="get">
|
|
||||||
<input type="text" name="q" placeholder="Поиск в документации" aria-label="Поиск в документации" />
|
|
||||||
<input type="hidden" name="check_keywords" value="yes" />
|
|
||||||
<input type="hidden" name="area" value="default" />
|
|
||||||
</form>
|
|
||||||
</div>
|
|
||||||
</div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Меню навигации">
|
|
||||||
<!-- Local TOC -->
|
|
||||||
<div class="local-toc"></div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</nav>
|
|
||||||
|
|
||||||
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Меню навигации для мобильных устройств" >
|
|
||||||
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
|
|
||||||
<a href="../../index.html">e-nms-qa-automation</a>
|
|
||||||
</nav>
|
|
||||||
|
|
||||||
<div class="wy-nav-content">
|
|
||||||
<div class="rst-content">
|
|
||||||
<div role="navigation" aria-label="Навигация по страницам">
|
|
||||||
<ul class="wy-breadcrumbs">
|
|
||||||
<li><a href="../../index.html" class="icon icon-home" aria-label="Home"></a></li>
|
|
||||||
<li class="breadcrumb-item"><a href="../index.html">Код модуля</a></li>
|
|
||||||
<li class="breadcrumb-item active">pages.session_settings_tab</li>
|
|
||||||
<li class="wy-breadcrumbs-aside">
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
<hr/>
|
|
||||||
</div>
|
|
||||||
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
|
|
||||||
<div itemprop="articleBody">
|
|
||||||
|
|
||||||
<h1>Исходный код pages.session_settings_tab</h1><div class="highlight"><pre>
|
|
||||||
<span></span><span class="sd">"""Модуль вкладки 'Сеансы/Настройки'.</span>
|
|
||||||
|
|
||||||
<span class="sd">Содержит класс SessionSettingsTab для работы с полями настройки сессий пользователей.</span>
|
|
||||||
<span class="sd">"""</span>
|
|
||||||
|
|
||||||
<span class="kn">import</span><span class="w"> </span><span class="nn">re</span>
|
|
||||||
<span class="kn">from</span><span class="w"> </span><span class="nn">playwright.sync_api</span><span class="w"> </span><span class="kn">import</span> <span class="n">Page</span>
|
|
||||||
<span class="kn">from</span><span class="w"> </span><span class="nn">locators.settings_form_locators</span><span class="w"> </span><span class="kn">import</span> <span class="n">SettingsFormLocators</span>
|
|
||||||
<span class="kn">from</span><span class="w"> </span><span class="nn">elements.text_input_element</span><span class="w"> </span><span class="kn">import</span> <span class="n">TextInput</span>
|
|
||||||
<span class="kn">from</span><span class="w"> </span><span class="nn">elements.text_element</span><span class="w"> </span><span class="kn">import</span> <span class="n">Text</span>
|
|
||||||
<span class="kn">from</span><span class="w"> </span><span class="nn">components.toolbar_component</span><span class="w"> </span><span class="kn">import</span> <span class="n">ToolbarComponent</span>
|
|
||||||
<span class="kn">from</span><span class="w"> </span><span class="nn">components.settings_form_component</span><span class="w"> </span><span class="kn">import</span> <span class="n">SettingsFormComponent</span>
|
|
||||||
<span class="kn">from</span><span class="w"> </span><span class="nn">components.alert_component</span><span class="w"> </span><span class="kn">import</span> <span class="n">AlertComponent</span>
|
|
||||||
<span class="kn">from</span><span class="w"> </span><span class="nn">pages.base_page</span><span class="w"> </span><span class="kn">import</span> <span class="n">BasePage</span>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="SessionSettingsTab">
|
|
||||||
<a class="viewcode-back" href="../../pages.html#pages.session_settings_tab.SessionSettingsTab">[документация]</a>
|
|
||||||
<span class="k">class</span><span class="w"> </span><span class="nc">SessionSettingsTab</span><span class="p">(</span><span class="n">BasePage</span><span class="p">):</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Класс для работы с вкладкой 'Сеансы/Настройки'.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Предоставляет методы для взаимодействия с полями настройки сессий пользователей.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Args:</span>
|
|
||||||
<span class="sd"> page: Экземпляр страницы Playwright.</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="SessionSettingsTab.__init__">
|
|
||||||
<a class="viewcode-back" href="../../pages.html#pages.session_settings_tab.SessionSettingsTab.__init__">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">page</span><span class="p">:</span> <span class="n">Page</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Инициализирует компоненты вкладки 'Сеансы/Настройки'."""</span>
|
|
||||||
|
|
||||||
<span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="fm">__init__</span><span class="p">(</span><span class="n">page</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="n">locator_button_1</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">page</span><span class="o">.</span><span class="n">get_by_role</span><span class="p">(</span><span class="s2">"navigation"</span><span class="p">)</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span>
|
|
||||||
<span class="n">has_text</span><span class="o">=</span><span class="n">re</span><span class="o">.</span><span class="n">compile</span><span class="p">(</span><span class="s2">"Настройки"</span><span class="p">)</span>
|
|
||||||
<span class="p">)</span><span class="o">.</span><span class="n">get_by_role</span><span class="p">(</span><span class="s2">"button"</span><span class="p">)</span><span class="o">.</span><span class="n">nth</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span>
|
|
||||||
<span class="n">locator_button_2</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">page</span><span class="o">.</span><span class="n">get_by_role</span><span class="p">(</span><span class="s2">"navigation"</span><span class="p">)</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span>
|
|
||||||
<span class="n">has_text</span><span class="o">=</span><span class="n">re</span><span class="o">.</span><span class="n">compile</span><span class="p">(</span><span class="s2">"Настройки"</span><span class="p">)</span>
|
|
||||||
<span class="p">)</span><span class="o">.</span><span class="n">get_by_role</span><span class="p">(</span><span class="s2">"button"</span><span class="p">)</span><span class="o">.</span><span class="n">nth</span><span class="p">(</span><span class="mi">1</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">toolbar</span> <span class="o">=</span> <span class="n">ToolbarComponent</span><span class="p">(</span><span class="n">page</span><span class="p">,</span> <span class="s2">"Настройки"</span><span class="p">)</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">toolbar</span><span class="o">.</span><span class="n">add_tooltip_button</span><span class="p">(</span><span class="n">locator_button_1</span><span class="p">,</span> <span class="s2">"edit"</span><span class="p">)</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">toolbar</span><span class="o">.</span><span class="n">add_tooltip_button</span><span class="p">(</span><span class="n">locator_button_1</span><span class="p">,</span> <span class="s2">"save"</span><span class="p">)</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">toolbar</span><span class="o">.</span><span class="n">add_tooltip_button</span><span class="p">(</span><span class="n">locator_button_2</span><span class="p">,</span> <span class="s2">"cancel"</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="c1"># Форма для отображения/редактирования полей настроек сессии пользователя</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">settings_form</span> <span class="o">=</span> <span class="n">SettingsFormComponent</span><span class="p">(</span><span class="n">page</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">settings_form</span><span class="o">.</span><span class="n">add_toolbar_title</span><span class="p">(</span><span class="s2">"Время жизни сеанса"</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="n">admin_setting_label</span> <span class="o">=</span> <span class="n">Text</span><span class="p">(</span><span class="n">page</span><span class="p">,</span>
|
|
||||||
<span class="n">page</span><span class="o">.</span><span class="n">locator</span><span class="p">(</span><span class="n">SettingsFormLocators</span><span class="o">.</span><span class="n">SETTTINGS_FORM_SCROLL_CONTAINER</span><span class="p">)</span><span class="o">.</span>\
|
|
||||||
<span class="n">get_by_text</span><span class="p">(</span><span class="s1">'Администратор'</span><span class="p">),</span>
|
|
||||||
<span class="s2">"admin_setting_label"</span><span class="p">)</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">settings_form</span><span class="o">.</span><span class="n">add_content_item</span><span class="p">(</span><span class="s2">"admin_setting_label"</span><span class="p">,</span> <span class="n">admin_setting_label</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="n">loc_admin</span> <span class="o">=</span> <span class="n">page</span><span class="o">.</span><span class="n">locator</span><span class="p">(</span><span class="n">SettingsFormLocators</span><span class="o">.</span><span class="n">SETTTINGS_FORM_SCROLL_CONTAINER</span><span class="p">)</span><span class="o">.</span>\
|
|
||||||
<span class="n">get_by_label</span><span class="p">(</span><span class="s1">'Администратор'</span><span class="p">)</span>
|
|
||||||
<span class="n">admin_setting</span> <span class="o">=</span> <span class="n">TextInput</span><span class="p">(</span><span class="n">page</span><span class="p">,</span> <span class="n">loc_admin</span><span class="p">,</span> <span class="s2">"admin_setting"</span><span class="p">)</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">settings_form</span><span class="o">.</span><span class="n">add_content_item</span><span class="p">(</span><span class="s2">"admin_setting"</span><span class="p">,</span> <span class="n">admin_setting</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="n">operator_setting_label</span> <span class="o">=</span> <span class="n">Text</span><span class="p">(</span><span class="n">page</span><span class="p">,</span>
|
|
||||||
<span class="n">page</span><span class="o">.</span><span class="n">locator</span><span class="p">(</span><span class="n">SettingsFormLocators</span><span class="o">.</span><span class="n">SETTTINGS_FORM_SCROLL_CONTAINER</span><span class="p">)</span><span class="o">.</span>\
|
|
||||||
<span class="n">get_by_text</span><span class="p">(</span><span class="s1">'Оператор'</span><span class="p">),</span>
|
|
||||||
<span class="s2">"operator_setting_label"</span><span class="p">)</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">settings_form</span><span class="o">.</span><span class="n">add_content_item</span><span class="p">(</span><span class="s2">"operator_setting_label"</span><span class="p">,</span> <span class="n">operator_setting_label</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="n">loc_oper</span> <span class="o">=</span> <span class="n">page</span><span class="o">.</span><span class="n">locator</span><span class="p">(</span><span class="n">SettingsFormLocators</span><span class="o">.</span><span class="n">SETTTINGS_FORM_SCROLL_CONTAINER</span><span class="p">)</span><span class="o">.</span>\
|
|
||||||
<span class="n">get_by_label</span><span class="p">(</span><span class="s1">'Оператор'</span><span class="p">)</span>
|
|
||||||
<span class="n">operator_setting</span> <span class="o">=</span> <span class="n">TextInput</span><span class="p">(</span><span class="n">page</span><span class="p">,</span> <span class="n">loc_oper</span><span class="p">,</span> <span class="s2">"operator_setting"</span><span class="p">)</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">settings_form</span><span class="o">.</span><span class="n">add_content_item</span><span class="p">(</span><span class="s2">"operator_setting"</span><span class="p">,</span> <span class="n">operator_setting</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="n">manager_setting_label</span> <span class="o">=</span> <span class="n">Text</span><span class="p">(</span><span class="n">page</span><span class="p">,</span>
|
|
||||||
<span class="n">page</span><span class="o">.</span><span class="n">locator</span><span class="p">(</span><span class="n">SettingsFormLocators</span><span class="o">.</span><span class="n">SETTTINGS_FORM_SCROLL_CONTAINER</span><span class="p">)</span><span class="o">.</span>\
|
|
||||||
<span class="n">get_by_text</span><span class="p">(</span><span class="s1">'Контактное лицо'</span><span class="p">),</span>
|
|
||||||
<span class="s2">"manager_setting_label"</span><span class="p">)</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">settings_form</span><span class="o">.</span><span class="n">add_content_item</span><span class="p">(</span><span class="s2">"manager_setting_label"</span><span class="p">,</span> <span class="n">manager_setting_label</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="n">loc_manager</span> <span class="o">=</span> <span class="n">page</span><span class="o">.</span><span class="n">locator</span><span class="p">(</span><span class="n">SettingsFormLocators</span><span class="o">.</span><span class="n">SETTTINGS_FORM_SCROLL_CONTAINER</span><span class="p">)</span><span class="o">.</span>\
|
|
||||||
<span class="n">get_by_label</span><span class="p">(</span><span class="s1">'Контактное лицо'</span><span class="p">)</span>
|
|
||||||
<span class="n">manager_setting</span> <span class="o">=</span> <span class="n">TextInput</span><span class="p">(</span><span class="n">page</span><span class="p">,</span> <span class="n">loc_manager</span><span class="p">,</span> <span class="s2">"manager_setting"</span><span class="p">)</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">settings_form</span><span class="o">.</span><span class="n">add_content_item</span><span class="p">(</span><span class="s2">"manager_setting"</span><span class="p">,</span> <span class="n">manager_setting</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="n">inform_secur_user_setting_label</span> <span class="o">=</span> <span class="n">Text</span><span class="p">(</span><span class="n">page</span><span class="p">,</span>
|
|
||||||
<span class="n">page</span><span class="o">.</span><span class="n">locator</span><span class="p">(</span><span class="n">SettingsFormLocators</span><span class="o">.</span><span class="n">SETTTINGS_FORM_SCROLL_CONTAINER</span><span class="p">)</span><span class="o">.</span>\
|
|
||||||
<span class="n">get_by_text</span><span class="p">(</span><span class="s1">'Специалист информационной безопасности'</span><span class="p">),</span>
|
|
||||||
<span class="s2">"inform_secur_user_setting_label"</span><span class="p">)</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">settings_form</span><span class="o">.</span><span class="n">add_content_item</span><span class="p">(</span><span class="s2">"inform_secur_user_setting_label"</span><span class="p">,</span> <span class="n">inform_secur_user_setting_label</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="n">loc_inform_secur_user</span> <span class="o">=</span> <span class="n">page</span><span class="o">.</span><span class="n">locator</span><span class="p">(</span><span class="n">SettingsFormLocators</span><span class="o">.</span><span class="n">SETTTINGS_FORM_SCROLL_CONTAINER</span><span class="p">)</span><span class="o">.</span>\
|
|
||||||
<span class="n">get_by_label</span><span class="p">(</span><span class="s1">'Специалист информационной безопасности'</span><span class="p">)</span>
|
|
||||||
<span class="n">inform_secur_user_setting</span> <span class="o">=</span> <span class="n">TextInput</span><span class="p">(</span><span class="n">page</span><span class="p">,</span> <span class="n">loc_inform_secur_user</span><span class="p">,</span> <span class="s2">"inform_secur_user_setting"</span><span class="p">)</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">settings_form</span><span class="o">.</span><span class="n">add_content_item</span><span class="p">(</span><span class="s2">"inform_secur_user_setting"</span><span class="p">,</span> <span class="n">inform_secur_user_setting</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="n">collector_setting_label</span> <span class="o">=</span> <span class="n">Text</span><span class="p">(</span><span class="n">page</span><span class="p">,</span>
|
|
||||||
<span class="n">page</span><span class="o">.</span><span class="n">locator</span><span class="p">(</span><span class="n">SettingsFormLocators</span><span class="o">.</span><span class="n">SETTTINGS_FORM_SCROLL_CONTAINER</span><span class="p">)</span><span class="o">.</span>\
|
|
||||||
<span class="n">get_by_text</span><span class="p">(</span><span class="s1">'$collector'</span><span class="p">),</span>
|
|
||||||
<span class="s2">"collector_setting_label"</span><span class="p">)</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">settings_form</span><span class="o">.</span><span class="n">add_content_item</span><span class="p">(</span><span class="s2">"collector_setting_label"</span><span class="p">,</span> <span class="n">collector_setting_label</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="n">loc_collector</span> <span class="o">=</span> <span class="n">page</span><span class="o">.</span><span class="n">locator</span><span class="p">(</span><span class="n">SettingsFormLocators</span><span class="o">.</span><span class="n">SETTTINGS_FORM_SCROLL_CONTAINER</span><span class="p">)</span><span class="o">.</span>\
|
|
||||||
<span class="n">get_by_label</span><span class="p">(</span><span class="s1">'$collector'</span><span class="p">)</span>
|
|
||||||
<span class="n">collector_setting</span> <span class="o">=</span> <span class="n">TextInput</span><span class="p">(</span><span class="n">page</span><span class="p">,</span> <span class="n">loc_collector</span><span class="p">,</span> <span class="s2">"collector_setting"</span><span class="p">)</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">settings_form</span><span class="o">.</span><span class="n">add_content_item</span><span class="p">(</span><span class="s2">"collector_setting"</span><span class="p">,</span> <span class="n">collector_setting</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="c1"># Окно сообщения об успешном/неуспешном сохранении настроек</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">alert</span> <span class="o">=</span> <span class="n">AlertComponent</span><span class="p">(</span><span class="n">page</span><span class="p">)</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<span class="c1"># Действия:</span>
|
|
||||||
<div class="viewcode-block" id="SessionSettingsTab.click_cancel_button">
|
|
||||||
<a class="viewcode-back" href="../../pages.html#pages.session_settings_tab.SessionSettingsTab.click_cancel_button">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">click_cancel_button</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Нажатие кнопки 'Отменить' на тулбаре."""</span>
|
|
||||||
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">toolbar</span><span class="o">.</span><span class="n">check_button_visibility</span><span class="p">(</span><span class="s2">"cancel"</span><span class="p">)</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">toolbar</span><span class="o">.</span><span class="n">get_button_by_name</span><span class="p">(</span><span class="s2">"cancel"</span><span class="p">)</span><span class="o">.</span><span class="n">click</span><span class="p">()</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="SessionSettingsTab.click_edit_button">
|
|
||||||
<a class="viewcode-back" href="../../pages.html#pages.session_settings_tab.SessionSettingsTab.click_edit_button">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">click_edit_button</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Нажатие кнопки 'Редактировать' на тулбаре."""</span>
|
|
||||||
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">toolbar</span><span class="o">.</span><span class="n">check_button_visibility</span><span class="p">(</span><span class="s2">"edit"</span><span class="p">)</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">toolbar</span><span class="o">.</span><span class="n">get_button_by_name</span><span class="p">(</span><span class="s2">"edit"</span><span class="p">)</span><span class="o">.</span><span class="n">click</span><span class="p">()</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="SessionSettingsTab.click_save_button">
|
|
||||||
<a class="viewcode-back" href="../../pages.html#pages.session_settings_tab.SessionSettingsTab.click_save_button">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">click_save_button</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Нажатие кнопки 'Сохранить' на тулбаре."""</span>
|
|
||||||
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">toolbar</span><span class="o">.</span><span class="n">check_button_visibility</span><span class="p">(</span><span class="s2">"save"</span><span class="p">)</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">toolbar</span><span class="o">.</span><span class="n">get_button_by_name</span><span class="p">(</span><span class="s2">"save"</span><span class="p">)</span><span class="o">.</span><span class="n">click</span><span class="p">()</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="SessionSettingsTab.decrease_setting_value">
|
|
||||||
<a class="viewcode-back" href="../../pages.html#pages.session_settings_tab.SessionSettingsTab.decrease_setting_value">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">decrease_setting_value</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">field_name</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Уменьшение на единицу значения поля настройки с помощью стрелочки вниз."""</span>
|
|
||||||
|
|
||||||
<span class="n">field</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_field_by_name</span><span class="p">(</span><span class="n">field_name</span><span class="p">)</span>
|
|
||||||
<span class="n">field</span><span class="o">.</span><span class="n">decrease_value</span><span class="p">()</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="SessionSettingsTab.increase_setting_value">
|
|
||||||
<a class="viewcode-back" href="../../pages.html#pages.session_settings_tab.SessionSettingsTab.increase_setting_value">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">increase_setting_value</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">field_name</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Увеличение на единицу значения поля настройки с помощью стрелочки вверх."""</span>
|
|
||||||
|
|
||||||
<span class="n">field</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_field_by_name</span><span class="p">(</span><span class="n">field_name</span><span class="p">)</span>
|
|
||||||
<span class="n">field</span><span class="o">.</span><span class="n">increase_value</span><span class="p">()</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="SessionSettingsTab.get_field_by_name">
|
|
||||||
<a class="viewcode-back" href="../../pages.html#pages.session_settings_tab.SessionSettingsTab.get_field_by_name">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">get_field_by_name</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">field_name</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="n">TextInput</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Возвращает элемент поле ввода по его имени.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Returns:</span>
|
|
||||||
<span class="sd"> TextInput: Элемент поле ввода.</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
|
|
||||||
<span class="k">if</span> <span class="n">field_name</span> <span class="o">==</span> <span class="s2">"administrator"</span><span class="p">:</span>
|
|
||||||
<span class="n">field</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">settings_form</span><span class="o">.</span><span class="n">get_content_item</span><span class="p">(</span><span class="s2">"admin_setting"</span><span class="p">)</span>
|
|
||||||
<span class="k">elif</span> <span class="n">field_name</span> <span class="o">==</span> <span class="s2">"operator"</span><span class="p">:</span>
|
|
||||||
<span class="n">field</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">settings_form</span><span class="o">.</span><span class="n">get_content_item</span><span class="p">(</span><span class="s2">"operator_setting"</span><span class="p">)</span>
|
|
||||||
<span class="k">elif</span> <span class="n">field_name</span> <span class="o">==</span> <span class="s2">"manager"</span><span class="p">:</span>
|
|
||||||
<span class="n">field</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">settings_form</span><span class="o">.</span><span class="n">get_content_item</span><span class="p">(</span><span class="s2">"manager_setting"</span><span class="p">)</span>
|
|
||||||
<span class="k">elif</span> <span class="n">field_name</span> <span class="o">==</span> <span class="s2">"inform_secur_user"</span><span class="p">:</span>
|
|
||||||
<span class="n">field</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">settings_form</span><span class="o">.</span><span class="n">get_content_item</span><span class="p">(</span><span class="s2">"inform_secur_user_setting"</span><span class="p">)</span>
|
|
||||||
<span class="k">elif</span> <span class="n">field_name</span> <span class="o">==</span> <span class="s1">'$collector'</span><span class="p">:</span>
|
|
||||||
<span class="n">field</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">settings_form</span><span class="o">.</span><span class="n">get_content_item</span><span class="p">(</span><span class="s2">"collector_setting"</span><span class="p">)</span>
|
|
||||||
<span class="k">else</span><span class="p">:</span>
|
|
||||||
<span class="k">assert</span> <span class="kc">False</span><span class="p">,</span> <span class="sa">f</span><span class="s2">"Got unsupported field name </span><span class="si">{</span><span class="n">field_name</span><span class="si">}</span><span class="s2">"</span>
|
|
||||||
<span class="k">return</span> <span class="n">field</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="SessionSettingsTab.get_label_by_name">
|
|
||||||
<a class="viewcode-back" href="../../pages.html#pages.session_settings_tab.SessionSettingsTab.get_label_by_name">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">get_label_by_name</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">label_name</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="n">Text</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Возвращает элемент название поля ввода по его имени.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Returns:</span>
|
|
||||||
<span class="sd"> Text: Элемент название поле ввода.</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
|
|
||||||
<span class="k">if</span> <span class="n">label_name</span> <span class="o">==</span> <span class="s2">"administrator"</span><span class="p">:</span>
|
|
||||||
<span class="n">label</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">settings_form</span><span class="o">.</span><span class="n">get_content_item</span><span class="p">(</span><span class="s2">"admin_setting_label"</span><span class="p">)</span>
|
|
||||||
<span class="k">elif</span> <span class="n">label_name</span> <span class="o">==</span> <span class="s2">"operator"</span><span class="p">:</span>
|
|
||||||
<span class="n">label</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">settings_form</span><span class="o">.</span><span class="n">get_content_item</span><span class="p">(</span><span class="s2">"operator_setting_label"</span><span class="p">)</span>
|
|
||||||
<span class="k">elif</span> <span class="n">label_name</span> <span class="o">==</span> <span class="s2">"manager"</span><span class="p">:</span>
|
|
||||||
<span class="n">label</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">settings_form</span><span class="o">.</span><span class="n">get_content_item</span><span class="p">(</span><span class="s2">"manager_setting_label"</span><span class="p">)</span>
|
|
||||||
<span class="k">elif</span> <span class="n">label_name</span> <span class="o">==</span> <span class="s2">"inform_secur_user"</span><span class="p">:</span>
|
|
||||||
<span class="n">label</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">settings_form</span><span class="o">.</span><span class="n">get_content_item</span><span class="p">(</span><span class="s2">"inform_secur_user_setting_label"</span><span class="p">)</span>
|
|
||||||
<span class="k">elif</span> <span class="n">label_name</span> <span class="o">==</span> <span class="s1">'$collector'</span><span class="p">:</span>
|
|
||||||
<span class="n">label</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">settings_form</span><span class="o">.</span><span class="n">get_content_item</span><span class="p">(</span><span class="s2">"collector_setting_label"</span><span class="p">)</span>
|
|
||||||
<span class="k">else</span><span class="p">:</span>
|
|
||||||
<span class="k">assert</span> <span class="kc">False</span><span class="p">,</span> <span class="sa">f</span><span class="s2">"Got unsupported label name </span><span class="si">{</span><span class="n">label_name</span><span class="si">}</span><span class="s2">"</span>
|
|
||||||
<span class="k">return</span> <span class="n">label</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="SessionSettingsTab.get_setting_value">
|
|
||||||
<a class="viewcode-back" href="../../pages.html#pages.session_settings_tab.SessionSettingsTab.get_setting_value">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">get_setting_value</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">field_name</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Возвращает текущее значение требуемого поля настроек.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Returns:</span>
|
|
||||||
<span class="sd"> str : Текущее значение требуемого поля настроек.</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
|
|
||||||
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_field_by_name</span><span class="p">(</span><span class="n">field_name</span><span class="p">)</span><span class="o">.</span><span class="n">get_input_value</span><span class="p">()</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="SessionSettingsTab.get_settings_values">
|
|
||||||
<a class="viewcode-back" href="../../pages.html#pages.session_settings_tab.SessionSettingsTab.get_settings_values">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">get_settings_values</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">dict</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Возвращает словарь с текущими значениями настроек времени жизни сессии.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Returns:</span>
|
|
||||||
<span class="sd"> dict: Cловарь с текущими значениями настроек времени жизни сессии.</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
|
|
||||||
<span class="n">current_values</span> <span class="o">=</span> <span class="p">{}</span>
|
|
||||||
|
|
||||||
<span class="n">current_values</span><span class="p">[</span><span class="s1">'administrator'</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">settings_form</span><span class="o">.</span><span class="n">get_content_item</span><span class="p">(</span><span class="s2">"admin_setting"</span><span class="p">)</span><span class="o">.</span>\
|
|
||||||
<span class="n">get_input_value</span><span class="p">()</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span>
|
|
||||||
<span class="n">current_values</span><span class="p">[</span><span class="s1">'operator'</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">settings_form</span><span class="o">.</span><span class="n">get_content_item</span><span class="p">(</span><span class="s2">"operator_setting"</span><span class="p">)</span><span class="o">.</span>\
|
|
||||||
<span class="n">get_input_value</span><span class="p">()</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span>
|
|
||||||
<span class="n">current_values</span><span class="p">[</span><span class="s1">'manager'</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">settings_form</span><span class="o">.</span><span class="n">get_content_item</span><span class="p">(</span><span class="s2">"manager_setting"</span><span class="p">)</span><span class="o">.</span>\
|
|
||||||
<span class="n">get_input_value</span><span class="p">()</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span>
|
|
||||||
<span class="n">current_values</span><span class="p">[</span><span class="s1">'inform_secur_user'</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">settings_form</span><span class="o">.</span><span class="n">get_content_item</span><span class="p">(</span><span class="s2">"inform_secur_user_setting"</span><span class="p">)</span><span class="o">.</span>\
|
|
||||||
<span class="n">get_input_value</span><span class="p">()</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span>
|
|
||||||
<span class="n">current_values</span><span class="p">[</span><span class="s1">'$collector'</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">settings_form</span><span class="o">.</span><span class="n">get_content_item</span><span class="p">(</span><span class="s2">"collector_setting"</span><span class="p">)</span><span class="o">.</span>\
|
|
||||||
<span class="n">get_input_value</span><span class="p">()</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span>
|
|
||||||
<span class="k">return</span> <span class="n">current_values</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="SessionSettingsTab.edit_settings">
|
|
||||||
<a class="viewcode-back" href="../../pages.html#pages.session_settings_tab.SessionSettingsTab.edit_settings">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">edit_settings</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">new_settings</span><span class="p">:</span> <span class="nb">dict</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Изменение текущих значений настроек времени жизни сессии.</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">click_edit_button</span><span class="p">()</span>
|
|
||||||
|
|
||||||
<span class="k">for</span> <span class="n">key</span><span class="p">,</span> <span class="n">value</span> <span class="ow">in</span> <span class="n">new_settings</span><span class="o">.</span><span class="n">items</span><span class="p">():</span>
|
|
||||||
<span class="n">field</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_field_by_name</span><span class="p">(</span><span class="n">key</span><span class="p">)</span>
|
|
||||||
<span class="n">field</span><span class="o">.</span><span class="n">input_value</span><span class="p">(</span><span class="n">value</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="c1"># temporararily</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">click_cancel_button</span><span class="p">()</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<span class="c1"># self.click_save_button()</span>
|
|
||||||
|
|
||||||
<span class="c1"># alert_type = self.alert.get_alert_type()</span>
|
|
||||||
<span class="c1"># if alert_type == "success":</span>
|
|
||||||
<span class="c1"># self.alert.check_alert_presence(' Параметры успешно\n обновлены ')</span>
|
|
||||||
<span class="c1"># self.alert.check_alert_absence(' Параметры успешно\n обновлены ')</span>
|
|
||||||
<span class="c1"># else:</span>
|
|
||||||
<span class="c1"># assert False, f"Got unexpected alert type {alert_type}"</span>
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="SessionSettingsTab.scroll_down">
|
|
||||||
<a class="viewcode-back" href="../../pages.html#pages.session_settings_tab.SessionSettingsTab.scroll_down">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">scroll_down</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Скроллинг вниз формы настроек времени жизни сессии.</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
|
|
||||||
<span class="n">locator</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">page</span><span class="o">.</span><span class="n">locator</span><span class="p">(</span><span class="n">SettingsFormLocators</span><span class="o">.</span><span class="n">SETTTINGS_FORM_SCROLL_CONTAINER</span><span class="p">)</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span>
|
|
||||||
<span class="n">has_text</span><span class="o">=</span><span class="s2">"Время жизни сеанса"</span><span class="p">)</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">settings_form</span><span class="o">.</span><span class="n">scroll_down</span><span class="p">(</span><span class="n">locator</span><span class="p">)</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="SessionSettingsTab.scroll_up">
|
|
||||||
<a class="viewcode-back" href="../../pages.html#pages.session_settings_tab.SessionSettingsTab.scroll_up">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">scroll_up</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Скроллинг вверх формы настроек времени жизни сессии.</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
|
|
||||||
<span class="n">locator</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">page</span><span class="o">.</span><span class="n">locator</span><span class="p">(</span><span class="n">SettingsFormLocators</span><span class="o">.</span><span class="n">SETTTINGS_FORM_SCROLL_CONTAINER</span><span class="p">)</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span>
|
|
||||||
<span class="n">has_text</span><span class="o">=</span><span class="s2">"Время жизни сеанса"</span><span class="p">)</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">settings_form</span><span class="o">.</span><span class="n">scroll_up</span><span class="p">(</span><span class="n">locator</span><span class="p">)</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<span class="c1"># Проверки:</span>
|
|
||||||
<div class="viewcode-block" id="SessionSettingsTab.check_content">
|
|
||||||
<a class="viewcode-back" href="../../pages.html#pages.session_settings_tab.SessionSettingsTab.check_content">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">check_content</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Проверяет наличие и корректность всех элементов формы."""</span>
|
|
||||||
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">should_be_toolbar</span><span class="p">()</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">should_be_toolbar_buttons</span><span class="p">()</span>
|
|
||||||
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">should_be_form_toolbar</span><span class="p">()</span>
|
|
||||||
|
|
||||||
<span class="k">for</span> <span class="n">name</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">settings_form</span><span class="o">.</span><span class="n">content_items</span><span class="o">.</span><span class="n">keys</span><span class="p">():</span>
|
|
||||||
<span class="n">item</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">settings_form</span><span class="o">.</span><span class="n">get_content_item</span><span class="p">(</span><span class="n">name</span><span class="p">)</span>
|
|
||||||
<span class="n">item</span><span class="o">.</span><span class="n">check_visibility</span><span class="p">(</span>
|
|
||||||
<span class="sa">f</span><span class="s2">"Session settings input form item with name '</span><span class="si">{</span><span class="n">name</span><span class="si">}</span><span class="s2">' is missing"</span>
|
|
||||||
<span class="p">)</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="SessionSettingsTab.check_vertical_scrolling">
|
|
||||||
<a class="viewcode-back" href="../../pages.html#pages.session_settings_tab.SessionSettingsTab.check_vertical_scrolling">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">check_vertical_scrolling</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">bool</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Проверка возможности вертикального скроллинга формы настроек времени жизни сессии.</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
|
|
||||||
<span class="n">locator</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">page</span><span class="o">.</span><span class="n">locator</span><span class="p">(</span><span class="n">SettingsFormLocators</span><span class="o">.</span><span class="n">SETTTINGS_FORM_SCROLL_CONTAINER</span><span class="p">)</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span>
|
|
||||||
<span class="n">has_text</span><span class="o">=</span><span class="s2">"Время жизни сеанса"</span><span class="p">)</span>
|
|
||||||
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">settings_form</span><span class="o">.</span><span class="n">check_vertical_scrolling</span><span class="p">(</span><span class="n">locator</span><span class="p">)</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="SessionSettingsTab.should_be_toolbar">
|
|
||||||
<a class="viewcode-back" href="../../pages.html#pages.session_settings_tab.SessionSettingsTab.should_be_toolbar">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">should_be_toolbar</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Проверяет наличие тулбара вкладки.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Raises:</span>
|
|
||||||
<span class="sd"> AssertionError: Если тулбар или кнопка редактирования отсутствуют.</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
<span class="n">loc</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">page</span><span class="o">.</span><span class="n">get_by_role</span><span class="p">(</span><span class="s2">"navigation"</span><span class="p">)</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span>
|
|
||||||
<span class="n">has_text</span><span class="o">=</span><span class="n">re</span><span class="o">.</span><span class="n">compile</span><span class="p">(</span><span class="s2">"Настройки"</span><span class="p">))</span><span class="o">.</span><span class="n">locator</span><span class="p">(</span><span class="s2">"div"</span><span class="p">)</span><span class="o">.</span><span class="n">nth</span><span class="p">(</span><span class="mi">1</span><span class="p">)</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">toolbar</span><span class="o">.</span><span class="n">check_toolbar_presence_by_locator</span><span class="p">(</span><span class="n">loc</span><span class="p">,</span> <span class="s2">"Toolbar with title 'Настройки' is missing"</span><span class="p">)</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">toolbar</span><span class="o">.</span><span class="n">check_button_visibility</span><span class="p">(</span><span class="s2">"edit"</span><span class="p">)</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="SessionSettingsTab.should_be_toolbar_buttons">
|
|
||||||
<a class="viewcode-back" href="../../pages.html#pages.session_settings_tab.SessionSettingsTab.should_be_toolbar_buttons">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">should_be_toolbar_buttons</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Проверяет наличие и функциональность кнопок тулбара.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Raises:</span>
|
|
||||||
<span class="sd"> AssertionError: Если кнопки недоступны или подсказки неверны.</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">toolbar</span><span class="o">.</span><span class="n">check_button_visibility</span><span class="p">(</span><span class="s2">"edit"</span><span class="p">)</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">toolbar</span><span class="o">.</span><span class="n">check_button_tooltip</span><span class="p">(</span><span class="s2">"edit"</span><span class="p">,</span> <span class="s2">"Редактировать"</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">toolbar</span><span class="o">.</span><span class="n">get_button_by_name</span><span class="p">(</span><span class="s2">"edit"</span><span class="p">)</span><span class="o">.</span><span class="n">click</span><span class="p">()</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">toolbar</span><span class="o">.</span><span class="n">check_button_visibility</span><span class="p">(</span><span class="s2">"save"</span><span class="p">)</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">toolbar</span><span class="o">.</span><span class="n">check_button_visibility</span><span class="p">(</span><span class="s2">"cancel"</span><span class="p">)</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">toolbar</span><span class="o">.</span><span class="n">check_button_tooltip</span><span class="p">(</span><span class="s2">"save"</span><span class="p">,</span> <span class="s2">"Сохранить"</span><span class="p">)</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">toolbar</span><span class="o">.</span><span class="n">check_button_tooltip</span><span class="p">(</span><span class="s2">"cancel"</span><span class="p">,</span> <span class="s2">"Отменить"</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">toolbar</span><span class="o">.</span><span class="n">get_button_by_name</span><span class="p">(</span><span class="s2">"cancel"</span><span class="p">)</span><span class="o">.</span><span class="n">click</span><span class="p">()</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">toolbar</span><span class="o">.</span><span class="n">check_button_visibility</span><span class="p">(</span><span class="s2">"edit"</span><span class="p">)</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="SessionSettingsTab.should_be_form_toolbar">
|
|
||||||
<a class="viewcode-back" href="../../pages.html#pages.session_settings_tab.SessionSettingsTab.should_be_form_toolbar">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">should_be_form_toolbar</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Проверяет наличие тулбара формы редактирования настроек.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Raises:</span>
|
|
||||||
<span class="sd"> AssertionError: Если тулбар отсутствует.</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">settings_form</span><span class="o">.</span><span class="n">should_be_toolbar</span><span class="p">()</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="SessionSettingsTab.verify_form_data">
|
|
||||||
<a class="viewcode-back" href="../../pages.html#pages.session_settings_tab.SessionSettingsTab.verify_form_data">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">verify_form_data</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">session_settings</span><span class="p">:</span> <span class="nb">dict</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Проверяет соответствие содержимого полей формы данным из БД.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Raises:</span>
|
|
||||||
<span class="sd"> AssertionError: Если содержимое поля не соответствует данным из БД.</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
|
|
||||||
<span class="k">for</span> <span class="n">key</span><span class="p">,</span> <span class="n">value</span> <span class="ow">in</span> <span class="n">session_settings</span><span class="o">.</span><span class="n">items</span><span class="p">():</span>
|
|
||||||
<span class="n">field_value</span> <span class="o">=</span> <span class="s2">""</span>
|
|
||||||
<span class="k">if</span> <span class="n">key</span> <span class="o">==</span> <span class="s2">"administrator"</span><span class="p">:</span>
|
|
||||||
<span class="n">field_value</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">settings_form</span><span class="o">.</span><span class="n">get_content_item</span><span class="p">(</span><span class="s2">"admin_setting"</span><span class="p">)</span><span class="o">.</span><span class="n">get_input_value</span><span class="p">()</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span>
|
|
||||||
<span class="k">elif</span> <span class="n">key</span> <span class="o">==</span> <span class="s2">"operator"</span><span class="p">:</span>
|
|
||||||
<span class="n">field_value</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">settings_form</span><span class="o">.</span><span class="n">get_content_item</span><span class="p">(</span><span class="s2">"operator_setting"</span><span class="p">)</span><span class="o">.</span><span class="n">get_input_value</span><span class="p">()</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span>
|
|
||||||
<span class="k">elif</span> <span class="n">key</span> <span class="o">==</span> <span class="s2">"manager"</span><span class="p">:</span>
|
|
||||||
<span class="n">field_value</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">settings_form</span><span class="o">.</span><span class="n">get_content_item</span><span class="p">(</span><span class="s2">"manager_setting"</span><span class="p">)</span><span class="o">.</span><span class="n">get_input_value</span><span class="p">()</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span>
|
|
||||||
<span class="k">elif</span> <span class="n">key</span> <span class="o">==</span> <span class="s2">"inform_secur_user"</span><span class="p">:</span>
|
|
||||||
<span class="n">field_value</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">settings_form</span><span class="o">.</span><span class="n">get_content_item</span><span class="p">(</span><span class="s2">"inform_secur_user_setting"</span><span class="p">)</span><span class="o">.</span><span class="n">get_input_value</span><span class="p">()</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span>
|
|
||||||
<span class="k">elif</span> <span class="n">key</span> <span class="o">==</span> <span class="s1">'$collector'</span><span class="p">:</span>
|
|
||||||
<span class="n">field_value</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">settings_form</span><span class="o">.</span><span class="n">get_content_item</span><span class="p">(</span><span class="s2">"collector_setting"</span><span class="p">)</span><span class="o">.</span><span class="n">get_input_value</span><span class="p">()</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span>
|
|
||||||
<span class="k">else</span><span class="p">:</span>
|
|
||||||
<span class="k">assert</span> <span class="kc">False</span><span class="p">,</span> <span class="sa">f</span><span class="s2">"Got unsupported field name </span><span class="si">{</span><span class="n">key</span><span class="si">}</span><span class="s2">"</span>
|
|
||||||
<span class="k">assert</span> <span class="n">field_value</span> <span class="o">==</span> <span class="nb">str</span><span class="p">(</span><span class="n">value</span><span class="p">),</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">key</span><span class="si">}</span><span class="s2"> field value </span><span class="si">{</span><span class="n">field_value</span><span class="si">}</span><span class="s2"> is not equal value </span><span class="si">{</span><span class="n">value</span><span class="si">}</span><span class="s2"> from data base"</span></div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</pre></div>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<footer>
|
|
||||||
|
|
||||||
<hr/>
|
|
||||||
|
|
||||||
<div role="contentinfo">
|
|
||||||
<p>© Авторские права 2025, NPO KIS. </p>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
Собрано при помощи <a href="https://www.sphinx-doc.org/">Sphinx</a> с использованием
|
|
||||||
<a href="https://github.com/readthedocs/sphinx_rtd_theme">темы,</a>
|
|
||||||
предоставленной <a href="https://readthedocs.org">Read the Docs</a>.
|
|
||||||
|
|
||||||
|
|
||||||
</footer>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</section>
|
|
||||||
</div>
|
|
||||||
<script>
|
|
||||||
jQuery(function () {
|
|
||||||
SphinxRtdTheme.Navigation.enable(true);
|
|
||||||
});
|
|
||||||
</script>
|
|
||||||
|
|
||||||
</body>
|
|
||||||
</html>
|
|
||||||
|
|
@ -1,518 +0,0 @@
|
||||||
|
|
||||||
|
|
||||||
<!DOCTYPE html>
|
|
||||||
<html class="writer-html5" lang="ru" data-content_root="../../">
|
|
||||||
<head>
|
|
||||||
<meta charset="utf-8" />
|
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
||||||
<title>pages.templates_tab — документация e-nms-qa-automation 0.1.0</title>
|
|
||||||
<link rel="stylesheet" type="text/css" href="../../_static/pygments.css?v=b86133f3" />
|
|
||||||
<link rel="stylesheet" type="text/css" href="../../_static/css/theme.css?v=e59714d7" />
|
|
||||||
|
|
||||||
|
|
||||||
<script src="../../_static/jquery.js?v=5d32c60e"></script>
|
|
||||||
<script src="../../_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script>
|
|
||||||
<script src="../../_static/documentation_options.js?v=6ff560e8"></script>
|
|
||||||
<script src="../../_static/doctools.js?v=9bcbadda"></script>
|
|
||||||
<script src="../../_static/sphinx_highlight.js?v=dc90522c"></script>
|
|
||||||
<script src="../../_static/translations.js?v=cd1d70c9"></script>
|
|
||||||
<script src="../../_static/js/theme.js"></script>
|
|
||||||
<link rel="index" title="Алфавитный указатель" href="../../genindex.html" />
|
|
||||||
<link rel="search" title="Поиск" href="../../search.html" />
|
|
||||||
</head>
|
|
||||||
|
|
||||||
<body class="wy-body-for-nav">
|
|
||||||
<div class="wy-grid-for-nav">
|
|
||||||
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
|
|
||||||
<div class="wy-side-scroll">
|
|
||||||
<div class="wy-side-nav-search" >
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<a href="../../index.html" class="icon icon-home">
|
|
||||||
e-nms-qa-automation
|
|
||||||
</a>
|
|
||||||
<div role="search">
|
|
||||||
<form id="rtd-search-form" class="wy-form" action="../../search.html" method="get">
|
|
||||||
<input type="text" name="q" placeholder="Поиск в документации" aria-label="Поиск в документации" />
|
|
||||||
<input type="hidden" name="check_keywords" value="yes" />
|
|
||||||
<input type="hidden" name="area" value="default" />
|
|
||||||
</form>
|
|
||||||
</div>
|
|
||||||
</div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Меню навигации">
|
|
||||||
<!-- Local TOC -->
|
|
||||||
<div class="local-toc"></div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</nav>
|
|
||||||
|
|
||||||
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Меню навигации для мобильных устройств" >
|
|
||||||
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
|
|
||||||
<a href="../../index.html">e-nms-qa-automation</a>
|
|
||||||
</nav>
|
|
||||||
|
|
||||||
<div class="wy-nav-content">
|
|
||||||
<div class="rst-content">
|
|
||||||
<div role="navigation" aria-label="Навигация по страницам">
|
|
||||||
<ul class="wy-breadcrumbs">
|
|
||||||
<li><a href="../../index.html" class="icon icon-home" aria-label="Home"></a></li>
|
|
||||||
<li class="breadcrumb-item"><a href="../index.html">Код модуля</a></li>
|
|
||||||
<li class="breadcrumb-item active">pages.templates_tab</li>
|
|
||||||
<li class="wy-breadcrumbs-aside">
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
<hr/>
|
|
||||||
</div>
|
|
||||||
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
|
|
||||||
<div itemprop="articleBody">
|
|
||||||
|
|
||||||
<h1>Исходный код pages.templates_tab</h1><div class="highlight"><pre>
|
|
||||||
<span></span><span class="sd">"""Модуль вкладки 'Шаблоны'.</span>
|
|
||||||
|
|
||||||
<span class="sd">Содержит класс TemplatesTab для работы с таблицей шаблонов.</span>
|
|
||||||
<span class="sd">Позволяет проверять состояние и взаимодействовать с элементами вкладки.</span>
|
|
||||||
<span class="sd">"""</span>
|
|
||||||
|
|
||||||
<span class="kn">from</span><span class="w"> </span><span class="nn">playwright.sync_api</span><span class="w"> </span><span class="kn">import</span> <span class="n">Page</span>
|
|
||||||
<span class="kn">from</span><span class="w"> </span><span class="nn">tools.logger</span><span class="w"> </span><span class="kn">import</span> <span class="n">get_logger</span>
|
|
||||||
<span class="kn">from</span><span class="w"> </span><span class="nn">locators.table_locators</span><span class="w"> </span><span class="kn">import</span> <span class="n">TableLocators</span>
|
|
||||||
<span class="kn">from</span><span class="w"> </span><span class="nn">locators.modal_window_locators</span><span class="w"> </span><span class="kn">import</span> <span class="n">ModalWindowLocators</span>
|
|
||||||
<span class="kn">from</span><span class="w"> </span><span class="nn">components_derived.modal_view_template</span><span class="w"> </span><span class="kn">import</span> <span class="n">ViewTemplateModalWindow</span>
|
|
||||||
<span class="kn">from</span><span class="w"> </span><span class="nn">components.modal_window_component</span><span class="w"> </span><span class="kn">import</span> <span class="n">ModalWindowComponent</span>
|
|
||||||
<span class="kn">from</span><span class="w"> </span><span class="nn">components.toolbar_component</span><span class="w"> </span><span class="kn">import</span> <span class="n">ToolbarComponent</span>
|
|
||||||
<span class="kn">from</span><span class="w"> </span><span class="nn">components.table_component</span><span class="w"> </span><span class="kn">import</span> <span class="n">TableComponent</span>
|
|
||||||
<span class="kn">from</span><span class="w"> </span><span class="nn">pages.base_page</span><span class="w"> </span><span class="kn">import</span> <span class="n">BasePage</span>
|
|
||||||
|
|
||||||
<span class="n">logger</span> <span class="o">=</span> <span class="n">get_logger</span><span class="p">(</span><span class="s2">"TEMPLATES_TAB"</span><span class="p">)</span>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="TemplatesTab">
|
|
||||||
<a class="viewcode-back" href="../../pages.html#pages.templates_tab.TemplatesTab">[документация]</a>
|
|
||||||
<span class="k">class</span><span class="w"> </span><span class="nc">TemplatesTab</span><span class="p">(</span><span class="n">BasePage</span><span class="p">):</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Класс для работы с вкладкой 'Шаблоны'.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Предоставляет методы для взаимодействия с таблицей шаблонов и проверки</span>
|
|
||||||
<span class="sd"> её состояния.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Args:</span>
|
|
||||||
<span class="sd"> page: Экземпляр страницы Playwright.</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="TemplatesTab.__init__">
|
|
||||||
<a class="viewcode-back" href="../../pages.html#pages.templates_tab.TemplatesTab.__init__">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">page</span><span class="p">:</span> <span class="n">Page</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Инициализирует компоненты вкладки 'Шаблоны'."""</span>
|
|
||||||
|
|
||||||
<span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="fm">__init__</span><span class="p">(</span><span class="n">page</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">toolbar</span> <span class="o">=</span> <span class="n">ToolbarComponent</span><span class="p">(</span><span class="n">page</span><span class="p">,</span> <span class="s2">"Шаблоны"</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">templates_table</span> <span class="o">=</span> <span class="n">TableComponent</span><span class="p">(</span><span class="n">page</span><span class="p">)</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">modal_windows</span> <span class="o">=</span> <span class="p">{}</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="TemplatesTab.add_modal_window">
|
|
||||||
<a class="viewcode-back" href="../../pages.html#pages.templates_tab.TemplatesTab.add_modal_window">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">add_modal_window</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">title</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Добавляет модальное окно в коллекцию.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Args:</span>
|
|
||||||
<span class="sd"> title: Заголовок окна.</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">modal_windows</span><span class="p">[</span><span class="n">title</span><span class="p">]</span> <span class="o">=</span> <span class="n">ViewTemplateModalWindow</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">page</span><span class="p">,</span> <span class="n">title</span><span class="p">)</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="TemplatesTab.get_modal_window">
|
|
||||||
<a class="viewcode-back" href="../../pages.html#pages.templates_tab.TemplatesTab.get_modal_window">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">get_modal_window</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">title</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="n">ViewTemplateModalWindow</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Возвращает модальное окно по заголовку.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Args:</span>
|
|
||||||
<span class="sd"> title: Заголовок окна.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Returns:</span>
|
|
||||||
<span class="sd"> ViewTemplateModalWindow: Экземпляр модального окна.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Raises:</span>
|
|
||||||
<span class="sd"> AssertionError: Если окно не найдено.</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
|
|
||||||
<span class="n">modal_window</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">modal_windows</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">title</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="k">if</span> <span class="n">modal_window</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="k">assert</span> <span class="kc">False</span><span class="p">,</span> <span class="sa">f</span><span class="s2">"Modal window with title '</span><span class="si">{</span><span class="n">title</span><span class="si">}</span><span class="s2">' not found"</span>
|
|
||||||
<span class="k">return</span> <span class="n">modal_window</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="TemplatesTab.delete_modal_window">
|
|
||||||
<a class="viewcode-back" href="../../pages.html#pages.templates_tab.TemplatesTab.delete_modal_window">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">delete_modal_window</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">title</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Удаляет модальное окно из коллекции.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Args:</span>
|
|
||||||
<span class="sd"> title: Заголовок окна.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Raises:</span>
|
|
||||||
<span class="sd"> AssertionError: Если окно не найдено.</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
|
|
||||||
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">modal_windows</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">title</span><span class="p">)</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="k">assert</span> <span class="kc">False</span><span class="p">,</span> <span class="sa">f</span><span class="s2">"Modal window with title '</span><span class="si">{</span><span class="n">title</span><span class="si">}</span><span class="s2">' not found"</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">modal_windows</span><span class="p">[</span><span class="n">title</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="TemplatesTab.open_template_modal_by_index">
|
|
||||||
<a class="viewcode-back" href="../../pages.html#pages.templates_tab.TemplatesTab.open_template_modal_by_index">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">open_template_modal_by_index</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">row_index</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">0</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Открывает модальное окно шаблона по клику на строку таблицы.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Args:</span>
|
|
||||||
<span class="sd"> row_index: Индекс строки для клика (по умолчанию 0 - первая строка).</span>
|
|
||||||
|
|
||||||
<span class="sd"> Returns:</span>
|
|
||||||
<span class="sd"> str: Имя шаблона.</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
<span class="n">row_locator</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">templates_table</span><span class="o">.</span><span class="n">get_row_locator</span><span class="p">(</span>
|
|
||||||
<span class="n">TableLocators</span><span class="o">.</span><span class="n">TABLE_WORK_AREA</span><span class="p">,</span>
|
|
||||||
<span class="n">row_index</span>
|
|
||||||
<span class="p">)</span>
|
|
||||||
<span class="n">row_locator</span><span class="o">.</span><span class="n">click</span><span class="p">()</span>
|
|
||||||
|
|
||||||
<span class="c1"># Получаем имя шаблона из выбранной строки</span>
|
|
||||||
<span class="n">table_content</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">templates_table</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="n">TableLocators</span><span class="o">.</span><span class="n">TABLE_WORK_AREA</span><span class="p">)</span>
|
|
||||||
<span class="c1"># +1 потому что первая строка - заголовки</span>
|
|
||||||
<span class="n">title</span> <span class="o">=</span> <span class="n">table_content</span><span class="p">[</span><span class="n">row_index</span> <span class="o">+</span> <span class="mi">1</span><span class="p">][</span><span class="mi">0</span><span class="p">]</span>
|
|
||||||
|
|
||||||
<span class="c1"># Добавляем модальное окно в коллекцию после открытия</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">add_modal_window</span><span class="p">(</span><span class="n">title</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="k">return</span> <span class="n">title</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="TemplatesTab.close_modal_window_by_toolbar_button">
|
|
||||||
<a class="viewcode-back" href="../../pages.html#pages.templates_tab.TemplatesTab.close_modal_window_by_toolbar_button">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">close_modal_window_by_toolbar_button</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">title</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Закрывает модальное окно через кнопку в тулбаре.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Args:</span>
|
|
||||||
<span class="sd"> title: Заголовок окна.</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
|
|
||||||
<span class="n">modal_window</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_modal_window</span><span class="p">(</span><span class="n">title</span><span class="p">)</span>
|
|
||||||
<span class="n">modal_window</span><span class="o">.</span><span class="n">close_window_by_toolbar_button</span><span class="p">()</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">delete_modal_window</span><span class="p">(</span><span class="n">title</span><span class="p">)</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="TemplatesTab.get_rows_count">
|
|
||||||
<a class="viewcode-back" href="../../pages.html#pages.templates_tab.TemplatesTab.get_rows_count">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">get_rows_count</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">int</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Возвращает количество строк в таблице (без заголовка).</span>
|
|
||||||
|
|
||||||
<span class="sd"> Returns:</span>
|
|
||||||
<span class="sd"> int: Количество строк с данными.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Raises:</span>
|
|
||||||
<span class="sd"> AssertionError: Если таблица пуста.</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
|
|
||||||
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">templates_table</span><span class="o">.</span><span class="n">get_rows_count</span><span class="p">(</span><span class="n">TableLocators</span><span class="o">.</span><span class="n">TABLE_WORK_AREA</span><span class="p">)</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="TemplatesTab.scroll_templates_table_up">
|
|
||||||
<a class="viewcode-back" href="../../pages.html#pages.templates_tab.TemplatesTab.scroll_templates_table_up">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">scroll_templates_table_up</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Прокручивает таблицу шаблонов вверх."""</span>
|
|
||||||
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">templates_table</span><span class="o">.</span><span class="n">scroll_up</span><span class="p">(</span><span class="n">TableLocators</span><span class="o">.</span><span class="n">TABLE_SCROLL_CONTAINER</span><span class="p">)</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="TemplatesTab.scroll_templates_table_down">
|
|
||||||
<a class="viewcode-back" href="../../pages.html#pages.templates_tab.TemplatesTab.scroll_templates_table_down">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">scroll_templates_table_down</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Прокручивает таблицу шаблонов вниз."""</span>
|
|
||||||
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">templates_table</span><span class="o">.</span><span class="n">scroll_down</span><span class="p">(</span><span class="n">TableLocators</span><span class="o">.</span><span class="n">TABLE_SCROLL_CONTAINER</span><span class="p">)</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="TemplatesTab.scroll_modal_up">
|
|
||||||
<a class="viewcode-back" href="../../pages.html#pages.templates_tab.TemplatesTab.scroll_modal_up">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">scroll_modal_up</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Прокручивает содержимое модального окна вверх."""</span>
|
|
||||||
|
|
||||||
<span class="n">temp_modal</span> <span class="o">=</span> <span class="n">ModalWindowComponent</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">page</span><span class="p">)</span>
|
|
||||||
<span class="n">temp_modal</span><span class="o">.</span><span class="n">scroll_window_up</span><span class="p">()</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="TemplatesTab.scroll_modal_down">
|
|
||||||
<a class="viewcode-back" href="../../pages.html#pages.templates_tab.TemplatesTab.scroll_modal_down">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">scroll_modal_down</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Прокручивает содержимое модального окна вниз."""</span>
|
|
||||||
|
|
||||||
<span class="n">temp_modal</span> <span class="o">=</span> <span class="n">ModalWindowComponent</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">page</span><span class="p">)</span>
|
|
||||||
<span class="n">temp_modal</span><span class="o">.</span><span class="n">scroll_window_down</span><span class="p">()</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="TemplatesTab.extract_specific_template">
|
|
||||||
<a class="viewcode-back" href="../../pages.html#pages.templates_tab.TemplatesTab.extract_specific_template">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">extract_specific_template</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">title</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">response_data</span><span class="p">:</span> <span class="nb">dict</span><span class="p">)</span> <span class="o">-></span> <span class="nb">dict</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Извлекает структуру конкретного шаблона по title из данных API.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Args:</span>
|
|
||||||
<span class="sd"> title: Имя шаблона для извлечения.</span>
|
|
||||||
<span class="sd"> response_data: Данные ответа от API.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Returns:</span>
|
|
||||||
<span class="sd"> dict: Структура конкретного шаблона.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Raises:</span>
|
|
||||||
<span class="sd"> AssertionError: Если шаблон с указанным именем не найден</span>
|
|
||||||
<span class="sd"> или структура ответа некорректна.</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
<span class="c1"># Проверяем, что ответ является списком шаблонов</span>
|
|
||||||
<span class="k">assert</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">response_data</span><span class="p">,</span> <span class="nb">list</span><span class="p">),</span> <span class="s2">"API response is not a list of templates"</span>
|
|
||||||
|
|
||||||
<span class="c1"># Ищем шаблон с указанным именем</span>
|
|
||||||
<span class="k">for</span> <span class="n">template</span> <span class="ow">in</span> <span class="n">response_data</span><span class="p">:</span>
|
|
||||||
<span class="k">if</span> <span class="n">template</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s1">'id'</span><span class="p">)</span> <span class="o">==</span> <span class="n">title</span><span class="p">:</span>
|
|
||||||
<span class="n">logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="s2">"Found template: </span><span class="si">%s</span><span class="s2">"</span><span class="p">,</span> <span class="n">title</span><span class="p">)</span>
|
|
||||||
<span class="k">return</span> <span class="n">template</span>
|
|
||||||
|
|
||||||
<span class="c1"># Если шаблон не найден</span>
|
|
||||||
<span class="n">available_templates</span> <span class="o">=</span> <span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s1">'id'</span><span class="p">,</span> <span class="s1">'Unknown'</span><span class="p">)</span> <span class="k">for</span> <span class="n">t</span> <span class="ow">in</span> <span class="n">response_data</span><span class="p">]</span>
|
|
||||||
|
|
||||||
<span class="c1"># Генерируем понятное сообщение об ошибке</span>
|
|
||||||
<span class="n">error_msg</span> <span class="o">=</span> <span class="p">(</span>
|
|
||||||
<span class="sa">f</span><span class="s2">"Template '</span><span class="si">{</span><span class="n">title</span><span class="si">}</span><span class="s2">' not found. "</span>
|
|
||||||
<span class="sa">f</span><span class="s2">"Available templates: </span><span class="si">{</span><span class="n">available_templates</span><span class="si">}</span><span class="s2">"</span>
|
|
||||||
<span class="p">)</span>
|
|
||||||
<span class="n">logger</span><span class="o">.</span><span class="n">error</span><span class="p">(</span><span class="n">error_msg</span><span class="p">)</span>
|
|
||||||
<span class="k">assert</span> <span class="kc">False</span><span class="p">,</span> <span class="n">error_msg</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="TemplatesTab.get_template_data_from_api">
|
|
||||||
<a class="viewcode-back" href="../../pages.html#pages.templates_tab.TemplatesTab.get_template_data_from_api">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">get_template_data_from_api</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">title</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="nb">dict</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Получает данные шаблона из API.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Args:</span>
|
|
||||||
<span class="sd"> title: Имя шаблона.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Returns:</span>
|
|
||||||
<span class="sd"> dict: Данные шаблона из API.</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
<span class="c1"># Отправляем запрос к backend для получения информации о шаблоне</span>
|
|
||||||
<span class="n">response</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">send_get_api_request</span><span class="p">(</span><span class="s2">"e-cmdb/api/device/template"</span><span class="p">)</span>
|
|
||||||
<span class="n">response_body</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_response_body</span><span class="p">(</span><span class="n">response</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="c1"># Извлекаем конкретный шаблон по имени из ответа API</span>
|
|
||||||
<span class="n">template_data</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">extract_specific_template</span><span class="p">(</span><span class="n">title</span><span class="p">,</span> <span class="n">response_body</span><span class="p">)</span>
|
|
||||||
<span class="k">return</span> <span class="n">template_data</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="TemplatesTab.verify_json_container_content">
|
|
||||||
<a class="viewcode-back" href="../../pages.html#pages.templates_tab.TemplatesTab.verify_json_container_content">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">verify_json_container_content</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">title</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Проверяет соответствие данных контейнера данным из API.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Args:</span>
|
|
||||||
<span class="sd"> title: Имя шаблона для проверки.</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
<span class="c1"># Получаем данные шаблона из API</span>
|
|
||||||
<span class="n">template_data</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_template_data_from_api</span><span class="p">(</span><span class="n">title</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="c1"># Получаем модальное окно и проверяем содержимое JSON контейнера</span>
|
|
||||||
<span class="n">modal_window</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_modal_window</span><span class="p">(</span><span class="n">title</span><span class="p">)</span>
|
|
||||||
<span class="n">modal_window</span><span class="o">.</span><span class="n">verify_json_container_content</span><span class="p">(</span><span class="n">template_data</span><span class="p">)</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="TemplatesTab.check_templates_modal_content">
|
|
||||||
<a class="viewcode-back" href="../../pages.html#pages.templates_tab.TemplatesTab.check_templates_modal_content">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">check_templates_modal_content</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">title</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Проверяет наличие и корректность элементов модального окна шаблона.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Args:</span>
|
|
||||||
<span class="sd"> title: Имя шаблона для проверки заголовка окна.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Raises:</span>
|
|
||||||
<span class="sd"> AssertionError: Если элементы окна некорректны.</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
<span class="n">modal_window</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_modal_window</span><span class="p">(</span><span class="n">title</span><span class="p">)</span>
|
|
||||||
<span class="n">modal_window</span><span class="o">.</span><span class="n">check_content</span><span class="p">()</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="TemplatesTab.check_templates_table_content">
|
|
||||||
<a class="viewcode-back" href="../../pages.html#pages.templates_tab.TemplatesTab.check_templates_table_content">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">check_templates_table_content</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Проверяет содержимое таблицы шаблонов.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Проверяет заголовки и наличие данных в таблице.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Raises:</span>
|
|
||||||
<span class="sd"> AssertionError: Если таблица пуста или заголовки неверны.</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
|
|
||||||
<span class="n">expected_headers</span> <span class="o">=</span> <span class="p">[</span>
|
|
||||||
<span class="s1">'Имя'</span><span class="p">,</span>
|
|
||||||
<span class="s1">'Описание'</span><span class="p">,</span>
|
|
||||||
<span class="s1">'Тип устройства'</span><span class="p">,</span>
|
|
||||||
<span class="s1">'Производитель'</span>
|
|
||||||
<span class="p">]</span>
|
|
||||||
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">templates_table</span><span class="o">.</span><span class="n">check_content</span><span class="p">(</span><span class="n">TableLocators</span><span class="o">.</span><span class="n">TABLE_WORK_AREA</span><span class="p">,</span> <span class="n">expected_headers</span><span class="p">)</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="TemplatesTab.check_templates_table_vertical_scrolling">
|
|
||||||
<a class="viewcode-back" href="../../pages.html#pages.templates_tab.TemplatesTab.check_templates_table_vertical_scrolling">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">check_templates_table_vertical_scrolling</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">bool</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Проверяет возможность вертикальной прокрутки таблицы.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Returns:</span>
|
|
||||||
<span class="sd"> bool: True если прокрутка возможна, иначе False.</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
|
|
||||||
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">templates_table</span><span class="o">.</span><span class="n">is_scrollable_vertically</span><span class="p">(</span>
|
|
||||||
<span class="n">TableLocators</span><span class="o">.</span><span class="n">TABLE_SCROLL_CONTAINER</span>
|
|
||||||
<span class="p">)</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="TemplatesTab.check_templates_table_first_row_visibility">
|
|
||||||
<a class="viewcode-back" href="../../pages.html#pages.templates_tab.TemplatesTab.check_templates_table_first_row_visibility">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">check_templates_table_first_row_visibility</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Проверяет видимость первой строки таблицы.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Raises:</span>
|
|
||||||
<span class="sd"> AssertionError: Если строка не видна.</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">templates_table</span><span class="o">.</span><span class="n">check_first_row_visibility</span><span class="p">(</span><span class="n">TableLocators</span><span class="o">.</span><span class="n">TABLE_WORK_AREA</span><span class="p">)</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="TemplatesTab.check_templates_table_last_row_visibility">
|
|
||||||
<a class="viewcode-back" href="../../pages.html#pages.templates_tab.TemplatesTab.check_templates_table_last_row_visibility">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">check_templates_table_last_row_visibility</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Проверяет видимость последней строки таблицы.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Raises:</span>
|
|
||||||
<span class="sd"> AssertionError: Если строка не видна.</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">templates_table</span><span class="o">.</span><span class="n">check_last_row_visibility</span><span class="p">(</span><span class="n">TableLocators</span><span class="o">.</span><span class="n">TABLE_WORK_AREA</span><span class="p">)</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="TemplatesTab.check_templates_table_row_highlighting">
|
|
||||||
<a class="viewcode-back" href="../../pages.html#pages.templates_tab.TemplatesTab.check_templates_table_row_highlighting">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">check_templates_table_row_highlighting</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">row_index</span><span class="p">:</span> <span class="nb">int</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Проверяет выделение указанной строки таблицы.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Args:</span>
|
|
||||||
<span class="sd"> row_index: Индекс проверяемой строки.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Raises:</span>
|
|
||||||
<span class="sd"> AssertionError: Если строка не выделена.</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">templates_table</span><span class="o">.</span><span class="n">check_row_highlighting</span><span class="p">(</span>
|
|
||||||
<span class="n">TableLocators</span><span class="o">.</span><span class="n">TABLE_WORK_AREA</span><span class="p">,</span>
|
|
||||||
<span class="n">row_index</span>
|
|
||||||
<span class="p">)</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="TemplatesTab.should_be_toolbar">
|
|
||||||
<a class="viewcode-back" href="../../pages.html#pages.templates_tab.TemplatesTab.should_be_toolbar">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">should_be_toolbar</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Проверяет наличие тулбара на вкладке.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Raises:</span>
|
|
||||||
<span class="sd"> AssertionError: Если тулбар отсутствует.</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">toolbar</span><span class="o">.</span><span class="n">check_toolbar_presence</span><span class="p">(</span><span class="s2">"Toolbar is missing"</span><span class="p">)</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="TemplatesTab.should_be_templates_table">
|
|
||||||
<a class="viewcode-back" href="../../pages.html#pages.templates_tab.TemplatesTab.should_be_templates_table">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">should_be_templates_table</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Проверяет наличие таблицы шаблонов.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Raises:</span>
|
|
||||||
<span class="sd"> AssertionError: Если таблица отсутствует.</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">templates_table</span><span class="o">.</span><span class="n">check_visibility</span><span class="p">(</span>
|
|
||||||
<span class="n">TableLocators</span><span class="o">.</span><span class="n">TABLE_WORK_AREA</span><span class="p">,</span>
|
|
||||||
<span class="s2">"Templates table is missing"</span>
|
|
||||||
<span class="p">)</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="TemplatesTab.should_be_modal_window">
|
|
||||||
<a class="viewcode-back" href="../../pages.html#pages.templates_tab.TemplatesTab.should_be_modal_window">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">should_be_modal_window</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Проверяет наличие модального окна.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Raises:</span>
|
|
||||||
<span class="sd"> AssertionError: Если модальное окно отсутствует.</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">templates_table</span><span class="o">.</span><span class="n">check_visibility</span><span class="p">(</span>
|
|
||||||
<span class="n">ModalWindowLocators</span><span class="o">.</span><span class="n">MODAL_WINDOW</span><span class="p">,</span>
|
|
||||||
<span class="s2">"Modal window is not visible"</span>
|
|
||||||
<span class="p">)</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="TemplatesTab.should_not_be_modal_window">
|
|
||||||
<a class="viewcode-back" href="../../pages.html#pages.templates_tab.TemplatesTab.should_not_be_modal_window">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">should_not_be_modal_window</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Проверяет, что модальное окно отсутствует.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Raises:</span>
|
|
||||||
<span class="sd"> AssertionError: Если модальное окно все еще видно.</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
<span class="n">is_visible</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">page</span><span class="o">.</span><span class="n">locator</span><span class="p">(</span>
|
|
||||||
<span class="n">ModalWindowLocators</span><span class="o">.</span><span class="n">MODAL_WINDOW</span>
|
|
||||||
<span class="p">)</span><span class="o">.</span><span class="n">is_visible</span><span class="p">(</span><span class="n">timeout</span><span class="o">=</span><span class="mi">1000</span><span class="p">)</span>
|
|
||||||
<span class="k">if</span> <span class="n">is_visible</span><span class="p">:</span>
|
|
||||||
<span class="k">assert</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"Modal window should not be visible"</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="TemplatesTab.check_modal_vertical_scrolling">
|
|
||||||
<a class="viewcode-back" href="../../pages.html#pages.templates_tab.TemplatesTab.check_modal_vertical_scrolling">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">check_modal_vertical_scrolling</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">bool</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Проверяет возможность вертикального скроллинга в модальном окне.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Returns:</span>
|
|
||||||
<span class="sd"> bool: True если скроллинг возможен, иначе False.</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
<span class="n">temp_modal</span> <span class="o">=</span> <span class="n">ModalWindowComponent</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">page</span><span class="p">)</span>
|
|
||||||
<span class="k">return</span> <span class="n">temp_modal</span><span class="o">.</span><span class="n">check_window_vertical_scrolling</span><span class="p">()</span></div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</pre></div>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<footer>
|
|
||||||
|
|
||||||
<hr/>
|
|
||||||
|
|
||||||
<div role="contentinfo">
|
|
||||||
<p>© Авторские права 2025, NPO KIS. </p>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
Собрано при помощи <a href="https://www.sphinx-doc.org/">Sphinx</a> с использованием
|
|
||||||
<a href="https://github.com/readthedocs/sphinx_rtd_theme">темы,</a>
|
|
||||||
предоставленной <a href="https://readthedocs.org">Read the Docs</a>.
|
|
||||||
|
|
||||||
|
|
||||||
</footer>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</section>
|
|
||||||
</div>
|
|
||||||
<script>
|
|
||||||
jQuery(function () {
|
|
||||||
SphinxRtdTheme.Navigation.enable(true);
|
|
||||||
});
|
|
||||||
</script>
|
|
||||||
|
|
||||||
</body>
|
|
||||||
</html>
|
|
||||||
|
|
@ -1,772 +0,0 @@
|
||||||
|
|
||||||
|
|
||||||
<!DOCTYPE html>
|
|
||||||
<html class="writer-html5" lang="ru" data-content_root="../../">
|
|
||||||
<head>
|
|
||||||
<meta charset="utf-8" />
|
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
||||||
<title>pages.users_tab — документация e-nms-qa-automation 0.1.0</title>
|
|
||||||
<link rel="stylesheet" type="text/css" href="../../_static/pygments.css?v=b86133f3" />
|
|
||||||
<link rel="stylesheet" type="text/css" href="../../_static/css/theme.css?v=e59714d7" />
|
|
||||||
|
|
||||||
|
|
||||||
<script src="../../_static/jquery.js?v=5d32c60e"></script>
|
|
||||||
<script src="../../_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script>
|
|
||||||
<script src="../../_static/documentation_options.js?v=6ff560e8"></script>
|
|
||||||
<script src="../../_static/doctools.js?v=9bcbadda"></script>
|
|
||||||
<script src="../../_static/sphinx_highlight.js?v=dc90522c"></script>
|
|
||||||
<script src="../../_static/translations.js?v=cd1d70c9"></script>
|
|
||||||
<script src="../../_static/js/theme.js"></script>
|
|
||||||
<link rel="index" title="Алфавитный указатель" href="../../genindex.html" />
|
|
||||||
<link rel="search" title="Поиск" href="../../search.html" />
|
|
||||||
</head>
|
|
||||||
|
|
||||||
<body class="wy-body-for-nav">
|
|
||||||
<div class="wy-grid-for-nav">
|
|
||||||
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
|
|
||||||
<div class="wy-side-scroll">
|
|
||||||
<div class="wy-side-nav-search" >
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<a href="../../index.html" class="icon icon-home">
|
|
||||||
e-nms-qa-automation
|
|
||||||
</a>
|
|
||||||
<div role="search">
|
|
||||||
<form id="rtd-search-form" class="wy-form" action="../../search.html" method="get">
|
|
||||||
<input type="text" name="q" placeholder="Поиск в документации" aria-label="Поиск в документации" />
|
|
||||||
<input type="hidden" name="check_keywords" value="yes" />
|
|
||||||
<input type="hidden" name="area" value="default" />
|
|
||||||
</form>
|
|
||||||
</div>
|
|
||||||
</div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Меню навигации">
|
|
||||||
<!-- Local TOC -->
|
|
||||||
<div class="local-toc"></div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</nav>
|
|
||||||
|
|
||||||
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Меню навигации для мобильных устройств" >
|
|
||||||
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
|
|
||||||
<a href="../../index.html">e-nms-qa-automation</a>
|
|
||||||
</nav>
|
|
||||||
|
|
||||||
<div class="wy-nav-content">
|
|
||||||
<div class="rst-content">
|
|
||||||
<div role="navigation" aria-label="Навигация по страницам">
|
|
||||||
<ul class="wy-breadcrumbs">
|
|
||||||
<li><a href="../../index.html" class="icon icon-home" aria-label="Home"></a></li>
|
|
||||||
<li class="breadcrumb-item"><a href="../index.html">Код модуля</a></li>
|
|
||||||
<li class="breadcrumb-item active">pages.users_tab</li>
|
|
||||||
<li class="wy-breadcrumbs-aside">
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
<hr/>
|
|
||||||
</div>
|
|
||||||
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
|
|
||||||
<div itemprop="articleBody">
|
|
||||||
|
|
||||||
<h1>Исходный код pages.users_tab</h1><div class="highlight"><pre>
|
|
||||||
<span></span><span class="sd">"""Модуль вкладки 'Пользователи'.</span>
|
|
||||||
|
|
||||||
<span class="sd">Содержит класс UsersTab для работы с таблицей пользователей.</span>
|
|
||||||
<span class="sd">Позволяет управлять пользователями через модальные окна и проверять их состояние.</span>
|
|
||||||
<span class="sd">"""</span>
|
|
||||||
|
|
||||||
<span class="kn">import</span><span class="w"> </span><span class="nn">re</span>
|
|
||||||
<span class="kn">from</span><span class="w"> </span><span class="nn">playwright.sync_api</span><span class="w"> </span><span class="kn">import</span> <span class="n">Page</span>
|
|
||||||
<span class="kn">from</span><span class="w"> </span><span class="nn">locators.table_locators</span><span class="w"> </span><span class="kn">import</span> <span class="n">TableLocators</span>
|
|
||||||
<span class="kn">from</span><span class="w"> </span><span class="nn">components_derived.modal_edit_user</span><span class="w"> </span><span class="kn">import</span> <span class="n">EditUserModalWindow</span>
|
|
||||||
<span class="kn">from</span><span class="w"> </span><span class="nn">components_derived.modal_add_local_user</span><span class="w"> </span><span class="kn">import</span> <span class="n">AddLocalUserModalWindow</span>
|
|
||||||
<span class="kn">from</span><span class="w"> </span><span class="nn">components_derived.modal_add_AD_user</span><span class="w"> </span><span class="kn">import</span> <span class="n">AddADUserModalWindow</span>
|
|
||||||
<span class="kn">from</span><span class="w"> </span><span class="nn">data.roles_dict</span><span class="w"> </span><span class="kn">import</span> <span class="n">roles_dict</span>
|
|
||||||
<span class="kn">from</span><span class="w"> </span><span class="nn">components.toolbar_component</span><span class="w"> </span><span class="kn">import</span> <span class="n">ToolbarComponent</span>
|
|
||||||
<span class="kn">from</span><span class="w"> </span><span class="nn">components.table_component</span><span class="w"> </span><span class="kn">import</span> <span class="n">TableComponent</span>
|
|
||||||
<span class="kn">from</span><span class="w"> </span><span class="nn">components.modal_window_component</span><span class="w"> </span><span class="kn">import</span> <span class="n">ModalWindowComponent</span>
|
|
||||||
<span class="kn">from</span><span class="w"> </span><span class="nn">components.alert_component</span><span class="w"> </span><span class="kn">import</span> <span class="n">AlertComponent</span>
|
|
||||||
<span class="kn">from</span><span class="w"> </span><span class="nn">pages.base_page</span><span class="w"> </span><span class="kn">import</span> <span class="n">BasePage</span>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="UsersTab">
|
|
||||||
<a class="viewcode-back" href="../../pages.html#pages.users_tab.UsersTab">[документация]</a>
|
|
||||||
<span class="k">class</span><span class="w"> </span><span class="nc">UsersTab</span><span class="p">(</span><span class="n">BasePage</span><span class="p">):</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Класс для работы с вкладкой 'Пользователи'.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Предоставляет методы для взаимодействия с таблицей пользователей,</span>
|
|
||||||
<span class="sd"> модальными окнами и проверки состояния элементов.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Args:</span>
|
|
||||||
<span class="sd"> page: Экземпляр страницы Playwright.</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="UsersTab.__init__">
|
|
||||||
<a class="viewcode-back" href="../../pages.html#pages.users_tab.UsersTab.__init__">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">page</span><span class="p">:</span> <span class="n">Page</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Инициализирует компоненты вкладки 'Пользователи'."""</span>
|
|
||||||
|
|
||||||
<span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="fm">__init__</span><span class="p">(</span><span class="n">page</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="n">locator_button_1</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">page</span><span class="o">.</span><span class="n">get_by_role</span><span class="p">(</span><span class="s2">"navigation"</span><span class="p">)</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span>
|
|
||||||
<span class="n">has_text</span><span class="o">=</span><span class="n">re</span><span class="o">.</span><span class="n">compile</span><span class="p">(</span><span class="s2">"Пользователи"</span><span class="p">)</span>
|
|
||||||
<span class="p">)</span><span class="o">.</span><span class="n">get_by_role</span><span class="p">(</span><span class="s2">"button"</span><span class="p">)</span><span class="o">.</span><span class="n">nth</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span>
|
|
||||||
<span class="n">locator_button_2</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">page</span><span class="o">.</span><span class="n">get_by_role</span><span class="p">(</span><span class="s2">"navigation"</span><span class="p">)</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span>
|
|
||||||
<span class="n">has_text</span><span class="o">=</span><span class="n">re</span><span class="o">.</span><span class="n">compile</span><span class="p">(</span><span class="s2">"Пользователи"</span><span class="p">)</span>
|
|
||||||
<span class="p">)</span><span class="o">.</span><span class="n">get_by_role</span><span class="p">(</span><span class="s2">"button"</span><span class="p">)</span><span class="o">.</span><span class="n">nth</span><span class="p">(</span><span class="mi">1</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">toolbar</span> <span class="o">=</span> <span class="n">ToolbarComponent</span><span class="p">(</span><span class="n">page</span><span class="p">,</span> <span class="s2">"Пользователи"</span><span class="p">)</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">toolbar</span><span class="o">.</span><span class="n">add_tooltip_button</span><span class="p">(</span><span class="n">locator_button_1</span><span class="p">,</span> <span class="s2">"edit"</span><span class="p">)</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">toolbar</span><span class="o">.</span><span class="n">add_tooltip_button</span><span class="p">(</span><span class="n">locator_button_1</span><span class="p">,</span> <span class="s2">"add_user"</span><span class="p">)</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">toolbar</span><span class="o">.</span><span class="n">add_tooltip_button</span><span class="p">(</span><span class="n">locator_button_2</span><span class="p">,</span> <span class="s2">"close"</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">users_table</span> <span class="o">=</span> <span class="n">TableComponent</span><span class="p">(</span><span class="n">page</span><span class="p">)</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">modal_windows</span> <span class="o">=</span> <span class="p">{}</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">alert</span> <span class="o">=</span> <span class="n">AlertComponent</span><span class="p">(</span><span class="n">page</span><span class="p">)</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<span class="c1"># Действия:</span>
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="UsersTab.add_modal_window">
|
|
||||||
<a class="viewcode-back" href="../../pages.html#pages.users_tab.UsersTab.add_modal_window">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">add_modal_window</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">window_type</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">title</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Добавляет модальное окно в коллекцию.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Args:</span>
|
|
||||||
<span class="sd"> window_type: Тип окна ('add_user' или 'edit_user').</span>
|
|
||||||
<span class="sd"> title: Заголовок окна.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Raises:</span>
|
|
||||||
<span class="sd"> AssertionError: Если тип окна не поддерживается.</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
|
|
||||||
<span class="k">if</span> <span class="n">window_type</span> <span class="o">==</span> <span class="s2">"add_local_user"</span><span class="p">:</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">modal_windows</span><span class="p">[</span><span class="s2">"add_local_user"</span><span class="p">]</span> <span class="o">=</span> <span class="n">AddLocalUserModalWindow</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">page</span><span class="p">)</span>
|
|
||||||
<span class="k">elif</span> <span class="n">window_type</span> <span class="o">==</span> <span class="s2">"add_AD_user"</span><span class="p">:</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">modal_windows</span><span class="p">[</span><span class="s2">"add_AD_user"</span><span class="p">]</span> <span class="o">=</span> <span class="n">AddADUserModalWindow</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">page</span><span class="p">)</span>
|
|
||||||
<span class="k">elif</span> <span class="n">window_type</span> <span class="o">==</span> <span class="s2">"edit_user"</span><span class="p">:</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">modal_windows</span><span class="p">[</span><span class="n">title</span><span class="p">]</span> <span class="o">=</span> <span class="n">EditUserModalWindow</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">page</span><span class="p">,</span> <span class="n">title</span><span class="p">)</span>
|
|
||||||
<span class="k">else</span><span class="p">:</span>
|
|
||||||
<span class="k">assert</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"Unsupported modal window type"</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="UsersTab.add_new_user">
|
|
||||||
<a class="viewcode-back" href="../../pages.html#pages.users_tab.UsersTab.add_new_user">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">add_new_user</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">user_data</span><span class="p">:</span> <span class="nb">dict</span><span class="p">)</span> <span class="o">-></span> <span class="nb">bool</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Добавляет нового пользователя или обрабатывает ошибку при дубликате.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Args:</span>
|
|
||||||
<span class="sd"> user_data: Данные пользователя (name, role, password).</span>
|
|
||||||
|
|
||||||
<span class="sd"> Returns:</span>
|
|
||||||
<span class="sd"> bool: True если пользователь успешно добавлен, False если пользователь уже существует.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Raises:</span>
|
|
||||||
<span class="sd"> AssertionError: Если открылось alert окно отличное от success или error,</span>
|
|
||||||
<span class="sd"> или если текст alert не соответствует ожидаемому.</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
|
|
||||||
<span class="n">add_user_window</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_modal_window</span><span class="p">(</span><span class="s2">"add_local_user"</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="n">auth_type</span> <span class="o">=</span> <span class="n">user_data</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"auth_type"</span><span class="p">)</span>
|
|
||||||
<span class="k">if</span> <span class="n">auth_type</span> <span class="o">==</span> <span class="s2">"active_directory"</span><span class="p">:</span>
|
|
||||||
<span class="n">add_user_window</span><span class="o">.</span><span class="n">check_active_directory_checkbox</span><span class="p">()</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">add_modal_window</span><span class="p">(</span><span class="s2">"add_AD_user"</span><span class="p">,</span> <span class="s2">""</span><span class="p">)</span>
|
|
||||||
<span class="n">add_user_window</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_modal_window</span><span class="p">(</span><span class="s2">"add_AD_user"</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="n">add_user_window</span><span class="o">.</span><span class="n">new_user</span><span class="p">(</span><span class="n">user_data</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="n">is_added</span> <span class="o">=</span> <span class="kc">False</span>
|
|
||||||
<span class="n">alert_type</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">alert</span><span class="o">.</span><span class="n">get_alert_type</span><span class="p">()</span>
|
|
||||||
<span class="k">if</span> <span class="n">alert_type</span> <span class="o">==</span> <span class="s2">"success"</span><span class="p">:</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">alert</span><span class="o">.</span><span class="n">check_alert_presence</span><span class="p">(</span><span class="s1">' Новый пользователь </span><span class="se">\n</span><span class="s1"> успешно добавлен! '</span><span class="p">)</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">alert</span><span class="o">.</span><span class="n">check_alert_absence</span><span class="p">(</span><span class="s1">' Новый пользователь </span><span class="se">\n</span><span class="s1"> успешно добавлен! '</span><span class="p">)</span>
|
|
||||||
<span class="n">is_added</span> <span class="o">=</span> <span class="kc">True</span>
|
|
||||||
<span class="k">elif</span> <span class="n">alert_type</span> <span class="o">==</span> <span class="s2">"error"</span><span class="p">:</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">alert</span><span class="o">.</span><span class="n">check_alert_presence</span><span class="p">(</span><span class="sa">f</span><span class="s1">' Имя </span><span class="si">{</span><span class="n">user_data</span><span class="p">[</span><span class="s2">"name"</span><span class="p">]</span><span class="si">}</span><span class="s1"> уже </span><span class="se">\n</span><span class="s1"> используется '</span><span class="p">)</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">alert</span><span class="o">.</span><span class="n">check_alert_absence</span><span class="p">(</span><span class="sa">f</span><span class="s1">' Имя </span><span class="si">{</span><span class="n">user_data</span><span class="p">[</span><span class="s2">"name"</span><span class="p">]</span><span class="si">}</span><span class="s1"> уже </span><span class="se">\n</span><span class="s1"> используется '</span><span class="p">)</span>
|
|
||||||
<span class="k">else</span><span class="p">:</span>
|
|
||||||
<span class="k">assert</span> <span class="kc">False</span><span class="p">,</span> <span class="sa">f</span><span class="s2">"Got unexpected alert type </span><span class="si">{</span><span class="n">alert_type</span><span class="si">}</span><span class="s2">"</span>
|
|
||||||
|
|
||||||
<span class="k">return</span> <span class="n">is_added</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="UsersTab.close_add_AD_user_window">
|
|
||||||
<a class="viewcode-back" href="../../pages.html#pages.users_tab.UsersTab.close_add_AD_user_window">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">close_add_AD_user_window</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Закрывает окно добавления пользователя."""</span>
|
|
||||||
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">close_modal_window</span><span class="p">(</span><span class="s2">"add_AD_user"</span><span class="p">)</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="UsersTab.close_add_AD_user_window_by_toolbar_button">
|
|
||||||
<a class="viewcode-back" href="../../pages.html#pages.users_tab.UsersTab.close_add_AD_user_window_by_toolbar_button">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">close_add_AD_user_window_by_toolbar_button</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Закрывает окно добавления пользователя через тулбар."""</span>
|
|
||||||
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">close_modal_window_by_toolbar_button</span><span class="p">(</span><span class="s2">"add_AD_user"</span><span class="p">)</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="UsersTab.close_add_user_window">
|
|
||||||
<a class="viewcode-back" href="../../pages.html#pages.users_tab.UsersTab.close_add_user_window">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">close_add_user_window</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Закрывает окно добавления пользователя."""</span>
|
|
||||||
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">close_modal_window</span><span class="p">(</span><span class="s2">"add_local_user"</span><span class="p">)</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="UsersTab.close_add_user_window_by_toolbar_button">
|
|
||||||
<a class="viewcode-back" href="../../pages.html#pages.users_tab.UsersTab.close_add_user_window_by_toolbar_button">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">close_add_user_window_by_toolbar_button</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Закрывает окно добавления пользователя через тулбар."""</span>
|
|
||||||
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">close_modal_window_by_toolbar_button</span><span class="p">(</span><span class="s2">"add_local_user"</span><span class="p">)</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="UsersTab.close_edit_user_window">
|
|
||||||
<a class="viewcode-back" href="../../pages.html#pages.users_tab.UsersTab.close_edit_user_window">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">close_edit_user_window</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">title</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Закрывает окно редактирования пользователя.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Args:</span>
|
|
||||||
<span class="sd"> title: Имя пользователя (заголовок окна).</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">close_modal_window</span><span class="p">(</span><span class="n">title</span><span class="p">)</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="UsersTab.close_edit_user_window_by_toolbar_button">
|
|
||||||
<a class="viewcode-back" href="../../pages.html#pages.users_tab.UsersTab.close_edit_user_window_by_toolbar_button">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">close_edit_user_window_by_toolbar_button</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">title</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Закрывает окно редактирования через кнопку в тулбаре.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Args:</span>
|
|
||||||
<span class="sd"> title: Имя пользователя (заголовок окна).</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">close_modal_window_by_toolbar_button</span><span class="p">(</span><span class="n">title</span><span class="p">)</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="UsersTab.close_modal_window">
|
|
||||||
<a class="viewcode-back" href="../../pages.html#pages.users_tab.UsersTab.close_modal_window">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">close_modal_window</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">title</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Закрывает модальное окно через кнопку закрытия.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Args:</span>
|
|
||||||
<span class="sd"> title: Заголовок окна.</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
|
|
||||||
<span class="n">modal_window</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_modal_window</span><span class="p">(</span><span class="n">title</span><span class="p">)</span>
|
|
||||||
<span class="n">modal_window</span><span class="o">.</span><span class="n">close_window</span><span class="p">()</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">delete_modal_window</span><span class="p">(</span><span class="n">title</span><span class="p">)</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="UsersTab.close_modal_window_by_toolbar_button">
|
|
||||||
<a class="viewcode-back" href="../../pages.html#pages.users_tab.UsersTab.close_modal_window_by_toolbar_button">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">close_modal_window_by_toolbar_button</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">title</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Закрывает модальное окно через кнопку в тулбаре.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Args:</span>
|
|
||||||
<span class="sd"> title: Заголовок окна.</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
|
|
||||||
<span class="n">modal_window</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_modal_window</span><span class="p">(</span><span class="n">title</span><span class="p">)</span>
|
|
||||||
<span class="n">modal_window</span><span class="o">.</span><span class="n">close_window_by_toolbar_button</span><span class="p">()</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">delete_modal_window</span><span class="p">(</span><span class="n">title</span><span class="p">)</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="UsersTab.delete_modal_window">
|
|
||||||
<a class="viewcode-back" href="../../pages.html#pages.users_tab.UsersTab.delete_modal_window">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">delete_modal_window</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">title</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Удаляет модальное окно из коллекции.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Args:</span>
|
|
||||||
<span class="sd"> title: Заголовок окна.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Raises:</span>
|
|
||||||
<span class="sd"> AssertionError: Если окно не найдено.</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
|
|
||||||
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">modal_windows</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">title</span><span class="p">)</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="k">assert</span> <span class="kc">False</span><span class="p">,</span> <span class="sa">f</span><span class="s2">"Modal window with title '</span><span class="si">{</span><span class="n">title</span><span class="si">}</span><span class="s2">' not found"</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">modal_windows</span><span class="p">[</span><span class="n">title</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="UsersTab.delete_user">
|
|
||||||
<a class="viewcode-back" href="../../pages.html#pages.users_tab.UsersTab.delete_user">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">delete_user</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">user_name</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Удаляет пользователя.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Args:</span>
|
|
||||||
<span class="sd"> user_name: Имя пользователя.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Raises:</span>
|
|
||||||
<span class="sd"> AssertionError: Если нет сообщения об успешном удалении.</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">get_modal_window</span><span class="p">(</span><span class="n">user_name</span><span class="p">)</span><span class="o">.</span><span class="n">delete_user</span><span class="p">()</span>
|
|
||||||
|
|
||||||
<span class="n">alert_type</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">alert</span><span class="o">.</span><span class="n">get_alert_type</span><span class="p">()</span>
|
|
||||||
<span class="k">assert</span> <span class="n">alert_type</span> <span class="o">==</span> <span class="s2">"success"</span><span class="p">,</span> <span class="sa">f</span><span class="s2">"Expected success alert, but got </span><span class="si">{</span><span class="n">alert_type</span><span class="si">}</span><span class="s2"> alert"</span>
|
|
||||||
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">alert</span><span class="o">.</span><span class="n">check_alert_presence</span><span class="p">(</span><span class="s1">'</span><span class="se">\n</span><span class="s1">Пользователь удалён</span><span class="se">\n</span><span class="s1">'</span><span class="p">)</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">alert</span><span class="o">.</span><span class="n">check_alert_absence</span><span class="p">(</span><span class="s1">'</span><span class="se">\n</span><span class="s1">Пользователь удалён</span><span class="se">\n</span><span class="s1">'</span><span class="p">)</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="UsersTab.edit_user">
|
|
||||||
<a class="viewcode-back" href="../../pages.html#pages.users_tab.UsersTab.edit_user">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">edit_user</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">user_name</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">user_data</span><span class="p">:</span> <span class="nb">dict</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Редактирует данные пользователя.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Args:</span>
|
|
||||||
<span class="sd"> user_name: Имя пользователя.</span>
|
|
||||||
<span class="sd"> user_data: Новые данные пользователя.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Raises:</span>
|
|
||||||
<span class="sd"> AssertionError: Если нет сообщения об успешном обновлении.</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">get_modal_window</span><span class="p">(</span><span class="n">user_name</span><span class="p">)</span><span class="o">.</span><span class="n">edit_user</span><span class="p">(</span><span class="n">user_data</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="n">alert_type</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">alert</span><span class="o">.</span><span class="n">get_alert_type</span><span class="p">()</span>
|
|
||||||
<span class="k">assert</span> <span class="n">alert_type</span> <span class="o">==</span> <span class="s2">"success"</span><span class="p">,</span> <span class="sa">f</span><span class="s2">"Expected success alert, but got </span><span class="si">{</span><span class="n">alert_type</span><span class="si">}</span><span class="s2"> alert"</span>
|
|
||||||
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">alert</span><span class="o">.</span><span class="n">check_alert_presence</span><span class="p">(</span><span class="s1">'</span><span class="se">\n</span><span class="s1">Обновление успешно</span><span class="se">\n</span><span class="s1">'</span><span class="p">)</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">alert</span><span class="o">.</span><span class="n">check_alert_absence</span><span class="p">(</span><span class="s1">'</span><span class="se">\n</span><span class="s1">Обновление успешно</span><span class="se">\n</span><span class="s1">'</span><span class="p">)</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="UsersTab.find_user_in_table">
|
|
||||||
<a class="viewcode-back" href="../../pages.html#pages.users_tab.UsersTab.find_user_in_table">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">find_user_in_table</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">role</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="nb">int</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Ищет пользователя в таблице.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Args:</span>
|
|
||||||
<span class="sd"> name: Имя пользователя.</span>
|
|
||||||
<span class="sd"> role: Роль пользователя.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Returns:</span>
|
|
||||||
<span class="sd"> int: Индекс строки или -1 если не найден.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Raises:</span>
|
|
||||||
<span class="sd"> AssertionError: Если таблица пуста.</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">page</span><span class="o">.</span><span class="n">wait_for_timeout</span><span class="p">(</span><span class="mi">1000</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="n">table_content</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">users_table</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="n">TableLocators</span><span class="o">.</span><span class="n">TABLE_WORK_AREA</span><span class="p">)</span>
|
|
||||||
<span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">table_content</span><span class="p">)</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span>
|
|
||||||
<span class="k">assert</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"The contents of the table are missing"</span>
|
|
||||||
|
|
||||||
<span class="c1"># Удаляем заголовок</span>
|
|
||||||
<span class="k">del</span> <span class="n">table_content</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span>
|
|
||||||
|
|
||||||
<span class="k">for</span> <span class="n">row_index</span><span class="p">,</span> <span class="n">user_info</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="n">table_content</span><span class="p">):</span>
|
|
||||||
<span class="k">if</span> <span class="n">name</span> <span class="ow">in</span> <span class="n">user_info</span> <span class="ow">and</span> <span class="n">role</span> <span class="ow">in</span> <span class="n">user_info</span><span class="p">:</span>
|
|
||||||
<span class="k">return</span> <span class="n">row_index</span>
|
|
||||||
<span class="k">return</span> <span class="o">-</span><span class="mi">1</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="UsersTab.get_modal_window">
|
|
||||||
<a class="viewcode-back" href="../../pages.html#pages.users_tab.UsersTab.get_modal_window">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">get_modal_window</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">title</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="n">ModalWindowComponent</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Возвращает модальное окно по заголовку.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Args:</span>
|
|
||||||
<span class="sd"> title: Заголовок окна.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Returns:</span>
|
|
||||||
<span class="sd"> ModalWindowComponent: Экземпляр модального окна.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Raises:</span>
|
|
||||||
<span class="sd"> AssertionError: Если окно не найдено.</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
|
|
||||||
<span class="n">modal_window</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">modal_windows</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">title</span><span class="p">)</span>
|
|
||||||
<span class="k">if</span> <span class="n">modal_window</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="k">assert</span> <span class="kc">False</span><span class="p">,</span> <span class="sa">f</span><span class="s2">"Modal window with title '</span><span class="si">{</span><span class="n">title</span><span class="si">}</span><span class="s2">' not found"</span>
|
|
||||||
<span class="k">return</span> <span class="n">modal_window</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="UsersTab.open_add_user_window">
|
|
||||||
<a class="viewcode-back" href="../../pages.html#pages.users_tab.UsersTab.open_add_user_window">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">open_add_user_window</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Открывает окно добавления пользователя.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Raises:</span>
|
|
||||||
<span class="sd"> AssertionError: Если кнопки недоступны или окно не открылось.</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
|
|
||||||
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">toolbar</span><span class="o">.</span><span class="n">is_button_not_present</span><span class="p">(</span><span class="s2">"close"</span><span class="p">):</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">toolbar</span><span class="o">.</span><span class="n">check_button_visibility</span><span class="p">(</span><span class="s2">"edit"</span><span class="p">)</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">toolbar</span><span class="o">.</span><span class="n">click_button</span><span class="p">(</span><span class="s2">"edit"</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">toolbar</span><span class="o">.</span><span class="n">check_button_visibility</span><span class="p">(</span><span class="s2">"add_user"</span><span class="p">)</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">toolbar</span><span class="o">.</span><span class="n">click_button</span><span class="p">(</span><span class="s2">"add_user"</span><span class="p">)</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">page</span><span class="o">.</span><span class="n">wait_for_timeout</span><span class="p">(</span><span class="mi">700</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">add_modal_window</span><span class="p">(</span><span class="s2">"add_local_user"</span><span class="p">,</span> <span class="s2">""</span><span class="p">)</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">get_modal_window</span><span class="p">(</span><span class="s2">"add_local_user"</span><span class="p">)</span><span class="o">.</span><span class="n">check_by_window_title</span><span class="p">()</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="UsersTab.open_edit_user_page_by_index">
|
|
||||||
<a class="viewcode-back" href="../../pages.html#pages.users_tab.UsersTab.open_edit_user_page_by_index">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">open_edit_user_page_by_index</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">row_index</span><span class="p">:</span> <span class="nb">int</span><span class="p">)</span> <span class="o">-></span> <span class="nb">tuple</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Открывает окно редактирования по индексу строки.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Args:</span>
|
|
||||||
<span class="sd"> row_index: Индекс строки в таблице.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Returns:</span>
|
|
||||||
<span class="sd"> tuple: (имя пользователя, роль).</span>
|
|
||||||
|
|
||||||
<span class="sd"> Raises:</span>
|
|
||||||
<span class="sd"> AssertionError: Если таблица пуста или индекс вне диапазона.</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">page</span><span class="o">.</span><span class="n">wait_for_timeout</span><span class="p">(</span><span class="mi">2000</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="n">tmp_dict</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"admin"</span><span class="p">:</span> <span class="s2">"Администратор"</span><span class="p">,</span> <span class="s2">"manager"</span><span class="p">:</span> <span class="s2">"Контактное лицо"</span><span class="p">,</span>
|
|
||||||
<span class="s2">"operator"</span><span class="p">:</span> <span class="s2">"Оператор"</span><span class="p">}</span>
|
|
||||||
<span class="n">table_content</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">users_table</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="n">TableLocators</span><span class="o">.</span><span class="n">TABLE_WORK_AREA</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">table_content</span><span class="p">)</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span>
|
|
||||||
<span class="k">assert</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"The contents of the table are missing"</span>
|
|
||||||
|
|
||||||
<span class="c1"># Удаляем заголовок</span>
|
|
||||||
<span class="k">del</span> <span class="n">table_content</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span>
|
|
||||||
|
|
||||||
<span class="k">if</span> <span class="n">row_index</span> <span class="o">>=</span> <span class="nb">len</span><span class="p">(</span><span class="n">table_content</span><span class="p">):</span>
|
|
||||||
<span class="k">assert</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"Row_index is out of range"</span>
|
|
||||||
|
|
||||||
<span class="n">user_name</span> <span class="o">=</span> <span class="n">table_content</span><span class="p">[</span><span class="n">row_index</span><span class="p">][</span><span class="mi">0</span><span class="p">]</span>
|
|
||||||
<span class="k">for</span> <span class="n">key</span><span class="p">,</span> <span class="n">val</span> <span class="ow">in</span> <span class="n">tmp_dict</span><span class="o">.</span><span class="n">items</span><span class="p">():</span>
|
|
||||||
<span class="k">if</span> <span class="n">user_name</span> <span class="o">==</span> <span class="n">val</span><span class="p">:</span>
|
|
||||||
<span class="n">user_name</span> <span class="o">=</span> <span class="n">key</span>
|
|
||||||
|
|
||||||
<span class="n">role</span> <span class="o">=</span> <span class="n">table_content</span><span class="p">[</span><span class="n">row_index</span><span class="p">][</span><span class="mi">2</span><span class="p">]</span>
|
|
||||||
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">page</span><span class="o">.</span><span class="n">locator</span><span class="p">(</span><span class="n">TableLocators</span><span class="o">.</span><span class="n">TABLE_WORK_AREA</span><span class="p">)</span><span class="o">.</span><span class="n">locator</span><span class="p">(</span>
|
|
||||||
<span class="s2">"//tbody/tr"</span><span class="p">)</span><span class="o">.</span><span class="n">nth</span><span class="p">(</span><span class="n">row_index</span><span class="p">)</span><span class="o">.</span><span class="n">click</span><span class="p">()</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">add_modal_window</span><span class="p">(</span><span class="s2">"edit_user"</span><span class="p">,</span> <span class="n">user_name</span><span class="p">)</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">get_modal_window</span><span class="p">(</span><span class="n">user_name</span><span class="p">)</span><span class="o">.</span><span class="n">check_by_window_title</span><span class="p">()</span>
|
|
||||||
|
|
||||||
<span class="k">return</span> <span class="n">user_name</span><span class="p">,</span> <span class="n">role</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="UsersTab.open_edit_user_page_by_user">
|
|
||||||
<a class="viewcode-back" href="../../pages.html#pages.users_tab.UsersTab.open_edit_user_page_by_user">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">open_edit_user_page_by_user</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">user_name</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">role</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Открывает окно редактирования по имени и роли.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Args:</span>
|
|
||||||
<span class="sd"> user_name: Имя пользователя.</span>
|
|
||||||
<span class="sd"> role: Роль пользователя.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Raises:</span>
|
|
||||||
<span class="sd"> AssertionError: Если пользователь не найден.</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
|
|
||||||
<span class="n">row_index</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">find_user_in_table</span><span class="p">(</span><span class="n">user_name</span><span class="p">,</span> <span class="n">role</span><span class="p">)</span>
|
|
||||||
<span class="k">if</span> <span class="n">row_index</span> <span class="o">==</span> <span class="o">-</span><span class="mi">1</span><span class="p">:</span>
|
|
||||||
<span class="k">assert</span> <span class="kc">False</span><span class="p">,</span> <span class="sa">f</span><span class="s2">"User with name </span><span class="si">{</span><span class="n">user_name</span><span class="si">}</span><span class="s2"> and role </span><span class="si">{</span><span class="n">role</span><span class="si">}</span><span class="s2"> has not been found"</span>
|
|
||||||
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">page</span><span class="o">.</span><span class="n">locator</span><span class="p">(</span><span class="n">TableLocators</span><span class="o">.</span><span class="n">TABLE_WORK_AREA</span><span class="p">)</span><span class="o">.</span><span class="n">locator</span><span class="p">(</span><span class="s2">"//tbody/tr"</span><span class="p">)</span><span class="o">.</span><span class="n">nth</span><span class="p">(</span><span class="n">row_index</span><span class="p">)</span><span class="o">.</span><span class="n">click</span><span class="p">()</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">add_modal_window</span><span class="p">(</span><span class="s2">"edit_user"</span><span class="p">,</span> <span class="n">user_name</span><span class="p">)</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">get_modal_window</span><span class="p">(</span><span class="n">user_name</span><span class="p">)</span><span class="o">.</span><span class="n">check_by_window_title</span><span class="p">()</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="UsersTab.reset_password">
|
|
||||||
<a class="viewcode-back" href="../../pages.html#pages.users_tab.UsersTab.reset_password">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">reset_password</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">user_name</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Сбрасывает пароль пользователя.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Args:</span>
|
|
||||||
<span class="sd"> user_name: Имя пользователя.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Returns:</span>
|
|
||||||
<span class="sd"> str: Новый пароль (если получен).</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
|
|
||||||
<span class="n">new_password</span> <span class="o">=</span> <span class="s2">""</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">get_modal_window</span><span class="p">(</span><span class="n">user_name</span><span class="p">)</span><span class="o">.</span><span class="n">reset_password</span><span class="p">()</span>
|
|
||||||
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">alert</span><span class="o">.</span><span class="n">check_alert_presence</span><span class="p">(</span><span class="s2">""</span><span class="p">)</span>
|
|
||||||
<span class="n">alert_message</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">alert</span><span class="o">.</span><span class="n">get_text</span><span class="p">()</span>
|
|
||||||
<span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">alert_message</span><span class="p">)</span> <span class="o">></span> <span class="mi">0</span><span class="p">:</span>
|
|
||||||
<span class="n">new_password</span> <span class="o">=</span> <span class="n">re</span><span class="o">.</span><span class="n">findall</span><span class="p">(</span><span class="sa">r</span><span class="s1">'[\d]+'</span><span class="p">,</span> <span class="n">alert_message</span><span class="p">)[</span><span class="mi">0</span><span class="p">]</span>
|
|
||||||
|
|
||||||
<span class="k">return</span> <span class="n">new_password</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="UsersTab.transform_to_add_AD_user_window">
|
|
||||||
<a class="viewcode-back" href="../../pages.html#pages.users_tab.UsersTab.transform_to_add_AD_user_window">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">transform_to_add_AD_user_window</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Трансформирует модальное окно добавления локального пользователя</span>
|
|
||||||
<span class="sd"> в окно добавления пользователя Active Directory с помощью нажатия</span>
|
|
||||||
<span class="sd"> чек-бокса Active Directory.</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">get_modal_window</span><span class="p">(</span><span class="s2">"add_local_user"</span><span class="p">)</span><span class="o">.</span><span class="n">check_active_directory_checkbox</span><span class="p">()</span>
|
|
||||||
<span class="n">modal_window</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">modal_windows</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"add_AD_user"</span><span class="p">)</span>
|
|
||||||
<span class="k">if</span> <span class="n">modal_window</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">add_modal_window</span><span class="p">(</span><span class="s2">"add_AD_user"</span><span class="p">,</span> <span class="s2">""</span><span class="p">)</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="UsersTab.transform_to_add_user_window">
|
|
||||||
<a class="viewcode-back" href="../../pages.html#pages.users_tab.UsersTab.transform_to_add_user_window">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">transform_to_add_user_window</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Трансформирует модальное окно добавления пользователя Active Directory</span>
|
|
||||||
<span class="sd"> в окно добавления локального пользователя с помощью снятия отметки с</span>
|
|
||||||
<span class="sd"> чек-бокса Active Directory.</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">get_modal_window</span><span class="p">(</span><span class="s2">"add_AD_user"</span><span class="p">)</span><span class="o">.</span><span class="n">uncheck_active_directory_checkbox</span><span class="p">()</span>
|
|
||||||
<span class="n">modal_window</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">modal_windows</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"add_local_user"</span><span class="p">)</span>
|
|
||||||
<span class="k">if</span> <span class="n">modal_window</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">add_modal_window</span><span class="p">(</span><span class="s2">"add_local_user"</span><span class="p">,</span> <span class="s2">""</span><span class="p">)</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<span class="c1"># Проверки:</span>
|
|
||||||
<div class="viewcode-block" id="UsersTab.check_add_AD_user_window_content">
|
|
||||||
<a class="viewcode-back" href="../../pages.html#pages.users_tab.UsersTab.check_add_AD_user_window_content">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">check_add_AD_user_window_content</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Проверяет содержимое окна добавления пользователя через Active Directory."""</span>
|
|
||||||
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">get_modal_window</span><span class="p">(</span><span class="s2">"add_AD_user"</span><span class="p">)</span><span class="o">.</span><span class="n">check_content</span><span class="p">()</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="UsersTab.check_add_user_window_content">
|
|
||||||
<a class="viewcode-back" href="../../pages.html#pages.users_tab.UsersTab.check_add_user_window_content">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">check_add_user_window_content</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Проверяет содержимое окна добавления локального пользователя."""</span>
|
|
||||||
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">get_modal_window</span><span class="p">(</span><span class="s2">"add_local_user"</span><span class="p">)</span><span class="o">.</span><span class="n">check_content</span><span class="p">()</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="UsersTab.check_edit_user_window_content">
|
|
||||||
<a class="viewcode-back" href="../../pages.html#pages.users_tab.UsersTab.check_edit_user_window_content">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">check_edit_user_window_content</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">user_name</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">role</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Проверяет содержимое окна редактирования.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Args:</span>
|
|
||||||
<span class="sd"> user_name: Имя пользователя.</span>
|
|
||||||
<span class="sd"> role: Роль пользователя.</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
|
|
||||||
<span class="n">edit_user_window</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_modal_window</span><span class="p">(</span><span class="n">user_name</span><span class="p">)</span>
|
|
||||||
<span class="n">edit_user_window</span><span class="o">.</span><span class="n">check_content</span><span class="p">(</span><span class="n">user_name</span><span class="p">,</span> <span class="n">role</span><span class="p">)</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="UsersTab.check_users_table_content">
|
|
||||||
<a class="viewcode-back" href="../../pages.html#pages.users_tab.UsersTab.check_users_table_content">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">check_users_table_content</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">verify</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Проверяет содержимое таблицы пользователей.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Args:</span>
|
|
||||||
<span class="sd"> verify: Проверять соответствие данных из БД. По умолчанию False.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Raises:</span>
|
|
||||||
<span class="sd"> AssertionError: Если таблица пуста или заголовки неверны.</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">page</span><span class="o">.</span><span class="n">wait_for_timeout</span><span class="p">(</span><span class="mi">2000</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="n">expected_headers</span> <span class="o">=</span> <span class="p">[</span><span class="s1">'Имя пользователя'</span><span class="p">,</span> <span class="s1">'Тип авторизации'</span><span class="p">,</span> <span class="s1">'Роль'</span><span class="p">,</span>
|
|
||||||
<span class="s1">'E-mail'</span><span class="p">,</span> <span class="s1">'Номер для СМС'</span><span class="p">]</span>
|
|
||||||
<span class="n">table_content</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">users_table</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="n">TableLocators</span><span class="o">.</span><span class="n">TABLE_WORK_AREA</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">table_content</span><span class="p">)</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span>
|
|
||||||
<span class="k">assert</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"The contents of the table are missing"</span>
|
|
||||||
|
|
||||||
<span class="n">actual_headers</span> <span class="o">=</span> <span class="n">table_content</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">check_equals</span><span class="p">(</span>
|
|
||||||
<span class="n">actual_headers</span><span class="p">,</span>
|
|
||||||
<span class="n">expected_headers</span><span class="p">,</span>
|
|
||||||
<span class="sa">f</span><span class="s2">"Expected table headers </span><span class="si">{</span><span class="n">expected_headers</span><span class="si">}</span><span class="s2"> are not equal </span><span class="si">{</span><span class="n">actual_headers</span><span class="si">}</span><span class="s2">"</span>
|
|
||||||
<span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">table_content</span><span class="p">)</span> <span class="o">==</span> <span class="mi">1</span><span class="p">:</span>
|
|
||||||
<span class="k">assert</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"Table body is missing"</span>
|
|
||||||
|
|
||||||
<span class="k">if</span> <span class="n">verify</span><span class="p">:</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">verify_users_table_content</span><span class="p">(</span><span class="n">table_content</span><span class="p">)</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="UsersTab.should_be_toolbar">
|
|
||||||
<a class="viewcode-back" href="../../pages.html#pages.users_tab.UsersTab.should_be_toolbar">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">should_be_toolbar</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Проверяет наличие тулбара.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Raises:</span>
|
|
||||||
<span class="sd"> AssertionError: Если тулбар или кнопка редактирования отсутствуют.</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">toolbar</span><span class="o">.</span><span class="n">check_toolbar_presence</span><span class="p">(</span><span class="s2">"Toolbar is missing"</span><span class="p">)</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">toolbar</span><span class="o">.</span><span class="n">check_button_visibility</span><span class="p">(</span><span class="s2">"edit"</span><span class="p">)</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="UsersTab.should_be_toolbar_buttons">
|
|
||||||
<a class="viewcode-back" href="../../pages.html#pages.users_tab.UsersTab.should_be_toolbar_buttons">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">should_be_toolbar_buttons</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Проверяет наличие и функциональность кнопок тулбара.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Raises:</span>
|
|
||||||
<span class="sd"> AssertionError: Если кнопки недоступны или подсказки неверны.</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">toolbar</span><span class="o">.</span><span class="n">check_button_visibility</span><span class="p">(</span><span class="s2">"edit"</span><span class="p">)</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">toolbar</span><span class="o">.</span><span class="n">check_button_tooltip</span><span class="p">(</span><span class="s2">"edit"</span><span class="p">,</span> <span class="s2">"Редактировать"</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">toolbar</span><span class="o">.</span><span class="n">get_button_by_name</span><span class="p">(</span><span class="s2">"edit"</span><span class="p">)</span><span class="o">.</span><span class="n">click</span><span class="p">()</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">toolbar</span><span class="o">.</span><span class="n">check_button_visibility</span><span class="p">(</span><span class="s2">"add_user"</span><span class="p">)</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">toolbar</span><span class="o">.</span><span class="n">check_button_visibility</span><span class="p">(</span><span class="s2">"close"</span><span class="p">)</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">toolbar</span><span class="o">.</span><span class="n">check_button_tooltip</span><span class="p">(</span><span class="s2">"add_user"</span><span class="p">,</span> <span class="s2">"Добавить"</span><span class="p">)</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">toolbar</span><span class="o">.</span><span class="n">check_button_tooltip</span><span class="p">(</span><span class="s2">"close"</span><span class="p">,</span> <span class="s2">"Закрыть"</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">toolbar</span><span class="o">.</span><span class="n">get_button_by_name</span><span class="p">(</span><span class="s2">"close"</span><span class="p">)</span><span class="o">.</span><span class="n">click</span><span class="p">()</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">toolbar</span><span class="o">.</span><span class="n">check_button_visibility</span><span class="p">(</span><span class="s2">"edit"</span><span class="p">)</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="UsersTab.should_be_user_in_table">
|
|
||||||
<a class="viewcode-back" href="../../pages.html#pages.users_tab.UsersTab.should_be_user_in_table">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">should_be_user_in_table</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">role</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Проверяет наличие пользователя в таблице.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Args:</span>
|
|
||||||
<span class="sd"> name: Имя пользователя.</span>
|
|
||||||
<span class="sd"> role: Роль пользователя.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Raises:</span>
|
|
||||||
<span class="sd"> AssertionError: Если пользователь не найден.</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
|
|
||||||
<span class="n">found</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">find_user_in_table</span><span class="p">(</span><span class="n">name</span><span class="p">,</span> <span class="n">role</span><span class="p">)</span>
|
|
||||||
<span class="k">if</span> <span class="n">found</span> <span class="o">==</span> <span class="o">-</span><span class="mi">1</span><span class="p">:</span>
|
|
||||||
<span class="k">assert</span> <span class="kc">False</span><span class="p">,</span> <span class="sa">f</span><span class="s2">"User with name </span><span class="si">{</span><span class="n">name</span><span class="si">}</span><span class="s2"> and role </span><span class="si">{</span><span class="n">role</span><span class="si">}</span><span class="s2"> has not been found"</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="UsersTab.should_be_users_table">
|
|
||||||
<a class="viewcode-back" href="../../pages.html#pages.users_tab.UsersTab.should_be_users_table">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">should_be_users_table</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Проверяет наличие таблицы пользователей.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Raises:</span>
|
|
||||||
<span class="sd"> AssertionError: Если таблица отсутствует.</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">users_table</span><span class="o">.</span><span class="n">check_visibility</span><span class="p">(</span><span class="n">TableLocators</span><span class="o">.</span><span class="n">TABLE_WORK_AREA</span><span class="p">,</span><span class="s2">"Users table is missing"</span><span class="p">)</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="UsersTab.should_not_be_user_in_table">
|
|
||||||
<a class="viewcode-back" href="../../pages.html#pages.users_tab.UsersTab.should_not_be_user_in_table">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">should_not_be_user_in_table</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">role</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Проверяет отсутствие пользователя в таблице.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Args:</span>
|
|
||||||
<span class="sd"> name: Имя пользователя.</span>
|
|
||||||
<span class="sd"> role: Роль пользователя.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Raises:</span>
|
|
||||||
<span class="sd"> AssertionError: Если пользователь найден.</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
|
|
||||||
<span class="n">found</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">find_user_in_table</span><span class="p">(</span><span class="n">name</span><span class="p">,</span> <span class="n">role</span><span class="p">)</span>
|
|
||||||
<span class="k">if</span> <span class="n">found</span> <span class="o">!=</span> <span class="o">-</span><span class="mi">1</span><span class="p">:</span>
|
|
||||||
<span class="k">assert</span> <span class="kc">False</span><span class="p">,</span> <span class="sa">f</span><span class="s2">"User with name </span><span class="si">{</span><span class="n">name</span><span class="si">}</span><span class="s2"> and role </span><span class="si">{</span><span class="n">role</span><span class="si">}</span><span class="s2"> has been found"</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="UsersTab.verify_users_table_content">
|
|
||||||
<a class="viewcode-back" href="../../pages.html#pages.users_tab.UsersTab.verify_users_table_content">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">verify_users_table_content</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">users_table</span><span class="p">:</span> <span class="nb">list</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Сверяет данные таблицы с данными из БД.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Args:</span>
|
|
||||||
<span class="sd"> users_table: Данные из таблицы на странице.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Raises:</span>
|
|
||||||
<span class="sd"> AssertionError: Если данные не соответствуют.</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
|
|
||||||
<span class="n">expected_users_list</span> <span class="o">=</span> <span class="p">[]</span>
|
|
||||||
|
|
||||||
<span class="n">query</span> <span class="o">=</span> <span class="p">{</span>
|
|
||||||
<span class="s2">"id"</span><span class="p">:</span> <span class="p">[</span><span class="s2">"/catalogs/user"</span><span class="p">],</span>
|
|
||||||
<span class="s2">"data"</span><span class="p">:</span> <span class="p">{</span>
|
|
||||||
<span class="s2">"namePath"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span>
|
|
||||||
<span class="s2">"children"</span><span class="p">:</span> <span class="p">{</span><span class="s2">"flatten"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span>
|
|
||||||
<span class="p">}</span>
|
|
||||||
<span class="p">}</span>
|
|
||||||
|
|
||||||
<span class="n">response</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">send_post_api_request</span><span class="p">(</span><span class="s2">"e-cmdb/api/query"</span><span class="p">,</span> <span class="n">query</span><span class="p">)</span>
|
|
||||||
<span class="n">response_body</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_response_body</span><span class="p">(</span><span class="n">response</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="k">for</span> <span class="n">item</span> <span class="ow">in</span> <span class="n">response_body</span><span class="p">[</span><span class="mi">0</span><span class="p">][</span><span class="s2">"children"</span><span class="p">]:</span>
|
|
||||||
<span class="n">user_info</span> <span class="o">=</span> <span class="p">[]</span>
|
|
||||||
<span class="n">user_name</span> <span class="o">=</span> <span class="n">item</span><span class="p">[</span><span class="s2">"name"</span><span class="p">]</span>
|
|
||||||
|
|
||||||
<span class="c1"># НЕ преобразуем имя пользователя - оставляем как есть из БД</span>
|
|
||||||
<span class="n">user_info</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">user_name</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="k">if</span> <span class="n">item</span><span class="p">[</span><span class="s2">"type_auth"</span><span class="p">]</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="n">user_info</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">item</span><span class="p">[</span><span class="s2">"type_auth"</span><span class="p">])</span>
|
|
||||||
<span class="k">else</span><span class="p">:</span>
|
|
||||||
<span class="n">user_info</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s2">""</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="k">if</span> <span class="n">item</span><span class="p">[</span><span class="s2">"role"</span><span class="p">]</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="n">role</span> <span class="o">=</span> <span class="n">item</span><span class="p">[</span><span class="s2">"role"</span><span class="p">]</span>
|
|
||||||
<span class="c1"># Убрали вызов .keys()</span>
|
|
||||||
<span class="k">if</span> <span class="n">role</span> <span class="ow">in</span> <span class="n">roles_dict</span><span class="p">:</span>
|
|
||||||
<span class="n">item</span><span class="p">[</span><span class="s2">"role"</span><span class="p">]</span> <span class="o">=</span> <span class="n">roles_dict</span><span class="p">[</span><span class="n">role</span><span class="p">]</span>
|
|
||||||
<span class="n">user_info</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">item</span><span class="p">[</span><span class="s2">"role"</span><span class="p">])</span>
|
|
||||||
<span class="k">else</span><span class="p">:</span>
|
|
||||||
<span class="n">user_info</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s2">""</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="k">if</span> <span class="n">item</span><span class="p">[</span><span class="s2">"email"</span><span class="p">]</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="n">user_info</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">item</span><span class="p">[</span><span class="s2">"email"</span><span class="p">])</span>
|
|
||||||
<span class="k">else</span><span class="p">:</span>
|
|
||||||
<span class="n">user_info</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s2">""</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="k">if</span> <span class="n">item</span><span class="p">[</span><span class="s2">"sms_phone"</span><span class="p">]</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="n">user_info</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">item</span><span class="p">[</span><span class="s2">"sms_phone"</span><span class="p">])</span>
|
|
||||||
<span class="k">else</span><span class="p">:</span>
|
|
||||||
<span class="n">user_info</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s2">""</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="n">expected_users_list</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">user_info</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="c1"># Удаляем заголовок</span>
|
|
||||||
<span class="k">del</span> <span class="n">users_table</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span>
|
|
||||||
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">check_lists_equals</span><span class="p">(</span>
|
|
||||||
<span class="n">users_table</span><span class="p">,</span>
|
|
||||||
<span class="n">expected_users_list</span><span class="p">,</span>
|
|
||||||
<span class="s2">"Actual users list is not equal expected users list on base db"</span>
|
|
||||||
<span class="p">)</span></div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</pre></div>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<footer>
|
|
||||||
|
|
||||||
<hr/>
|
|
||||||
|
|
||||||
<div role="contentinfo">
|
|
||||||
<p>© Авторские права 2025, NPO KIS. </p>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
Собрано при помощи <a href="https://www.sphinx-doc.org/">Sphinx</a> с использованием
|
|
||||||
<a href="https://github.com/readthedocs/sphinx_rtd_theme">темы,</a>
|
|
||||||
предоставленной <a href="https://readthedocs.org">Read the Docs</a>.
|
|
||||||
|
|
||||||
|
|
||||||
</footer>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</section>
|
|
||||||
</div>
|
|
||||||
<script>
|
|
||||||
jQuery(function () {
|
|
||||||
SphinxRtdTheme.Navigation.enable(true);
|
|
||||||
});
|
|
||||||
</script>
|
|
||||||
|
|
||||||
</body>
|
|
||||||
</html>
|
|
||||||
|
|
@ -1,361 +0,0 @@
|
||||||
|
|
||||||
|
|
||||||
<!DOCTYPE html>
|
|
||||||
<html class="writer-html5" lang="ru" data-content_root="../../">
|
|
||||||
<head>
|
|
||||||
<meta charset="utf-8" />
|
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
||||||
<title>pages.ztp_config_tab — документация e-nms-qa-automation 0.1.0</title>
|
|
||||||
<link rel="stylesheet" type="text/css" href="../../_static/pygments.css?v=b86133f3" />
|
|
||||||
<link rel="stylesheet" type="text/css" href="../../_static/css/theme.css?v=e59714d7" />
|
|
||||||
|
|
||||||
|
|
||||||
<script src="../../_static/jquery.js?v=5d32c60e"></script>
|
|
||||||
<script src="../../_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script>
|
|
||||||
<script src="../../_static/documentation_options.js?v=6ff560e8"></script>
|
|
||||||
<script src="../../_static/doctools.js?v=9bcbadda"></script>
|
|
||||||
<script src="../../_static/sphinx_highlight.js?v=dc90522c"></script>
|
|
||||||
<script src="../../_static/translations.js?v=cd1d70c9"></script>
|
|
||||||
<script src="../../_static/js/theme.js"></script>
|
|
||||||
<link rel="index" title="Алфавитный указатель" href="../../genindex.html" />
|
|
||||||
<link rel="search" title="Поиск" href="../../search.html" />
|
|
||||||
</head>
|
|
||||||
|
|
||||||
<body class="wy-body-for-nav">
|
|
||||||
<div class="wy-grid-for-nav">
|
|
||||||
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
|
|
||||||
<div class="wy-side-scroll">
|
|
||||||
<div class="wy-side-nav-search" >
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<a href="../../index.html" class="icon icon-home">
|
|
||||||
e-nms-qa-automation
|
|
||||||
</a>
|
|
||||||
<div role="search">
|
|
||||||
<form id="rtd-search-form" class="wy-form" action="../../search.html" method="get">
|
|
||||||
<input type="text" name="q" placeholder="Поиск в документации" aria-label="Поиск в документации" />
|
|
||||||
<input type="hidden" name="check_keywords" value="yes" />
|
|
||||||
<input type="hidden" name="area" value="default" />
|
|
||||||
</form>
|
|
||||||
</div>
|
|
||||||
</div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Меню навигации">
|
|
||||||
<!-- Local TOC -->
|
|
||||||
<div class="local-toc"></div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</nav>
|
|
||||||
|
|
||||||
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Меню навигации для мобильных устройств" >
|
|
||||||
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
|
|
||||||
<a href="../../index.html">e-nms-qa-automation</a>
|
|
||||||
</nav>
|
|
||||||
|
|
||||||
<div class="wy-nav-content">
|
|
||||||
<div class="rst-content">
|
|
||||||
<div role="navigation" aria-label="Навигация по страницам">
|
|
||||||
<ul class="wy-breadcrumbs">
|
|
||||||
<li><a href="../../index.html" class="icon icon-home" aria-label="Home"></a></li>
|
|
||||||
<li class="breadcrumb-item"><a href="../index.html">Код модуля</a></li>
|
|
||||||
<li class="breadcrumb-item active">pages.ztp_config_tab</li>
|
|
||||||
<li class="wy-breadcrumbs-aside">
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
<hr/>
|
|
||||||
</div>
|
|
||||||
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
|
|
||||||
<div itemprop="articleBody">
|
|
||||||
|
|
||||||
<h1>Исходный код pages.ztp_config_tab</h1><div class="highlight"><pre>
|
|
||||||
<span></span><span class="sd">"""Модуль вкладки 'Конфигурация' в модуле Zero Touch Provisioning.</span>
|
|
||||||
|
|
||||||
<span class="sd">Содержит класс ZTPConfigTab для работы с таблицей конфигурации ZTP.</span>
|
|
||||||
<span class="sd">Позволяет проверять состояние и взаимодействовать с элементами вкладки.</span>
|
|
||||||
<span class="sd">"""</span>
|
|
||||||
|
|
||||||
<span class="kn">from</span><span class="w"> </span><span class="nn">playwright.sync_api</span><span class="w"> </span><span class="kn">import</span> <span class="n">Page</span>
|
|
||||||
<span class="kn">from</span><span class="w"> </span><span class="nn">tools.logger</span><span class="w"> </span><span class="kn">import</span> <span class="n">get_logger</span>
|
|
||||||
<span class="kn">from</span><span class="w"> </span><span class="nn">locators.table_locators</span><span class="w"> </span><span class="kn">import</span> <span class="n">TableLocators</span>
|
|
||||||
<span class="kn">from</span><span class="w"> </span><span class="nn">elements.tooltip_button_element</span><span class="w"> </span><span class="kn">import</span> <span class="n">TooltipButton</span>
|
|
||||||
<span class="kn">from</span><span class="w"> </span><span class="nn">components.toolbar_component</span><span class="w"> </span><span class="kn">import</span> <span class="n">ToolbarComponent</span>
|
|
||||||
<span class="kn">from</span><span class="w"> </span><span class="nn">components.table_component</span><span class="w"> </span><span class="kn">import</span> <span class="n">TableComponent</span>
|
|
||||||
<span class="kn">from</span><span class="w"> </span><span class="nn">pages.base_page</span><span class="w"> </span><span class="kn">import</span> <span class="n">BasePage</span>
|
|
||||||
|
|
||||||
<span class="n">logger</span> <span class="o">=</span> <span class="n">get_logger</span><span class="p">(</span><span class="s2">"ZTP_CONFIG_TAB"</span><span class="p">)</span>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="ZTPConfigTab">
|
|
||||||
<a class="viewcode-back" href="../../pages.html#pages.ztp_config_tab.ZTPConfigTab">[документация]</a>
|
|
||||||
<span class="k">class</span><span class="w"> </span><span class="nc">ZTPConfigTab</span><span class="p">(</span><span class="n">BasePage</span><span class="p">):</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Класс для работы с вкладкой 'Конфигурация' в модуле Zero Touch Provisioning.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Предоставляет методы для взаимодействия с таблицей конфигурации ZTP</span>
|
|
||||||
<span class="sd"> и проверки состояния элементов интерфейса. Включает функциональность для:</span>
|
|
||||||
<span class="sd"> - Проверки содержимого и структуры таблицы конфигурации</span>
|
|
||||||
<span class="sd"> - Прокрутки таблицы и проверки видимости строк</span>
|
|
||||||
<span class="sd"> - Выделения строк таблицы</span>
|
|
||||||
<span class="sd"> - Работы с кнопкой синхронизации (Reload) в заголовке таблицы</span>
|
|
||||||
<span class="sd"> - Проверки видимости и подсказок кнопок синхронизации</span>
|
|
||||||
|
|
||||||
<span class="sd"> Args:</span>
|
|
||||||
<span class="sd"> page (Page): Экземпляр страницы Playwright.</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="ZTPConfigTab.__init__">
|
|
||||||
<a class="viewcode-back" href="../../pages.html#pages.ztp_config_tab.ZTPConfigTab.__init__">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">page</span><span class="p">:</span> <span class="n">Page</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Инициализирует компоненты вкладки 'Конфигурация'.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Args:</span>
|
|
||||||
<span class="sd"> page: Экземпляр страницы Playwright для взаимодействия с браузером.</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
<span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="fm">__init__</span><span class="p">(</span><span class="n">page</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="c1"># Компонент тулбара вкладки конфигурации</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">toolbar</span> <span class="o">=</span> <span class="n">ToolbarComponent</span><span class="p">(</span><span class="n">page</span><span class="p">,</span> <span class="s2">"Конфигурация"</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="c1"># Компонент таблицы конфигурации ZTP</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">ztp_config_table</span> <span class="o">=</span> <span class="n">TableComponent</span><span class="p">(</span><span class="n">page</span><span class="p">)</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<span class="c1"># Действия:</span>
|
|
||||||
<div class="viewcode-block" id="ZTPConfigTab.click_sync_button">
|
|
||||||
<a class="viewcode-back" href="../../pages.html#pages.ztp_config_tab.ZTPConfigTab.click_sync_button">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">click_sync_button</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">index</span><span class="p">:</span> <span class="nb">int</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Нажимает кнопку 'Reload' в указанной ячейке заголовка таблицы.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Перед кликом проверяет наличие кнопки.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Args:</span>
|
|
||||||
<span class="sd"> index: Индекс ячейки в заголовке таблицы.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Raises:</span>
|
|
||||||
<span class="sd"> AssertionError: Если индекс выходит за пределы или кнопка не найдена.</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
|
|
||||||
<span class="c1"># Проверяем наличие кнопки перед кликом</span>
|
|
||||||
<span class="n">sync_button</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">ztp_config_table</span><span class="o">.</span><span class="n">get_header_cell_button</span><span class="p">(</span><span class="n">TableLocators</span><span class="o">.</span><span class="n">TABLE_WORK_AREA</span><span class="p">,</span> <span class="n">index</span><span class="p">)</span>
|
|
||||||
<span class="k">assert</span> <span class="n">sync_button</span><span class="o">.</span><span class="n">is_enabled</span><span class="p">(),</span> <span class="sa">f</span><span class="s2">"Sync button is missing in </span><span class="si">{</span><span class="n">index</span><span class="si">}</span><span class="s2"> header cell"</span>
|
|
||||||
|
|
||||||
<span class="c1"># Выполняем клик по кнопке</span>
|
|
||||||
<span class="n">sync_button</span><span class="o">.</span><span class="n">click</span><span class="p">()</span>
|
|
||||||
<span class="n">logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="s2">"Нажата кнопка синхронизации (Reload)"</span><span class="p">)</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="ZTPConfigTab.get_rows_count">
|
|
||||||
<a class="viewcode-back" href="../../pages.html#pages.ztp_config_tab.ZTPConfigTab.get_rows_count">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">get_rows_count</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">int</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Возвращает количество строк в таблице конфигурации (без заголовка).</span>
|
|
||||||
|
|
||||||
<span class="sd"> Returns:</span>
|
|
||||||
<span class="sd"> int: Количество строк с данными конфигурации ZTP.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Raises:</span>
|
|
||||||
<span class="sd"> AssertionError: Если таблица пуста или не загружена.</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">ztp_config_table</span><span class="o">.</span><span class="n">get_rows_count</span><span class="p">(</span><span class="n">TableLocators</span><span class="o">.</span><span class="n">TABLE_WORK_AREA</span><span class="p">)</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="ZTPConfigTab.scroll_config_table_up">
|
|
||||||
<a class="viewcode-back" href="../../pages.html#pages.ztp_config_tab.ZTPConfigTab.scroll_config_table_up">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">scroll_config_table_up</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Прокручивает таблицу конфигурации вверх до начала."""</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">ztp_config_table</span><span class="o">.</span><span class="n">scroll_up</span><span class="p">(</span><span class="n">TableLocators</span><span class="o">.</span><span class="n">TABLE_SCROLL_CONTAINER</span><span class="p">)</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="ZTPConfigTab.scroll_config_table_down">
|
|
||||||
<a class="viewcode-back" href="../../pages.html#pages.ztp_config_tab.ZTPConfigTab.scroll_config_table_down">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">scroll_config_table_down</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Прокручивает таблицу конфигурации вниз до конца."""</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">ztp_config_table</span><span class="o">.</span><span class="n">scroll_down</span><span class="p">(</span><span class="n">TableLocators</span><span class="o">.</span><span class="n">TABLE_SCROLL_CONTAINER</span><span class="p">)</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<span class="c1"># Проверки:</span>
|
|
||||||
<div class="viewcode-block" id="ZTPConfigTab.check_config_table_content">
|
|
||||||
<a class="viewcode-back" href="../../pages.html#pages.ztp_config_tab.ZTPConfigTab.check_config_table_content">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">check_config_table_content</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Проверяет содержимое таблицы конфигурации ZTP.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Проверяет соответствие заголовков таблицы ожидаемым значениям</span>
|
|
||||||
<span class="sd"> и наличие данных в таблице.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Raises:</span>
|
|
||||||
<span class="sd"> AssertionError: Если таблица пуста или заголовки не соответствуют ожидаемым.</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
<span class="c1"># Ожидаемые заголовки столбцов таблицы конфигурации ZTP</span>
|
|
||||||
<span class="n">expected_headers</span> <span class="o">=</span> <span class="p">[</span>
|
|
||||||
<span class="s1">'sync'</span><span class="p">,</span>
|
|
||||||
<span class="s1">'IDENTIFIER'</span><span class="p">,</span>
|
|
||||||
<span class="s1">'MAC'</span><span class="p">,</span>
|
|
||||||
<span class="s1">'DHCPRELAY'</span><span class="p">,</span>
|
|
||||||
<span class="s1">'ШАБЛОН'</span><span class="p">,</span>
|
|
||||||
<span class="s1">'IPSETTODEVICE'</span><span class="p">,</span>
|
|
||||||
<span class="s1">'СТАТУС'</span><span class="p">,</span>
|
|
||||||
<span class="s1">'ДЕЙСТВИЯ'</span>
|
|
||||||
<span class="p">]</span>
|
|
||||||
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">ztp_config_table</span><span class="o">.</span><span class="n">check_content</span><span class="p">(</span>
|
|
||||||
<span class="n">TableLocators</span><span class="o">.</span><span class="n">TABLE_WORK_AREA</span><span class="p">,</span>
|
|
||||||
<span class="n">expected_headers</span><span class="p">,</span>
|
|
||||||
<span class="kc">False</span>
|
|
||||||
<span class="p">)</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="ZTPConfigTab.check_sync_button_visibility">
|
|
||||||
<a class="viewcode-back" href="../../pages.html#pages.ztp_config_tab.ZTPConfigTab.check_sync_button_visibility">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">check_sync_button_visibility</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">index</span><span class="p">:</span> <span class="nb">int</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Проверяет видимость кнопки синхронизации (Reload) в указанной ячейке заголовка.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Args:</span>
|
|
||||||
<span class="sd"> index: Индекс ячейки в заголовке таблицы.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Raises:</span>
|
|
||||||
<span class="sd"> AssertionError: Если кнопка не видна на странице.</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
<span class="n">sync_button</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">ztp_config_table</span><span class="o">.</span><span class="n">get_header_cell_button</span><span class="p">(</span><span class="n">TableLocators</span><span class="o">.</span><span class="n">TABLE_WORK_AREA</span><span class="p">,</span> <span class="n">index</span><span class="p">)</span>
|
|
||||||
<span class="k">assert</span> <span class="n">sync_button</span><span class="o">.</span><span class="n">is_enabled</span><span class="p">(),</span> <span class="sa">f</span><span class="s2">"Sync button is missing in </span><span class="si">{</span><span class="n">index</span><span class="si">}</span><span class="s2"> header cell"</span>
|
|
||||||
|
|
||||||
<span class="c1"># Прокручиваем к элементу для гарантии видимости</span>
|
|
||||||
<span class="n">sync_button</span><span class="o">.</span><span class="n">scroll_into_view_if_needed</span><span class="p">()</span>
|
|
||||||
|
|
||||||
<span class="c1"># Проверяем видимость кнопки</span>
|
|
||||||
<span class="k">assert</span> <span class="n">sync_button</span><span class="o">.</span><span class="n">is_visible</span><span class="p">(),</span> <span class="sa">f</span><span class="s2">"Sync button in header cell </span><span class="si">{</span><span class="n">index</span><span class="si">}</span><span class="s2"> is not visible"</span>
|
|
||||||
|
|
||||||
<span class="n">logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="s2">"Кнопка синхронизации (Reload) видима"</span><span class="p">)</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="ZTPConfigTab.check_sync_button_tooltip">
|
|
||||||
<a class="viewcode-back" href="../../pages.html#pages.ztp_config_tab.ZTPConfigTab.check_sync_button_tooltip">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">check_sync_button_tooltip</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">index</span><span class="p">:</span> <span class="nb">int</span><span class="p">,</span> <span class="n">expected_tooltip</span><span class="p">:</span> <span class="nb">str</span> <span class="o">=</span> <span class="s2">"reload"</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Проверяет текст подсказки кнопки синхронизации (Reload).</span>
|
|
||||||
|
|
||||||
<span class="sd"> Использует стандартный механизм проверки подсказок из ToolbarComponent.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Args:</span>
|
|
||||||
<span class="sd"> index: Индекс ячейки в заголовке таблицы.</span>
|
|
||||||
<span class="sd"> expected_tooltip: Ожидаемый текст подсказки (по умолчанию 'reload').</span>
|
|
||||||
|
|
||||||
<span class="sd"> Raises:</span>
|
|
||||||
<span class="sd"> AssertionError: Если подсказка не соответствует ожидаемой или отсутствует.</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
<span class="c1"># Убеждаемся, что кнопка существует</span>
|
|
||||||
<span class="n">sync_button</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">ztp_config_table</span><span class="o">.</span><span class="n">get_header_cell_button</span><span class="p">(</span><span class="n">TableLocators</span><span class="o">.</span><span class="n">TABLE_WORK_AREA</span><span class="p">,</span> <span class="n">index</span><span class="p">)</span>
|
|
||||||
<span class="k">assert</span> <span class="n">sync_button</span><span class="o">.</span><span class="n">is_enabled</span><span class="p">(),</span> <span class="sa">f</span><span class="s2">"Sync button is missing in </span><span class="si">{</span><span class="n">index</span><span class="si">}</span><span class="s2"> header cell"</span>
|
|
||||||
|
|
||||||
<span class="n">sync_tooltip_button</span> <span class="o">=</span> <span class="n">TooltipButton</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">page</span><span class="p">,</span> <span class="n">sync_button</span><span class="p">,</span> <span class="s2">"sync_button"</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="c1"># Проверка подсказки</span>
|
|
||||||
<span class="n">sync_tooltip_button</span><span class="o">.</span><span class="n">check_tooltip_with_text</span><span class="p">(</span><span class="n">expected_tooltip</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="n">logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span>
|
|
||||||
<span class="s2">"Подсказка кнопки синхронизации (Reload) в ячейке </span><span class="si">%d</span><span class="s2">: '</span><span class="si">%s</span><span class="s2">'"</span><span class="p">,</span>
|
|
||||||
<span class="n">index</span><span class="p">,</span>
|
|
||||||
<span class="n">expected_tooltip</span>
|
|
||||||
<span class="p">)</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="ZTPConfigTab.check_config_table_vertical_scrolling">
|
|
||||||
<a class="viewcode-back" href="../../pages.html#pages.ztp_config_tab.ZTPConfigTab.check_config_table_vertical_scrolling">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">check_config_table_vertical_scrolling</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">bool</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Проверяет возможность вертикальной прокрутки таблицы конфигурации.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Returns:</span>
|
|
||||||
<span class="sd"> bool: True если таблица поддерживает вертикальную прокрутку, иначе False.</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">ztp_config_table</span><span class="o">.</span><span class="n">is_scrollable_vertically</span><span class="p">(</span>
|
|
||||||
<span class="n">TableLocators</span><span class="o">.</span><span class="n">TABLE_SCROLL_CONTAINER</span>
|
|
||||||
<span class="p">)</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="ZTPConfigTab.check_config_table_first_row_visibility">
|
|
||||||
<a class="viewcode-back" href="../../pages.html#pages.ztp_config_tab.ZTPConfigTab.check_config_table_first_row_visibility">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">check_config_table_first_row_visibility</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Проверяет видимость первой строки таблицы конфигурации.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Raises:</span>
|
|
||||||
<span class="sd"> AssertionError: Если первая строка таблицы не видна.</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">ztp_config_table</span><span class="o">.</span><span class="n">check_first_row_visibility</span><span class="p">(</span><span class="n">TableLocators</span><span class="o">.</span><span class="n">TABLE_WORK_AREA</span><span class="p">)</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="ZTPConfigTab.check_config_table_last_row_visibility">
|
|
||||||
<a class="viewcode-back" href="../../pages.html#pages.ztp_config_tab.ZTPConfigTab.check_config_table_last_row_visibility">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">check_config_table_last_row_visibility</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Проверяет видимость последней строки таблицы конфигурации.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Raises:</span>
|
|
||||||
<span class="sd"> AssertionError: Если последняя строка таблицы не видна.</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">ztp_config_table</span><span class="o">.</span><span class="n">check_last_row_visibility</span><span class="p">(</span><span class="n">TableLocators</span><span class="o">.</span><span class="n">TABLE_WORK_AREA</span><span class="p">)</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="ZTPConfigTab.check_config_table_row_highlighting">
|
|
||||||
<a class="viewcode-back" href="../../pages.html#pages.ztp_config_tab.ZTPConfigTab.check_config_table_row_highlighting">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">check_config_table_row_highlighting</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">row_index</span><span class="p">:</span> <span class="nb">int</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Проверяет выделение указанной строки таблицы конфигурации.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Args:</span>
|
|
||||||
<span class="sd"> row_index: Индекс проверяемой строки (0-based, без учета заголовка).</span>
|
|
||||||
|
|
||||||
<span class="sd"> Raises:</span>
|
|
||||||
<span class="sd"> AssertionError: Если строка не выделена после взаимодействия.</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">ztp_config_table</span><span class="o">.</span><span class="n">check_row_highlighting</span><span class="p">(</span>
|
|
||||||
<span class="n">TableLocators</span><span class="o">.</span><span class="n">TABLE_WORK_AREA</span><span class="p">,</span> <span class="n">row_index</span>
|
|
||||||
<span class="p">)</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="ZTPConfigTab.should_be_toolbar">
|
|
||||||
<a class="viewcode-back" href="../../pages.html#pages.ztp_config_tab.ZTPConfigTab.should_be_toolbar">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">should_be_toolbar</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Проверяет наличие и видимость тулбара на вкладке конфигурации.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Raises:</span>
|
|
||||||
<span class="sd"> AssertionError: Если тулбар отсутствует на странице.</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">toolbar</span><span class="o">.</span><span class="n">check_toolbar_presence</span><span class="p">(</span><span class="s2">"Toolbar is missing"</span><span class="p">)</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="ZTPConfigTab.should_be_config_table">
|
|
||||||
<a class="viewcode-back" href="../../pages.html#pages.ztp_config_tab.ZTPConfigTab.should_be_config_table">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">should_be_config_table</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Проверяет наличие и видимость таблицы конфигурации ZTP.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Raises:</span>
|
|
||||||
<span class="sd"> AssertionError: Если таблица конфигурации отсутствует на странице.</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">ztp_config_table</span><span class="o">.</span><span class="n">check_visibility</span><span class="p">(</span>
|
|
||||||
<span class="n">TableLocators</span><span class="o">.</span><span class="n">TABLE_WORK_AREA</span><span class="p">,</span> <span class="s2">"Configuration table is missing"</span>
|
|
||||||
<span class="p">)</span></div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</pre></div>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<footer>
|
|
||||||
|
|
||||||
<hr/>
|
|
||||||
|
|
||||||
<div role="contentinfo">
|
|
||||||
<p>© Авторские права 2025, NPO KIS. </p>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
Собрано при помощи <a href="https://www.sphinx-doc.org/">Sphinx</a> с использованием
|
|
||||||
<a href="https://github.com/readthedocs/sphinx_rtd_theme">темы,</a>
|
|
||||||
предоставленной <a href="https://readthedocs.org">Read the Docs</a>.
|
|
||||||
|
|
||||||
|
|
||||||
</footer>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</section>
|
|
||||||
</div>
|
|
||||||
<script>
|
|
||||||
jQuery(function () {
|
|
||||||
SphinxRtdTheme.Navigation.enable(true);
|
|
||||||
});
|
|
||||||
</script>
|
|
||||||
|
|
||||||
</body>
|
|
||||||
</html>
|
|
||||||
|
|
@ -1,486 +0,0 @@
|
||||||
|
|
||||||
|
|
||||||
<!DOCTYPE html>
|
|
||||||
<html class="writer-html5" lang="ru" data-content_root="../../">
|
|
||||||
<head>
|
|
||||||
<meta charset="utf-8" />
|
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
||||||
<title>pages.ztp_templates_tab — документация e-nms-qa-automation 0.1.0</title>
|
|
||||||
<link rel="stylesheet" type="text/css" href="../../_static/pygments.css?v=b86133f3" />
|
|
||||||
<link rel="stylesheet" type="text/css" href="../../_static/css/theme.css?v=e59714d7" />
|
|
||||||
|
|
||||||
|
|
||||||
<script src="../../_static/jquery.js?v=5d32c60e"></script>
|
|
||||||
<script src="../../_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script>
|
|
||||||
<script src="../../_static/documentation_options.js?v=6ff560e8"></script>
|
|
||||||
<script src="../../_static/doctools.js?v=9bcbadda"></script>
|
|
||||||
<script src="../../_static/sphinx_highlight.js?v=dc90522c"></script>
|
|
||||||
<script src="../../_static/translations.js?v=cd1d70c9"></script>
|
|
||||||
<script src="../../_static/js/theme.js"></script>
|
|
||||||
<link rel="index" title="Алфавитный указатель" href="../../genindex.html" />
|
|
||||||
<link rel="search" title="Поиск" href="../../search.html" />
|
|
||||||
</head>
|
|
||||||
|
|
||||||
<body class="wy-body-for-nav">
|
|
||||||
<div class="wy-grid-for-nav">
|
|
||||||
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
|
|
||||||
<div class="wy-side-scroll">
|
|
||||||
<div class="wy-side-nav-search" >
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<a href="../../index.html" class="icon icon-home">
|
|
||||||
e-nms-qa-automation
|
|
||||||
</a>
|
|
||||||
<div role="search">
|
|
||||||
<form id="rtd-search-form" class="wy-form" action="../../search.html" method="get">
|
|
||||||
<input type="text" name="q" placeholder="Поиск в документации" aria-label="Поиск в документации" />
|
|
||||||
<input type="hidden" name="check_keywords" value="yes" />
|
|
||||||
<input type="hidden" name="area" value="default" />
|
|
||||||
</form>
|
|
||||||
</div>
|
|
||||||
</div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Меню навигации">
|
|
||||||
<!-- Local TOC -->
|
|
||||||
<div class="local-toc"></div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</nav>
|
|
||||||
|
|
||||||
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Меню навигации для мобильных устройств" >
|
|
||||||
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
|
|
||||||
<a href="../../index.html">e-nms-qa-automation</a>
|
|
||||||
</nav>
|
|
||||||
|
|
||||||
<div class="wy-nav-content">
|
|
||||||
<div class="rst-content">
|
|
||||||
<div role="navigation" aria-label="Навигация по страницам">
|
|
||||||
<ul class="wy-breadcrumbs">
|
|
||||||
<li><a href="../../index.html" class="icon icon-home" aria-label="Home"></a></li>
|
|
||||||
<li class="breadcrumb-item"><a href="../index.html">Код модуля</a></li>
|
|
||||||
<li class="breadcrumb-item active">pages.ztp_templates_tab</li>
|
|
||||||
<li class="wy-breadcrumbs-aside">
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
<hr/>
|
|
||||||
</div>
|
|
||||||
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
|
|
||||||
<div itemprop="articleBody">
|
|
||||||
|
|
||||||
<h1>Исходный код pages.ztp_templates_tab</h1><div class="highlight"><pre>
|
|
||||||
<span></span><span class="sd">"""Модуль вкладки 'Шаблоны' в модуле Zero Touch Provisioning.</span>
|
|
||||||
|
|
||||||
<span class="sd">Содержит класс ZTPTemplatesTab для работы с таблицей шаблонов.</span>
|
|
||||||
<span class="sd">Позволяет проверять состояние и взаимодействовать с элементами вкладки.</span>
|
|
||||||
<span class="sd">"""</span>
|
|
||||||
|
|
||||||
<span class="kn">from</span><span class="w"> </span><span class="nn">playwright.sync_api</span><span class="w"> </span><span class="kn">import</span> <span class="n">Page</span>
|
|
||||||
<span class="kn">from</span><span class="w"> </span><span class="nn">tools.logger</span><span class="w"> </span><span class="kn">import</span> <span class="n">get_logger</span>
|
|
||||||
<span class="kn">from</span><span class="w"> </span><span class="nn">locators.table_locators</span><span class="w"> </span><span class="kn">import</span> <span class="n">TableLocators</span>
|
|
||||||
<span class="kn">from</span><span class="w"> </span><span class="nn">locators.modal_window_locators</span><span class="w"> </span><span class="kn">import</span> <span class="n">ModalWindowLocators</span>
|
|
||||||
<span class="kn">from</span><span class="w"> </span><span class="nn">components_derived.modal_view_ztp_template</span><span class="w"> </span><span class="kn">import</span> <span class="n">ViewZTPTemplateModalWindow</span>
|
|
||||||
<span class="kn">from</span><span class="w"> </span><span class="nn">components.modal_window_component</span><span class="w"> </span><span class="kn">import</span> <span class="n">ModalWindowComponent</span>
|
|
||||||
<span class="kn">from</span><span class="w"> </span><span class="nn">components.toolbar_component</span><span class="w"> </span><span class="kn">import</span> <span class="n">ToolbarComponent</span>
|
|
||||||
<span class="kn">from</span><span class="w"> </span><span class="nn">components.table_component</span><span class="w"> </span><span class="kn">import</span> <span class="n">TableComponent</span>
|
|
||||||
<span class="kn">from</span><span class="w"> </span><span class="nn">pages.base_page</span><span class="w"> </span><span class="kn">import</span> <span class="n">BasePage</span>
|
|
||||||
|
|
||||||
<span class="n">logger</span> <span class="o">=</span> <span class="n">get_logger</span><span class="p">(</span><span class="s2">"ZTP_TEMPLATES_TAB"</span><span class="p">)</span>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="ZTPTemplatesTab">
|
|
||||||
<a class="viewcode-back" href="../../pages.html#pages.ztp_templates_tab.ZTPTemplatesTab">[документация]</a>
|
|
||||||
<span class="k">class</span><span class="w"> </span><span class="nc">ZTPTemplatesTab</span><span class="p">(</span><span class="n">BasePage</span><span class="p">):</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Класс для работы с вкладкой 'Шаблоны' в модуле Zero Touch Provisioning.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Предоставляет методы для взаимодействия с таблицей шаблонов, модальными окнами</span>
|
|
||||||
<span class="sd"> и проверки состояния элементов интерфейса. Включает функциональность для:</span>
|
|
||||||
<span class="sd"> - Работы с таблицей шаблонов (прокрутка, проверка строк, выделение)</span>
|
|
||||||
<span class="sd"> - Управления модальными окнами просмотра шаблонов</span>
|
|
||||||
<span class="sd"> - Сравнения данных UI с API ответами</span>
|
|
||||||
|
|
||||||
<span class="sd"> Args:</span>
|
|
||||||
<span class="sd"> page (Page): Экземпляр страницы Playwright.</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="ZTPTemplatesTab.__init__">
|
|
||||||
<a class="viewcode-back" href="../../pages.html#pages.ztp_templates_tab.ZTPTemplatesTab.__init__">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">page</span><span class="p">:</span> <span class="n">Page</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Инициализирует компоненты вкладки 'Шаблоны'."""</span>
|
|
||||||
<span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="fm">__init__</span><span class="p">(</span><span class="n">page</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">toolbar</span> <span class="o">=</span> <span class="n">ToolbarComponent</span><span class="p">(</span><span class="n">page</span><span class="p">,</span> <span class="s2">"Шаблоны"</span><span class="p">)</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">ztp_templates_table</span> <span class="o">=</span> <span class="n">TableComponent</span><span class="p">(</span><span class="n">page</span><span class="p">)</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">modal_windows</span> <span class="o">=</span> <span class="p">{}</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="ZTPTemplatesTab.add_modal_window">
|
|
||||||
<a class="viewcode-back" href="../../pages.html#pages.ztp_templates_tab.ZTPTemplatesTab.add_modal_window">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">add_modal_window</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">title</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Добавляет модальное окно в коллекцию.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Args:</span>
|
|
||||||
<span class="sd"> title: Заголовок окна.</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">modal_windows</span><span class="p">[</span><span class="n">title</span><span class="p">]</span> <span class="o">=</span> <span class="n">ViewZTPTemplateModalWindow</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">page</span><span class="p">,</span> <span class="n">title</span><span class="p">)</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="ZTPTemplatesTab.get_modal_window">
|
|
||||||
<a class="viewcode-back" href="../../pages.html#pages.ztp_templates_tab.ZTPTemplatesTab.get_modal_window">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">get_modal_window</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">title</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="n">ViewZTPTemplateModalWindow</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Возвращает модальное окно по заголовку.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Args:</span>
|
|
||||||
<span class="sd"> title: Заголовок окна.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Returns:</span>
|
|
||||||
<span class="sd"> ViewZTPTemplateModalWindow: Экземпляр модального окна шаблона.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Raises:</span>
|
|
||||||
<span class="sd"> AssertionError: Если окно не найдено.</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
<span class="n">modal_window</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">modal_windows</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">title</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="k">if</span> <span class="n">modal_window</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="k">assert</span> <span class="kc">False</span><span class="p">,</span> <span class="sa">f</span><span class="s2">"Modal window with title '</span><span class="si">{</span><span class="n">title</span><span class="si">}</span><span class="s2">' not found"</span>
|
|
||||||
<span class="k">return</span> <span class="n">modal_window</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="ZTPTemplatesTab.delete_modal_window">
|
|
||||||
<a class="viewcode-back" href="../../pages.html#pages.ztp_templates_tab.ZTPTemplatesTab.delete_modal_window">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">delete_modal_window</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">title</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Удаляет модальное окно из коллекции.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Args:</span>
|
|
||||||
<span class="sd"> title: Заголовок окна.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Raises:</span>
|
|
||||||
<span class="sd"> AssertionError: Если окно не найдено.</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">modal_windows</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">title</span><span class="p">)</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="k">assert</span> <span class="kc">False</span><span class="p">,</span> <span class="sa">f</span><span class="s2">"Modal window with title '</span><span class="si">{</span><span class="n">title</span><span class="si">}</span><span class="s2">' not found"</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">modal_windows</span><span class="p">[</span><span class="n">title</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="ZTPTemplatesTab.open_template_modal_by_index">
|
|
||||||
<a class="viewcode-back" href="../../pages.html#pages.ztp_templates_tab.ZTPTemplatesTab.open_template_modal_by_index">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">open_template_modal_by_index</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">row_index</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">0</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Открывает модальное окно шаблона по клику на строку таблицы.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Args:</span>
|
|
||||||
<span class="sd"> row_index: Индекс строки для клика (по умолчанию 0 - первая строка).</span>
|
|
||||||
|
|
||||||
<span class="sd"> Returns:</span>
|
|
||||||
<span class="sd"> str: Имя шаблона.</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
<span class="n">row_locator</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">ztp_templates_table</span><span class="o">.</span><span class="n">get_row_locator</span><span class="p">(</span>
|
|
||||||
<span class="n">TableLocators</span><span class="o">.</span><span class="n">TABLE_WORK_AREA</span><span class="p">,</span> <span class="n">row_index</span>
|
|
||||||
<span class="p">)</span>
|
|
||||||
<span class="n">row_locator</span><span class="o">.</span><span class="n">click</span><span class="p">()</span>
|
|
||||||
|
|
||||||
<span class="c1"># Создаем временный экземпляр модального окна для получения заголовка</span>
|
|
||||||
<span class="n">temp_modal</span> <span class="o">=</span> <span class="n">ViewZTPTemplateModalWindow</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">page</span><span class="p">,</span> <span class="s2">""</span><span class="p">)</span>
|
|
||||||
<span class="n">title</span> <span class="o">=</span> <span class="n">temp_modal</span><span class="o">.</span><span class="n">toolbar</span><span class="o">.</span><span class="n">get_toolbar_title_text</span><span class="p">(</span>
|
|
||||||
<span class="n">ModalWindowLocators</span><span class="o">.</span><span class="n">MODAL_WINDOW_TITLE</span>
|
|
||||||
<span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="c1"># Добавляем модальное окно в коллекцию после открытия</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">add_modal_window</span><span class="p">(</span><span class="n">title</span><span class="p">)</span>
|
|
||||||
<span class="k">return</span> <span class="n">title</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="ZTPTemplatesTab.close_modal_window_by_toolbar_button">
|
|
||||||
<a class="viewcode-back" href="../../pages.html#pages.ztp_templates_tab.ZTPTemplatesTab.close_modal_window_by_toolbar_button">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">close_modal_window_by_toolbar_button</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">title</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Закрывает модальное окно через кнопку в тулбаре.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Args:</span>
|
|
||||||
<span class="sd"> title: Заголовок окна.</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
<span class="n">modal_window</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_modal_window</span><span class="p">(</span><span class="n">title</span><span class="p">)</span>
|
|
||||||
<span class="n">modal_window</span><span class="o">.</span><span class="n">close_window_by_toolbar_button</span><span class="p">()</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">delete_modal_window</span><span class="p">(</span><span class="n">title</span><span class="p">)</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="ZTPTemplatesTab.close_modal_window">
|
|
||||||
<a class="viewcode-back" href="../../pages.html#pages.ztp_templates_tab.ZTPTemplatesTab.close_modal_window">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">close_modal_window</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">title</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Закрывает модальное окно через кнопку 'Закрыть'.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Args:</span>
|
|
||||||
<span class="sd"> title: Заголовок окна.</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
<span class="n">modal_window</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_modal_window</span><span class="p">(</span><span class="n">title</span><span class="p">)</span>
|
|
||||||
<span class="n">modal_window</span><span class="o">.</span><span class="n">close_window</span><span class="p">()</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">delete_modal_window</span><span class="p">(</span><span class="n">title</span><span class="p">)</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="ZTPTemplatesTab.get_rows_count">
|
|
||||||
<a class="viewcode-back" href="../../pages.html#pages.ztp_templates_tab.ZTPTemplatesTab.get_rows_count">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">get_rows_count</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">int</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Возвращает количество строк в таблице (без заголовка).</span>
|
|
||||||
|
|
||||||
<span class="sd"> Returns:</span>
|
|
||||||
<span class="sd"> int: Количество строк с данными.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Raises:</span>
|
|
||||||
<span class="sd"> AssertionError: Если таблица пуста.</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">ztp_templates_table</span><span class="o">.</span><span class="n">get_rows_count</span><span class="p">(</span><span class="n">TableLocators</span><span class="o">.</span><span class="n">TABLE_WORK_AREA</span><span class="p">)</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="ZTPTemplatesTab.scroll_templates_table_up">
|
|
||||||
<a class="viewcode-back" href="../../pages.html#pages.ztp_templates_tab.ZTPTemplatesTab.scroll_templates_table_up">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">scroll_templates_table_up</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Прокручивает таблицу шаблонов вверх."""</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">ztp_templates_table</span><span class="o">.</span><span class="n">scroll_up</span><span class="p">(</span><span class="n">TableLocators</span><span class="o">.</span><span class="n">TABLE_SCROLL_CONTAINER</span><span class="p">)</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="ZTPTemplatesTab.scroll_templates_table_down">
|
|
||||||
<a class="viewcode-back" href="../../pages.html#pages.ztp_templates_tab.ZTPTemplatesTab.scroll_templates_table_down">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">scroll_templates_table_down</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Прокручивает таблицу шаблонов вниз."""</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">ztp_templates_table</span><span class="o">.</span><span class="n">scroll_down</span><span class="p">(</span><span class="n">TableLocators</span><span class="o">.</span><span class="n">TABLE_SCROLL_CONTAINER</span><span class="p">)</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="ZTPTemplatesTab.scroll_modal_up">
|
|
||||||
<a class="viewcode-back" href="../../pages.html#pages.ztp_templates_tab.ZTPTemplatesTab.scroll_modal_up">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">scroll_modal_up</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Прокручивает содержимое модального окна вверх."""</span>
|
|
||||||
<span class="n">temp_modal</span> <span class="o">=</span> <span class="n">ModalWindowComponent</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">page</span><span class="p">)</span>
|
|
||||||
<span class="n">temp_modal</span><span class="o">.</span><span class="n">scroll_window_up</span><span class="p">()</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="ZTPTemplatesTab.scroll_modal_down">
|
|
||||||
<a class="viewcode-back" href="../../pages.html#pages.ztp_templates_tab.ZTPTemplatesTab.scroll_modal_down">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">scroll_modal_down</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Прокручивает содержимое модального окна вниз."""</span>
|
|
||||||
<span class="n">temp_modal</span> <span class="o">=</span> <span class="n">ModalWindowComponent</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">page</span><span class="p">)</span>
|
|
||||||
<span class="n">temp_modal</span><span class="o">.</span><span class="n">scroll_window_down</span><span class="p">()</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="ZTPTemplatesTab.check_ztp_templates_modal_content">
|
|
||||||
<a class="viewcode-back" href="../../pages.html#pages.ztp_templates_tab.ZTPTemplatesTab.check_ztp_templates_modal_content">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">check_ztp_templates_modal_content</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">title</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Проверяет наличие и корректность элементов модального окна шаблона.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Args:</span>
|
|
||||||
<span class="sd"> title: Имя шаблона для проверки заголовка окна.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Raises:</span>
|
|
||||||
<span class="sd"> AssertionError: Если элементы окна некорректны.</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
<span class="n">modal_window</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_modal_window</span><span class="p">(</span><span class="n">title</span><span class="p">)</span>
|
|
||||||
<span class="n">modal_window</span><span class="o">.</span><span class="n">check_content</span><span class="p">()</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="ZTPTemplatesTab.check_ztp_templates_table_content">
|
|
||||||
<a class="viewcode-back" href="../../pages.html#pages.ztp_templates_tab.ZTPTemplatesTab.check_ztp_templates_table_content">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">check_ztp_templates_table_content</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Проверяет содержимое таблицы шаблонов.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Проверяет заголовки и наличие данных в таблице.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Raises:</span>
|
|
||||||
<span class="sd"> AssertionError: Если таблица пуста или заголовки неверны.</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
<span class="n">expected_headers</span> <span class="o">=</span> <span class="p">[</span>
|
|
||||||
<span class="s1">'Производитель'</span><span class="p">,</span>
|
|
||||||
<span class="s1">'vendorCode'</span><span class="p">,</span>
|
|
||||||
<span class="s1">'authentication'</span><span class="p">,</span>
|
|
||||||
<span class="s1">'deviceType'</span><span class="p">,</span>
|
|
||||||
<span class="s1">'authenticationOption'</span>
|
|
||||||
<span class="p">]</span>
|
|
||||||
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">ztp_templates_table</span><span class="o">.</span><span class="n">check_content</span><span class="p">(</span><span class="n">TableLocators</span><span class="o">.</span><span class="n">TABLE_WORK_AREA</span><span class="p">,</span> <span class="n">expected_headers</span><span class="p">)</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="ZTPTemplatesTab.check_templates_table_vertical_scrolling">
|
|
||||||
<a class="viewcode-back" href="../../pages.html#pages.ztp_templates_tab.ZTPTemplatesTab.check_templates_table_vertical_scrolling">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">check_templates_table_vertical_scrolling</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">bool</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Проверяет возможность вертикальной прокрутки таблицы.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Returns:</span>
|
|
||||||
<span class="sd"> bool: True если прокрутка возможна, иначе False.</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">ztp_templates_table</span><span class="o">.</span><span class="n">is_scrollable_vertically</span><span class="p">(</span>
|
|
||||||
<span class="n">TableLocators</span><span class="o">.</span><span class="n">TABLE_SCROLL_CONTAINER</span>
|
|
||||||
<span class="p">)</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="ZTPTemplatesTab.check_templates_table_first_row_visibility">
|
|
||||||
<a class="viewcode-back" href="../../pages.html#pages.ztp_templates_tab.ZTPTemplatesTab.check_templates_table_first_row_visibility">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">check_templates_table_first_row_visibility</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Проверяет видимость первой строки таблицы.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Raises:</span>
|
|
||||||
<span class="sd"> AssertionError: Если строка не видна.</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">ztp_templates_table</span><span class="o">.</span><span class="n">check_first_row_visibility</span><span class="p">(</span><span class="n">TableLocators</span><span class="o">.</span><span class="n">TABLE_WORK_AREA</span><span class="p">)</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="ZTPTemplatesTab.check_templates_table_last_row_visibility">
|
|
||||||
<a class="viewcode-back" href="../../pages.html#pages.ztp_templates_tab.ZTPTemplatesTab.check_templates_table_last_row_visibility">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">check_templates_table_last_row_visibility</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Проверяет видимость последней строки таблицы.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Raises:</span>
|
|
||||||
<span class="sd"> AssertionError: Если строка не видна.</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">ztp_templates_table</span><span class="o">.</span><span class="n">check_last_row_visibility</span><span class="p">(</span><span class="n">TableLocators</span><span class="o">.</span><span class="n">TABLE_WORK_AREA</span><span class="p">)</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="ZTPTemplatesTab.check_templates_table_row_highlighting">
|
|
||||||
<a class="viewcode-back" href="../../pages.html#pages.ztp_templates_tab.ZTPTemplatesTab.check_templates_table_row_highlighting">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">check_templates_table_row_highlighting</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">row_index</span><span class="p">:</span> <span class="nb">int</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Проверяет выделение указанной строки таблицы.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Args:</span>
|
|
||||||
<span class="sd"> row_index: Индекс проверяемой строки.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Raises:</span>
|
|
||||||
<span class="sd"> AssertionError: Если строка не выделена.</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">ztp_templates_table</span><span class="o">.</span><span class="n">check_row_highlighting</span><span class="p">(</span>
|
|
||||||
<span class="n">TableLocators</span><span class="o">.</span><span class="n">TABLE_WORK_AREA</span><span class="p">,</span> <span class="n">row_index</span>
|
|
||||||
<span class="p">)</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="ZTPTemplatesTab.should_be_toolbar">
|
|
||||||
<a class="viewcode-back" href="../../pages.html#pages.ztp_templates_tab.ZTPTemplatesTab.should_be_toolbar">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">should_be_toolbar</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Проверяет наличие тулбара на вкладке.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Raises:</span>
|
|
||||||
<span class="sd"> AssertionError: Если тулбар отсутствует.</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">toolbar</span><span class="o">.</span><span class="n">check_toolbar_presence</span><span class="p">(</span><span class="s2">"Toolbar is missing"</span><span class="p">)</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="ZTPTemplatesTab.should_be_templates_table">
|
|
||||||
<a class="viewcode-back" href="../../pages.html#pages.ztp_templates_tab.ZTPTemplatesTab.should_be_templates_table">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">should_be_templates_table</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Проверяет наличие таблицы шаблонов.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Raises:</span>
|
|
||||||
<span class="sd"> AssertionError: Если таблица отсутствует.</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">ztp_templates_table</span><span class="o">.</span><span class="n">check_visibility</span><span class="p">(</span>
|
|
||||||
<span class="n">TableLocators</span><span class="o">.</span><span class="n">TABLE_WORK_AREA</span><span class="p">,</span> <span class="s2">"Templates table is missing"</span>
|
|
||||||
<span class="p">)</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="ZTPTemplatesTab.should_be_modal_window">
|
|
||||||
<a class="viewcode-back" href="../../pages.html#pages.ztp_templates_tab.ZTPTemplatesTab.should_be_modal_window">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">should_be_modal_window</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Проверяет наличие модального окна.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Raises:</span>
|
|
||||||
<span class="sd"> AssertionError: Если модальное окно отсутствует.</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">ztp_templates_table</span><span class="o">.</span><span class="n">check_visibility</span><span class="p">(</span>
|
|
||||||
<span class="n">ModalWindowLocators</span><span class="o">.</span><span class="n">MODAL_WINDOW</span><span class="p">,</span> <span class="s2">"Modal window is not visible"</span>
|
|
||||||
<span class="p">)</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="ZTPTemplatesTab.should_not_be_modal_window">
|
|
||||||
<a class="viewcode-back" href="../../pages.html#pages.ztp_templates_tab.ZTPTemplatesTab.should_not_be_modal_window">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">should_not_be_modal_window</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Проверяет, что модальное окно отсутствует.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Raises:</span>
|
|
||||||
<span class="sd"> AssertionError: Если модальное окно все еще видно.</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
<span class="n">is_visible</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">page</span><span class="o">.</span><span class="n">locator</span><span class="p">(</span>
|
|
||||||
<span class="n">ModalWindowLocators</span><span class="o">.</span><span class="n">MODAL_WINDOW</span>
|
|
||||||
<span class="p">)</span><span class="o">.</span><span class="n">is_visible</span><span class="p">(</span><span class="n">timeout</span><span class="o">=</span><span class="mi">1000</span><span class="p">)</span>
|
|
||||||
<span class="k">if</span> <span class="n">is_visible</span><span class="p">:</span>
|
|
||||||
<span class="k">assert</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"Modal window should not be visible"</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="ZTPTemplatesTab.check_modal_vertical_scrolling">
|
|
||||||
<a class="viewcode-back" href="../../pages.html#pages.ztp_templates_tab.ZTPTemplatesTab.check_modal_vertical_scrolling">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">check_modal_vertical_scrolling</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">bool</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Проверяет возможность вертикального скроллинга в модальном окне.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Returns:</span>
|
|
||||||
<span class="sd"> bool: True если скроллинг возможен, иначе False.</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
<span class="n">temp_modal</span> <span class="o">=</span> <span class="n">ModalWindowComponent</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">page</span><span class="p">)</span>
|
|
||||||
<span class="k">return</span> <span class="n">temp_modal</span><span class="o">.</span><span class="n">check_window_vertical_scrolling</span><span class="p">()</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="ZTPTemplatesTab.verify_template_data_with_api">
|
|
||||||
<a class="viewcode-back" href="../../pages.html#pages.ztp_templates_tab.ZTPTemplatesTab.verify_template_data_with_api">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">verify_template_data_with_api</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">title</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Проверяет соответствие данных модального окна данным из API.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Процесс проверки:</span>
|
|
||||||
<span class="sd"> 1. Получает модальное окно по имени шаблона</span>
|
|
||||||
<span class="sd"> 2. Извлекает данные из полей ввода модального окна</span>
|
|
||||||
<span class="sd"> 3. Отправляет API запрос для получения эталонных данных шаблона</span>
|
|
||||||
<span class="sd"> 4. Сравнивает данные из UI с данными из API</span>
|
|
||||||
<span class="sd"> 5. Выбрасывает assertion при обнаружении расхождений</span>
|
|
||||||
|
|
||||||
<span class="sd"> Args:</span>
|
|
||||||
<span class="sd"> title: Имя шаблона для проверки (должно совпадать с id в API).</span>
|
|
||||||
|
|
||||||
<span class="sd"> Raises:</span>
|
|
||||||
<span class="sd"> AssertionError: Если:</span>
|
|
||||||
<span class="sd"> - Модальное окно не найдено</span>
|
|
||||||
<span class="sd"> - API запрос завершился с ошибкой (status != 200)</span>
|
|
||||||
<span class="sd"> - Обнаружены расхождения между данными UI и API</span>
|
|
||||||
<span class="sd"> - Имя шаблона в модальном окне не соответствует ожидаемому</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
<span class="c1"># Получаем модальное окно</span>
|
|
||||||
<span class="n">modal_window</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_modal_window</span><span class="p">(</span><span class="n">title</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="c1"># Читаем данные модального окна</span>
|
|
||||||
<span class="n">actual_data</span> <span class="o">=</span> <span class="n">modal_window</span><span class="o">.</span><span class="n">get_modal_window_data</span><span class="p">()</span>
|
|
||||||
|
|
||||||
<span class="c1"># Читаем данные из API</span>
|
|
||||||
<span class="n">encoded_title</span> <span class="o">=</span> <span class="n">title</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="s2">" "</span><span class="p">,</span> <span class="s2">"%20"</span><span class="p">)</span>
|
|
||||||
<span class="n">url</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"e-nms/DHCP/showOptPattern?template=</span><span class="si">{</span><span class="n">encoded_title</span><span class="si">}</span><span class="s2">"</span>
|
|
||||||
<span class="n">response</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">send_get_api_request</span><span class="p">(</span><span class="n">url</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="c1"># Проверяем статус ответа</span>
|
|
||||||
<span class="k">if</span> <span class="n">response</span><span class="o">.</span><span class="n">status</span> <span class="o">!=</span> <span class="mi">200</span><span class="p">:</span>
|
|
||||||
<span class="n">logger</span><span class="o">.</span><span class="n">error</span><span class="p">(</span><span class="s2">"API request failed with status: </span><span class="si">%s</span><span class="s2">"</span><span class="p">,</span> <span class="n">response</span><span class="o">.</span><span class="n">status</span><span class="p">)</span>
|
|
||||||
<span class="k">assert</span> <span class="kc">False</span><span class="p">,</span> <span class="sa">f</span><span class="s2">"API request failed with status: </span><span class="si">{</span><span class="n">response</span><span class="o">.</span><span class="n">status</span><span class="si">}</span><span class="s2">"</span>
|
|
||||||
|
|
||||||
<span class="c1"># Извлекаем данные из ответа</span>
|
|
||||||
<span class="n">response_data</span> <span class="o">=</span> <span class="n">response</span><span class="o">.</span><span class="n">json</span><span class="p">()</span>
|
|
||||||
<span class="n">template_data</span> <span class="o">=</span> <span class="n">response_data</span><span class="p">[</span><span class="s1">'data'</span><span class="p">]</span>
|
|
||||||
|
|
||||||
<span class="c1"># Сравниваем actual_data с данными конкретного шаблона</span>
|
|
||||||
<span class="n">modal_window</span><span class="o">.</span><span class="n">compare_modal_with_api_data</span><span class="p">(</span><span class="n">actual_data</span><span class="p">,</span> <span class="n">template_data</span><span class="p">,</span> <span class="n">title</span><span class="p">)</span></div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</pre></div>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<footer>
|
|
||||||
|
|
||||||
<hr/>
|
|
||||||
|
|
||||||
<div role="contentinfo">
|
|
||||||
<p>© Авторские права 2025, NPO KIS. </p>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
Собрано при помощи <a href="https://www.sphinx-doc.org/">Sphinx</a> с использованием
|
|
||||||
<a href="https://github.com/readthedocs/sphinx_rtd_theme">темы,</a>
|
|
||||||
предоставленной <a href="https://readthedocs.org">Read the Docs</a>.
|
|
||||||
|
|
||||||
|
|
||||||
</footer>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</section>
|
|
||||||
</div>
|
|
||||||
<script>
|
|
||||||
jQuery(function () {
|
|
||||||
SphinxRtdTheme.Navigation.enable(true);
|
|
||||||
});
|
|
||||||
</script>
|
|
||||||
|
|
||||||
</body>
|
|
||||||
</html>
|
|
||||||
|
|
@ -1,287 +0,0 @@
|
||||||
|
|
||||||
|
|
||||||
<!DOCTYPE html>
|
|
||||||
<html class="writer-html5" lang="ru" data-content_root="../../">
|
|
||||||
<head>
|
|
||||||
<meta charset="utf-8" />
|
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
||||||
<title>tools.fix_python_project — документация e-nms-qa-automation 0.1.0</title>
|
|
||||||
<link rel="stylesheet" type="text/css" href="../../_static/pygments.css?v=b86133f3" />
|
|
||||||
<link rel="stylesheet" type="text/css" href="../../_static/css/theme.css?v=e59714d7" />
|
|
||||||
|
|
||||||
|
|
||||||
<script src="../../_static/jquery.js?v=5d32c60e"></script>
|
|
||||||
<script src="../../_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script>
|
|
||||||
<script src="../../_static/documentation_options.js?v=6ff560e8"></script>
|
|
||||||
<script src="../../_static/doctools.js?v=9bcbadda"></script>
|
|
||||||
<script src="../../_static/sphinx_highlight.js?v=dc90522c"></script>
|
|
||||||
<script src="../../_static/translations.js?v=cd1d70c9"></script>
|
|
||||||
<script src="../../_static/js/theme.js"></script>
|
|
||||||
<link rel="index" title="Алфавитный указатель" href="../../genindex.html" />
|
|
||||||
<link rel="search" title="Поиск" href="../../search.html" />
|
|
||||||
</head>
|
|
||||||
|
|
||||||
<body class="wy-body-for-nav">
|
|
||||||
<div class="wy-grid-for-nav">
|
|
||||||
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
|
|
||||||
<div class="wy-side-scroll">
|
|
||||||
<div class="wy-side-nav-search" >
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<a href="../../index.html" class="icon icon-home">
|
|
||||||
e-nms-qa-automation
|
|
||||||
</a>
|
|
||||||
<div role="search">
|
|
||||||
<form id="rtd-search-form" class="wy-form" action="../../search.html" method="get">
|
|
||||||
<input type="text" name="q" placeholder="Поиск в документации" aria-label="Поиск в документации" />
|
|
||||||
<input type="hidden" name="check_keywords" value="yes" />
|
|
||||||
<input type="hidden" name="area" value="default" />
|
|
||||||
</form>
|
|
||||||
</div>
|
|
||||||
</div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Меню навигации">
|
|
||||||
<!-- Local TOC -->
|
|
||||||
<div class="local-toc"></div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</nav>
|
|
||||||
|
|
||||||
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Меню навигации для мобильных устройств" >
|
|
||||||
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
|
|
||||||
<a href="../../index.html">e-nms-qa-automation</a>
|
|
||||||
</nav>
|
|
||||||
|
|
||||||
<div class="wy-nav-content">
|
|
||||||
<div class="rst-content">
|
|
||||||
<div role="navigation" aria-label="Навигация по страницам">
|
|
||||||
<ul class="wy-breadcrumbs">
|
|
||||||
<li><a href="../../index.html" class="icon icon-home" aria-label="Home"></a></li>
|
|
||||||
<li class="breadcrumb-item"><a href="../index.html">Код модуля</a></li>
|
|
||||||
<li class="breadcrumb-item active">tools.fix_python_project</li>
|
|
||||||
<li class="wy-breadcrumbs-aside">
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
<hr/>
|
|
||||||
</div>
|
|
||||||
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
|
|
||||||
<div itemprop="articleBody">
|
|
||||||
|
|
||||||
<h1>Исходный код tools.fix_python_project</h1><div class="highlight"><pre>
|
|
||||||
<span></span><span class="ch">#!/usr/bin/env python3</span>
|
|
||||||
<span class="sd">"""Модуль исправления структуры Python-проекта.</span>
|
|
||||||
|
|
||||||
<span class="sd">Автоматически выполняет:</span>
|
|
||||||
<span class="sd">1. Удаление BOM-маркеров из файлов</span>
|
|
||||||
<span class="sd">2. Создание недостающих __init__.py</span>
|
|
||||||
<span class="sd">3. Логирование всех операций</span>
|
|
||||||
|
|
||||||
<span class="sd">Использование: python fix_python_project.py [путь_к_проекту]</span>
|
|
||||||
<span class="sd">"""</span>
|
|
||||||
|
|
||||||
<span class="kn">import</span><span class="w"> </span><span class="nn">os</span>
|
|
||||||
<span class="kn">import</span><span class="w"> </span><span class="nn">sys</span>
|
|
||||||
<span class="kn">from</span><span class="w"> </span><span class="nn">typing</span><span class="w"> </span><span class="kn">import</span> <span class="n">List</span><span class="p">,</span> <span class="n">Set</span>
|
|
||||||
|
|
||||||
|
|
||||||
<span class="c1"># Настройки обработки проекта</span>
|
|
||||||
<span class="n">INIT_IGNORED_DIRS</span><span class="p">:</span> <span class="n">Set</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="p">{</span><span class="s1">'tests'</span><span class="p">,</span> <span class="s1">'.git'</span><span class="p">,</span> <span class="s1">'__pycache__'</span><span class="p">,</span> <span class="s1">'venv'</span><span class="p">,</span> <span class="s1">'env'</span><span class="p">,</span> <span class="s1">'.idea'</span><span class="p">,</span> <span class="s1">'.vscode'</span><span class="p">}</span>
|
|
||||||
<span class="n">TARGET_EXTENSIONS</span><span class="p">:</span> <span class="nb">tuple</span> <span class="o">=</span> <span class="p">(</span><span class="s1">'.py'</span><span class="p">,</span> <span class="s1">'.json'</span><span class="p">,</span> <span class="s1">'.txt'</span><span class="p">)</span>
|
|
||||||
<span class="n">INIT_TEMPLATE</span><span class="p">:</span> <span class="nb">str</span> <span class="o">=</span> <span class="s2">"""# Auto-generated by fix_python_project.py</span>
|
|
||||||
<span class="se">\"\"\"</span><span class="s2">Package initialization.</span><span class="se">\"\"\"</span>
|
|
||||||
<span class="s2">"""</span>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="ProjectFixer">
|
|
||||||
<a class="viewcode-back" href="../../tools.html#tools.fix_python_project.ProjectFixer">[документация]</a>
|
|
||||||
<span class="k">class</span><span class="w"> </span><span class="nc">ProjectFixer</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Исправляет структуру Python-проекта.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Атрибуты:</span>
|
|
||||||
<span class="sd"> root_dir: Корневая директория проекта.</span>
|
|
||||||
<span class="sd"> log: Лог выполненных операций.</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="ProjectFixer.__init__">
|
|
||||||
<a class="viewcode-back" href="../../tools.html#tools.fix_python_project.ProjectFixer.__init__">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">root_dir</span><span class="p">:</span> <span class="nb">str</span> <span class="o">=</span> <span class="s1">'.'</span><span class="p">):</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Инициализирует экземпляр ProjectFixer.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Args:</span>
|
|
||||||
<span class="sd"> root_dir: Корневая директория проекта. По умолчанию '.'.</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">root_dir</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">abspath</span><span class="p">(</span><span class="n">root_dir</span><span class="p">)</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">log</span><span class="p">:</span> <span class="n">List</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="p">[]</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="ProjectFixer.remove_bom">
|
|
||||||
<a class="viewcode-back" href="../../tools.html#tools.fix_python_project.ProjectFixer.remove_bom">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">remove_bom</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">filepath</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="nb">bool</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Удаляет BOM-маркер из файла.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Args:</span>
|
|
||||||
<span class="sd"> filepath: Путь к файлу.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Returns:</span>
|
|
||||||
<span class="sd"> bool: True если BOM был удалён.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Raises:</span>
|
|
||||||
<span class="sd"> Exception: При ошибке чтения/записи.</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
|
|
||||||
<span class="k">try</span><span class="p">:</span>
|
|
||||||
<span class="k">with</span> <span class="nb">open</span><span class="p">(</span><span class="n">filepath</span><span class="p">,</span> <span class="s1">'rb'</span><span class="p">)</span> <span class="k">as</span> <span class="n">f</span><span class="p">:</span>
|
|
||||||
<span class="n">content</span> <span class="o">=</span> <span class="n">f</span><span class="o">.</span><span class="n">read</span><span class="p">()</span>
|
|
||||||
|
|
||||||
<span class="k">if</span> <span class="n">content</span><span class="o">.</span><span class="n">startswith</span><span class="p">(</span><span class="sa">b</span><span class="s1">'</span><span class="se">\xEF\xBB\xBF</span><span class="s1">'</span><span class="p">):</span>
|
|
||||||
<span class="k">with</span> <span class="nb">open</span><span class="p">(</span><span class="n">filepath</span><span class="p">,</span> <span class="s1">'wb'</span><span class="p">)</span> <span class="k">as</span> <span class="n">f</span><span class="p">:</span>
|
|
||||||
<span class="n">f</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="n">content</span><span class="p">[</span><span class="mi">3</span><span class="p">:])</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">log</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="sa">f</span><span class="s2">"REMOVED BOM: </span><span class="si">{</span><span class="n">filepath</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span>
|
|
||||||
<span class="k">return</span> <span class="kc">True</span>
|
|
||||||
<span class="k">except</span> <span class="ne">Exception</span> <span class="k">as</span> <span class="n">e</span><span class="p">:</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">log</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="sa">f</span><span class="s2">"ERROR processing </span><span class="si">{</span><span class="n">filepath</span><span class="si">}</span><span class="s2">: </span><span class="si">{</span><span class="nb">str</span><span class="p">(</span><span class="n">e</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span>
|
|
||||||
<span class="k">return</span> <span class="kc">False</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="ProjectFixer.should_skip_init">
|
|
||||||
<a class="viewcode-back" href="../../tools.html#tools.fix_python_project.ProjectFixer.should_skip_init">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">should_skip_init</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">dir_path</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="nb">bool</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Проверяет нужно ли пропустить директорию.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Args:</span>
|
|
||||||
<span class="sd"> dir_path: Путь к директории.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Returns:</span>
|
|
||||||
<span class="sd"> bool: True если директорию нужно пропустить.</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
|
|
||||||
<span class="n">dir_name</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">basename</span><span class="p">(</span><span class="n">dir_path</span><span class="p">)</span>
|
|
||||||
<span class="k">return</span> <span class="p">(</span><span class="n">dir_name</span> <span class="ow">in</span> <span class="n">INIT_IGNORED_DIRS</span> <span class="ow">or</span>
|
|
||||||
<span class="n">dir_name</span><span class="o">.</span><span class="n">startswith</span><span class="p">(</span><span class="s1">'.'</span><span class="p">))</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="ProjectFixer.needs_init_py">
|
|
||||||
<a class="viewcode-back" href="../../tools.html#tools.fix_python_project.ProjectFixer.needs_init_py">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">needs_init_py</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">dir_path</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="nb">bool</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Проверяет нужно ли создать __init__.py.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Args:</span>
|
|
||||||
<span class="sd"> dir_path: Путь к директории.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Returns:</span>
|
|
||||||
<span class="sd"> bool: True если __init__.py требуется.</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
|
|
||||||
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">should_skip_init</span><span class="p">(</span><span class="n">dir_path</span><span class="p">):</span>
|
|
||||||
<span class="k">return</span> <span class="kc">False</span>
|
|
||||||
|
|
||||||
<span class="k">try</span><span class="p">:</span>
|
|
||||||
<span class="n">items</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">listdir</span><span class="p">(</span><span class="n">dir_path</span><span class="p">)</span>
|
|
||||||
<span class="n">has_py_files</span> <span class="o">=</span> <span class="nb">any</span><span class="p">(</span><span class="n">f</span><span class="o">.</span><span class="n">endswith</span><span class="p">(</span><span class="s1">'.py'</span><span class="p">)</span> <span class="ow">and</span> <span class="n">f</span> <span class="o">!=</span> <span class="s1">'__init__.py'</span> <span class="k">for</span> <span class="n">f</span> <span class="ow">in</span> <span class="n">items</span><span class="p">)</span>
|
|
||||||
<span class="n">has_init</span> <span class="o">=</span> <span class="s1">'__init__.py'</span> <span class="ow">in</span> <span class="n">items</span>
|
|
||||||
<span class="k">return</span> <span class="n">has_py_files</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">has_init</span>
|
|
||||||
<span class="k">except</span> <span class="ne">Exception</span><span class="p">:</span>
|
|
||||||
<span class="k">return</span> <span class="kc">False</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="ProjectFixer.create_init_py">
|
|
||||||
<a class="viewcode-back" href="../../tools.html#tools.fix_python_project.ProjectFixer.create_init_py">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">create_init_py</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">dir_path</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="nb">bool</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Создаёт файл __init__.py.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Args:</span>
|
|
||||||
<span class="sd"> dir_path: Путь к директории.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Returns:</span>
|
|
||||||
<span class="sd"> bool: True если файл создан.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Raises:</span>
|
|
||||||
<span class="sd"> Exception: При ошибке создания.</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
|
|
||||||
<span class="n">init_path</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">dir_path</span><span class="p">,</span> <span class="s1">'__init__.py'</span><span class="p">)</span>
|
|
||||||
<span class="k">try</span><span class="p">:</span>
|
|
||||||
<span class="k">with</span> <span class="nb">open</span><span class="p">(</span><span class="n">init_path</span><span class="p">,</span> <span class="s1">'w'</span><span class="p">,</span> <span class="n">encoding</span><span class="o">=</span><span class="s1">'utf-8'</span><span class="p">)</span> <span class="k">as</span> <span class="n">f</span><span class="p">:</span>
|
|
||||||
<span class="n">f</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="n">INIT_TEMPLATE</span><span class="p">)</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">log</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="sa">f</span><span class="s2">"CREATED INIT: </span><span class="si">{</span><span class="n">init_path</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span>
|
|
||||||
<span class="k">return</span> <span class="kc">True</span>
|
|
||||||
<span class="k">except</span> <span class="ne">Exception</span> <span class="k">as</span> <span class="n">e</span><span class="p">:</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">log</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="sa">f</span><span class="s2">"ERROR creating </span><span class="si">{</span><span class="n">init_path</span><span class="si">}</span><span class="s2">: </span><span class="si">{</span><span class="nb">str</span><span class="p">(</span><span class="n">e</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span>
|
|
||||||
<span class="k">return</span> <span class="kc">False</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="ProjectFixer.process_directory">
|
|
||||||
<a class="viewcode-back" href="../../tools.html#tools.fix_python_project.ProjectFixer.process_directory">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">process_directory</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Рекурсивно обрабатывает проект."""</span>
|
|
||||||
|
|
||||||
<span class="k">for</span> <span class="n">root</span><span class="p">,</span> <span class="n">dirs</span><span class="p">,</span> <span class="n">files</span> <span class="ow">in</span> <span class="n">os</span><span class="o">.</span><span class="n">walk</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">root_dir</span><span class="p">):</span>
|
|
||||||
<span class="c1"># Обработка файлов с целевыми расширениями</span>
|
|
||||||
<span class="k">for</span> <span class="n">file</span> <span class="ow">in</span> <span class="n">files</span><span class="p">:</span>
|
|
||||||
<span class="k">if</span> <span class="n">file</span><span class="o">.</span><span class="n">endswith</span><span class="p">(</span><span class="n">TARGET_EXTENSIONS</span><span class="p">):</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">remove_bom</span><span class="p">(</span><span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">root</span><span class="p">,</span> <span class="n">file</span><span class="p">))</span>
|
|
||||||
|
|
||||||
<span class="c1"># Создание __init__.py где это необходимо</span>
|
|
||||||
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">needs_init_py</span><span class="p">(</span><span class="n">root</span><span class="p">):</span>
|
|
||||||
<span class="bp">self</span><span class="o">.</span><span class="n">create_init_py</span><span class="p">(</span><span class="n">root</span><span class="p">)</span></div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="ProjectFixer.save_log">
|
|
||||||
<a class="viewcode-back" href="../../tools.html#tools.fix_python_project.ProjectFixer.save_log">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">save_log</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">log_file</span><span class="p">:</span> <span class="nb">str</span> <span class="o">=</span> <span class="s1">'project_fix.log'</span><span class="p">):</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Сохраняет лог операций в файл.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Args:</span>
|
|
||||||
<span class="sd"> log_file: Имя файла лога. По умолчанию 'project_fix.log'.</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
|
|
||||||
<span class="k">with</span> <span class="nb">open</span><span class="p">(</span><span class="n">log_file</span><span class="p">,</span> <span class="s1">'w'</span><span class="p">,</span> <span class="n">encoding</span><span class="o">=</span><span class="s1">'utf-8'</span><span class="p">)</span> <span class="k">as</span> <span class="n">f</span><span class="p">:</span>
|
|
||||||
<span class="n">f</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="s2">"</span><span class="se">\n</span><span class="s2">"</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">log</span><span class="p">))</span></div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<span class="k">if</span> <span class="vm">__name__</span> <span class="o">==</span> <span class="s1">'__main__'</span><span class="p">:</span>
|
|
||||||
<span class="c1"># Обработка аргументов командной строки</span>
|
|
||||||
<span class="n">target_dir</span> <span class="o">=</span> <span class="n">sys</span><span class="o">.</span><span class="n">argv</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">sys</span><span class="o">.</span><span class="n">argv</span><span class="p">)</span> <span class="o">></span> <span class="mi">1</span> <span class="k">else</span> <span class="s1">'.'</span>
|
|
||||||
|
|
||||||
<span class="c1"># Инициализация и запуск обработки</span>
|
|
||||||
<span class="n">fixer</span> <span class="o">=</span> <span class="n">ProjectFixer</span><span class="p">(</span><span class="n">target_dir</span><span class="p">)</span>
|
|
||||||
<span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Исправление структуры проекта в: </span><span class="si">{</span><span class="n">fixer</span><span class="o">.</span><span class="n">root_dir</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="n">fixer</span><span class="o">.</span><span class="n">process_directory</span><span class="p">()</span>
|
|
||||||
<span class="n">fixer</span><span class="o">.</span><span class="n">save_log</span><span class="p">()</span>
|
|
||||||
|
|
||||||
<span class="c1"># Вывод результатов</span>
|
|
||||||
<span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Готово! Внесено </span><span class="si">{</span><span class="nb">len</span><span class="p">(</span><span class="n">fixer</span><span class="o">.</span><span class="n">log</span><span class="p">)</span><span class="si">}</span><span class="s2"> изменений."</span><span class="p">)</span>
|
|
||||||
<span class="nb">print</span><span class="p">(</span><span class="s2">"Подробности сохранены в project_fix.log"</span><span class="p">)</span>
|
|
||||||
</pre></div>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<footer>
|
|
||||||
|
|
||||||
<hr/>
|
|
||||||
|
|
||||||
<div role="contentinfo">
|
|
||||||
<p>© Авторские права 2025, NPO KIS. </p>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
Собрано при помощи <a href="https://www.sphinx-doc.org/">Sphinx</a> с использованием
|
|
||||||
<a href="https://github.com/readthedocs/sphinx_rtd_theme">темы,</a>
|
|
||||||
предоставленной <a href="https://readthedocs.org">Read the Docs</a>.
|
|
||||||
|
|
||||||
|
|
||||||
</footer>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</section>
|
|
||||||
</div>
|
|
||||||
<script>
|
|
||||||
jQuery(function () {
|
|
||||||
SphinxRtdTheme.Navigation.enable(true);
|
|
||||||
});
|
|
||||||
</script>
|
|
||||||
|
|
||||||
</body>
|
|
||||||
</html>
|
|
||||||
|
|
@ -1,139 +0,0 @@
|
||||||
|
|
||||||
|
|
||||||
<!DOCTYPE html>
|
|
||||||
<html class="writer-html5" lang="ru" data-content_root="../../">
|
|
||||||
<head>
|
|
||||||
<meta charset="utf-8" />
|
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
||||||
<title>tools.logger — документация e-nms-qa-automation 0.1.0</title>
|
|
||||||
<link rel="stylesheet" type="text/css" href="../../_static/pygments.css?v=b86133f3" />
|
|
||||||
<link rel="stylesheet" type="text/css" href="../../_static/css/theme.css?v=e59714d7" />
|
|
||||||
|
|
||||||
|
|
||||||
<script src="../../_static/jquery.js?v=5d32c60e"></script>
|
|
||||||
<script src="../../_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script>
|
|
||||||
<script src="../../_static/documentation_options.js?v=6ff560e8"></script>
|
|
||||||
<script src="../../_static/doctools.js?v=9bcbadda"></script>
|
|
||||||
<script src="../../_static/sphinx_highlight.js?v=dc90522c"></script>
|
|
||||||
<script src="../../_static/translations.js?v=cd1d70c9"></script>
|
|
||||||
<script src="../../_static/js/theme.js"></script>
|
|
||||||
<link rel="index" title="Алфавитный указатель" href="../../genindex.html" />
|
|
||||||
<link rel="search" title="Поиск" href="../../search.html" />
|
|
||||||
</head>
|
|
||||||
|
|
||||||
<body class="wy-body-for-nav">
|
|
||||||
<div class="wy-grid-for-nav">
|
|
||||||
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
|
|
||||||
<div class="wy-side-scroll">
|
|
||||||
<div class="wy-side-nav-search" >
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<a href="../../index.html" class="icon icon-home">
|
|
||||||
e-nms-qa-automation
|
|
||||||
</a>
|
|
||||||
<div role="search">
|
|
||||||
<form id="rtd-search-form" class="wy-form" action="../../search.html" method="get">
|
|
||||||
<input type="text" name="q" placeholder="Поиск в документации" aria-label="Поиск в документации" />
|
|
||||||
<input type="hidden" name="check_keywords" value="yes" />
|
|
||||||
<input type="hidden" name="area" value="default" />
|
|
||||||
</form>
|
|
||||||
</div>
|
|
||||||
</div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Меню навигации">
|
|
||||||
<!-- Local TOC -->
|
|
||||||
<div class="local-toc"></div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</nav>
|
|
||||||
|
|
||||||
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Меню навигации для мобильных устройств" >
|
|
||||||
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
|
|
||||||
<a href="../../index.html">e-nms-qa-automation</a>
|
|
||||||
</nav>
|
|
||||||
|
|
||||||
<div class="wy-nav-content">
|
|
||||||
<div class="rst-content">
|
|
||||||
<div role="navigation" aria-label="Навигация по страницам">
|
|
||||||
<ul class="wy-breadcrumbs">
|
|
||||||
<li><a href="../../index.html" class="icon icon-home" aria-label="Home"></a></li>
|
|
||||||
<li class="breadcrumb-item"><a href="../index.html">Код модуля</a></li>
|
|
||||||
<li class="breadcrumb-item active">tools.logger</li>
|
|
||||||
<li class="wy-breadcrumbs-aside">
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
<hr/>
|
|
||||||
</div>
|
|
||||||
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
|
|
||||||
<div itemprop="articleBody">
|
|
||||||
|
|
||||||
<h1>Исходный код tools.logger</h1><div class="highlight"><pre>
|
|
||||||
<span></span><span class="sd">"""Модуль настройки логгера.</span>
|
|
||||||
|
|
||||||
<span class="sd">Содержит функцию для создания и настройки логгера</span>
|
|
||||||
<span class="sd">с выводом в стандартный поток.</span>
|
|
||||||
<span class="sd">"""</span>
|
|
||||||
|
|
||||||
<span class="kn">import</span><span class="w"> </span><span class="nn">logging</span>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="viewcode-block" id="get_logger">
|
|
||||||
<a class="viewcode-back" href="../../tools.html#tools.logger.get_logger">[документация]</a>
|
|
||||||
<span class="k">def</span><span class="w"> </span><span class="nf">get_logger</span><span class="p">(</span><span class="n">name</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="n">logging</span><span class="o">.</span><span class="n">Logger</span><span class="p">:</span>
|
|
||||||
<span class="w"> </span><span class="sd">"""Создаёт и настраивает логгер.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Args:</span>
|
|
||||||
<span class="sd"> name: Имя логгера (обычно __name__ модуля).</span>
|
|
||||||
|
|
||||||
<span class="sd"> Returns:</span>
|
|
||||||
<span class="sd"> logging.Logger: Настроенный экземпляр логгера.</span>
|
|
||||||
|
|
||||||
<span class="sd"> Пример:</span>
|
|
||||||
<span class="sd"> logger = get_logger(__name__)</span>
|
|
||||||
<span class="sd"> logger.debug("Тестовое сообщение")</span>
|
|
||||||
<span class="sd"> """</span>
|
|
||||||
|
|
||||||
<span class="n">logger</span> <span class="o">=</span> <span class="n">logging</span><span class="o">.</span><span class="n">getLogger</span><span class="p">(</span><span class="n">name</span><span class="p">)</span>
|
|
||||||
<span class="n">logger</span><span class="o">.</span><span class="n">setLevel</span><span class="p">(</span><span class="n">logging</span><span class="o">.</span><span class="n">DEBUG</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="c1"># Настройка обработчика для вывода в консоль</span>
|
|
||||||
<span class="n">handler</span> <span class="o">=</span> <span class="n">logging</span><span class="o">.</span><span class="n">StreamHandler</span><span class="p">()</span>
|
|
||||||
<span class="n">handler</span><span class="o">.</span><span class="n">setLevel</span><span class="p">(</span><span class="n">logging</span><span class="o">.</span><span class="n">DEBUG</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="c1"># Формат сообщений: время | имя логгера | уровень | сообщение</span>
|
|
||||||
<span class="n">formatter</span> <span class="o">=</span> <span class="n">logging</span><span class="o">.</span><span class="n">Formatter</span><span class="p">(</span><span class="s1">'</span><span class="si">%(asctime)s</span><span class="s1"> | </span><span class="si">%(name)s</span><span class="s1"> | </span><span class="si">%(levelname)s</span><span class="s1"> | </span><span class="si">%(message)s</span><span class="s1">'</span><span class="p">)</span>
|
|
||||||
<span class="n">handler</span><span class="o">.</span><span class="n">setFormatter</span><span class="p">(</span><span class="n">formatter</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="n">logger</span><span class="o">.</span><span class="n">addHandler</span><span class="p">(</span><span class="n">handler</span><span class="p">)</span>
|
|
||||||
|
|
||||||
<span class="k">return</span> <span class="n">logger</span></div>
|
|
||||||
|
|
||||||
</pre></div>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<footer>
|
|
||||||
|
|
||||||
<hr/>
|
|
||||||
|
|
||||||
<div role="contentinfo">
|
|
||||||
<p>© Авторские права 2025, NPO KIS. </p>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
Собрано при помощи <a href="https://www.sphinx-doc.org/">Sphinx</a> с использованием
|
|
||||||
<a href="https://github.com/readthedocs/sphinx_rtd_theme">темы,</a>
|
|
||||||
предоставленной <a href="https://readthedocs.org">Read the Docs</a>.
|
|
||||||
|
|
||||||
|
|
||||||
</footer>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</section>
|
|
||||||
</div>
|
|
||||||
<script>
|
|
||||||
jQuery(function () {
|
|
||||||
SphinxRtdTheme.Navigation.enable(true);
|
|
||||||
});
|
|
||||||
</script>
|
|
||||||
|
|
||||||
</body>
|
|
||||||
</html>
|
|
||||||
|
|
@ -1,125 +0,0 @@
|
||||||
components package
|
|
||||||
==================
|
|
||||||
|
|
||||||
Submodules
|
|
||||||
----------
|
|
||||||
|
|
||||||
components.alert\_component module
|
|
||||||
----------------------------------
|
|
||||||
|
|
||||||
.. automodule:: components.alert_component
|
|
||||||
:members:
|
|
||||||
:show-inheritance:
|
|
||||||
:undoc-members:
|
|
||||||
|
|
||||||
components.base\_component module
|
|
||||||
---------------------------------
|
|
||||||
|
|
||||||
.. automodule:: components.base_component
|
|
||||||
:members:
|
|
||||||
:show-inheritance:
|
|
||||||
:undoc-members:
|
|
||||||
|
|
||||||
components.card\_component module
|
|
||||||
---------------------------------
|
|
||||||
|
|
||||||
.. automodule:: components.card_component
|
|
||||||
:members:
|
|
||||||
:show-inheritance:
|
|
||||||
:undoc-members:
|
|
||||||
|
|
||||||
components.confirm\_component module
|
|
||||||
------------------------------------
|
|
||||||
|
|
||||||
.. automodule:: components.confirm_component
|
|
||||||
:members:
|
|
||||||
:show-inheritance:
|
|
||||||
:undoc-members:
|
|
||||||
|
|
||||||
components.date\_picker\_component module
|
|
||||||
-----------------------------------------
|
|
||||||
|
|
||||||
.. automodule:: components.date_picker_component
|
|
||||||
:members:
|
|
||||||
:show-inheritance:
|
|
||||||
:undoc-members:
|
|
||||||
|
|
||||||
components.dropdown\_list\_component module
|
|
||||||
-------------------------------------------
|
|
||||||
|
|
||||||
.. automodule:: components.dropdown_list_component
|
|
||||||
:members:
|
|
||||||
:show-inheritance:
|
|
||||||
:undoc-members:
|
|
||||||
|
|
||||||
components.eventbar\_component module
|
|
||||||
-------------------------------------
|
|
||||||
|
|
||||||
.. automodule:: components.eventbar_component
|
|
||||||
:members:
|
|
||||||
:show-inheritance:
|
|
||||||
:undoc-members:
|
|
||||||
|
|
||||||
components.events\_container\_component module
|
|
||||||
----------------------------------------------
|
|
||||||
|
|
||||||
.. automodule:: components.events_container_component
|
|
||||||
:members:
|
|
||||||
:show-inheritance:
|
|
||||||
:undoc-members:
|
|
||||||
|
|
||||||
components.json\_container\_component module
|
|
||||||
--------------------------------------------
|
|
||||||
|
|
||||||
.. automodule:: components.json_container_component
|
|
||||||
:members:
|
|
||||||
:show-inheritance:
|
|
||||||
:undoc-members:
|
|
||||||
|
|
||||||
components.modal\_window\_component module
|
|
||||||
------------------------------------------
|
|
||||||
|
|
||||||
.. automodule:: components.modal_window_component
|
|
||||||
:members:
|
|
||||||
:show-inheritance:
|
|
||||||
:undoc-members:
|
|
||||||
|
|
||||||
components.navbar\_component module
|
|
||||||
-----------------------------------
|
|
||||||
|
|
||||||
.. automodule:: components.navbar_component
|
|
||||||
:members:
|
|
||||||
:show-inheritance:
|
|
||||||
:undoc-members:
|
|
||||||
|
|
||||||
components.settings\_form\_component module
|
|
||||||
-------------------------------------------
|
|
||||||
|
|
||||||
.. automodule:: components.settings_form_component
|
|
||||||
:members:
|
|
||||||
:show-inheritance:
|
|
||||||
:undoc-members:
|
|
||||||
|
|
||||||
components.table\_component module
|
|
||||||
----------------------------------
|
|
||||||
|
|
||||||
.. automodule:: components.table_component
|
|
||||||
:members:
|
|
||||||
:show-inheritance:
|
|
||||||
:undoc-members:
|
|
||||||
|
|
||||||
components.toolbar\_component module
|
|
||||||
------------------------------------
|
|
||||||
|
|
||||||
.. automodule:: components.toolbar_component
|
|
||||||
:members:
|
|
||||||
:show-inheritance:
|
|
||||||
:undoc-members:
|
|
||||||
|
|
||||||
Module contents
|
|
||||||
---------------
|
|
||||||
|
|
||||||
.. automodule:: components
|
|
||||||
:members:
|
|
||||||
:show-inheritance:
|
|
||||||
:undoc-members:
|
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue