<?xml version="1.0" encoding="utf-8" ?><rss version="2.0" xmlns:tt="http://teletype.in/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:media="http://search.yahoo.com/mrss/"><channel><title>@ddbd</title><generator>teletype.in</generator><description><![CDATA[@ddbd]]></description><image><url>https://img2.teletype.in/files/de/82/de823737-6d08-42aa-92df-5a2267f598ac.png</url><title>@ddbd</title><link>https://teletype.in/@ddbd</link></image><link>https://teletype.in/@ddbd?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=ddbd</link><atom:link rel="self" type="application/rss+xml" href="https://teletype.in/rss/ddbd?offset=0"></atom:link><atom:link rel="next" type="application/rss+xml" href="https://teletype.in/rss/ddbd?offset=10"></atom:link><atom:link rel="search" type="application/opensearchdescription+xml" title="Teletype" href="https://teletype.in/opensearch.xml"></atom:link><pubDate>Thu, 25 Jun 2026 03:00:35 GMT</pubDate><lastBuildDate>Thu, 25 Jun 2026 03:00:35 GMT</lastBuildDate><item><guid isPermaLink="true">https://teletype.in/@ddbd/-IB-GIOfisw</guid><link>https://teletype.in/@ddbd/-IB-GIOfisw?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=ddbd</link><comments>https://teletype.in/@ddbd/-IB-GIOfisw?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=ddbd#comments</comments><dc:creator>ddbd</dc:creator><title>Создание виртуального окружения и установка Selenium в него</title><pubDate>Thu, 28 Mar 2024 11:06:43 GMT</pubDate><description><![CDATA[Создайте виртуальное окружение:]]></description><content:encoded><![CDATA[
  <p id="9wuy"><strong>Создайте виртуальное окружение</strong>:</p>
  <pre id="UEDr">Copy</pre>
  <pre id="IcBA">python3 -m venv /path/to/new/virtual/environment</pre>
  <p id="FwoK">Замените <code>/path/to/new/virtual/environment</code> на путь, где вы хотите создать виртуальное окружение. Например, если вы хотите создать его в директории <code>/root/myenv</code>, используйте:</p>
  <pre id="MLIo">Copy</pre>
  <pre id="S7JH">python3 -m venv /root/myenv</pre>
  <p id="Kw2B"><strong>Активируйте виртуальное окружение</strong>:</p>
  <pre id="lq6h">Copy</pre>
  <pre id="Yjo9">source /root/myenv/bin/activate</pre>
  <p id="3nZx">Эта команда активирует виртуальное окружение. После активации, вы увидите имя виртуального окружения в приглашении командной строки.</p>
  <p id="oDQc"><strong>Установите Selenium в активированное виртуальное окружение</strong>:</p>
  <ol id="X6bw">
    <li id="ftIf"><code>pip install selenium</code></li>
    <li id="lN88"><strong>Установка зависимостей</strong>: Если ваш скрипт требует дополнительных зависимостей, установите их таким же образом, используя <code>pip</code> внутри активированного виртуального окружения.</li>
  </ol>
  <p id="GJyf">После выполнения этих шагов, ваши Python скрипты, требующие Selenium, могут быть запущены в изолированном окружении, что позволяет избежать конфликтов с системными пакетами и повышает безопасность работы с Python пакетами.</p>
  <p id="UyAV">Когда вы закончите работу с виртуальным окружением, его можно деактивировать командой <code>deactivate</code>.</p>
  <ol id="rWbD">
    <li id="Jaqm"><strong>Перезагрузка конфигурации systemd</strong>:</li>
  </ol>
  <p id="D1zy">Перезагрузите systemd, чтобы применить изменения в конфигурации сервиса:</p>
  <pre id="bYVD">sudo systemctl daemon-reload</pre>
  <ol id="0QIo">
    <li id="UvFg"><strong>Запуск сервиса</strong>:</li>
  </ol>
  <p id="ldES">Теперь запустите ваш новый или модифицированный сервис:</p>
  <pre id="ndWd">sudo systemctl start automation.service</pre>
  <ol id="ooKx">
    <li id="g5Fd"><strong>Автоматический запуск сервиса при старте системы</strong>:</li>
  </ol>
  <p id="Bnsy">Если вы хотите, чтобы ваш сервис запускался автоматически при старте системы, включите его:</p>
  <pre id="o0Ls">sudo systemctl enable automation.service</pre>
  <ol id="ZMfc">
    <li id="UaKi"><strong>Проверка статуса сервиса</strong>:</li>
  </ol>
  <p id="DsHi">Проверьте статус вашего сервиса, чтобы убедиться, что он запущен успешно:</p>
  <pre id="iJtB">sudo systemctl status automation.service</pre>
  <p id="3drs">Теперь ваш скрипт должен работать как сервис в фоновом режиме. Вы можете проверять его работу и логи через <code>systemctl status</code> и <code>journalctl -u automation.service</code> соответственно.</p>

]]></content:encoded></item><item><guid isPermaLink="true">https://teletype.in/@ddbd/Nastrojka-avtozapuska-skripta</guid><link>https://teletype.in/@ddbd/Nastrojka-avtozapuska-skripta?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=ddbd</link><comments>https://teletype.in/@ddbd/Nastrojka-avtozapuska-skripta?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=ddbd#comments</comments><dc:creator>ddbd</dc:creator><title>Настройка автозапуска скрипта</title><pubDate>Wed, 27 Mar 2024 13:07:16 GMT</pubDate><tt:hashtag>автоматизация</tt:hashtag><tt:hashtag>скрипт</tt:hashtag><description><![CDATA[Создайте новый systemd-сервис для запуска скрипта:]]></description><content:encoded><![CDATA[
  <p id="i3Hc">Создайте новый systemd-сервис для запуска скрипта:</p>
  <pre id="oElq">sudo nano /etc/systemd/system/automation.service
</pre>
  <ol id="98WE">
    <li id="5Vzi"><strong>Изменение прав доступа</strong>: Чтобы убедиться, что файлы имеют права на выполнение (особенно важно для скриптов), измените права доступа следующим образом:</li>
  </ol>
  <p id="BT7I">Для файла :</p>
  <pre id="V5ns">sudo chmod +x /etc/systemd/system/automation.service</pre>
  <p id="oKnN">Это даст файлу <code>keitaro_script.py</code> права на выполнение.</p>
  <ol id="XyaR">
    <li id="GABN"><strong>Проверка наличия файлов</strong>: Чтобы проверить, что файлы успешно созданы и находятся в нужной директории, используйте команду <code>ls</code>:</li>
  </ol>
  <pre id="b2Ml">ls -l /etc/systemd/system/automation.service</pre>
  <p id="ccEy">Добавьте следующее содержимое в файл:</p>
  <p id="pjVz"></p>
  <pre id="jUxc">[Unit]
Description=Automation Script
After=network.target

[Service]
ExecStart=/usr/bin/python3 /путь/к/automation_script.py
Restart=always
User=ваш-пользователь

[Install]
WantedBy=multi-user.target</pre>
  <p id="2E6F">Замените <code>/путь/к/automation_script.py</code> на фактический путь к вашему скрипту автоматизации.   Замените <code>ваш-пользователь</code> на имя пользователя, от которого должен запускаться скрипт.   Сохраните файл и закройте редактор.   Включите и запустите сервис:</p>
  <pre id="CdCt">sudo systemctl enable automation.service
sudo systemctl start automation.service</pre>
  <p id="7Iye">Теперь ваш скрипт автоматизации будет запускаться автоматически при загрузке системы и продолжит работу даже после перезагрузки сервера или закрытия терминала. В дальнейшем вы можете расширить скрипт, добавив код для выполнения необходимых действий в панели управления Кейтаро, таких как отбор списков в фильтрах, добавление и сохранение данных в другое окно.</p>
  <h3 id="uSty">Проверить статус сервиса</h3>
  <p id="gtai">Вы можете проверить статус сервиса, используя команду <code>systemctl status</code>:</p>
  <pre id="YxQ4">sudo systemctl status automation.service</pre>
  <p id="Fy2j">Эта команда покажет текущий статус сервиса, включая то, активен ли он (запущен) в данный момент, и выведет последние строки из журнала сервиса. Если скрипт успешно сработал, вы увидите соответствующие сообщения в этом журнале.</p>
  <p id="AD4h"><strong> Просмотреть журналы системы</strong></p>
  <p id="4A7d">Вы можете также просмотреть журналы системы для вашего сервиса, используя </p>
  <pre id="f80y">sudo journalctl -u automation.service</pre>
  <h3 id="emUo">Проверка журналов ошибок</h3>
  <p id="ExpL">Чтобы получить более подробную информацию об ошибке, вызвавшей сбой сервиса, используйте команду <code>journalctl</code>. Это позволит вам увидеть полный вывод вашего скрипта и сообщения об ошибках.</p>
  <pre id="Aw4M">sudo journalctl -u automation.service</pre>
  <h3 id="EBvL">2. Проверка скрипта на наличие ошибок</h3>
  <p id="WSPP">Ошибка с кодом выхода <code>status=2</code> обычно указывает на проблемы в самом скрипте. Возможно, в скрипте есть синтаксическая ошибка или он пытается использовать ресурсы, которые недоступны или не существуют. Попробуйте запустить скрипт вручную, чтобы увидеть, выводятся ли какие-либо ошибки:</p>
  <pre id="JbYl">/usr/bin/python3 /etc/systemd/system/automation_script.py</pre>
  <h3 id="Hj7q">3. Проверка прав доступа к скрипту</h3>
  <p id="JnsF">Убедитесь, что скрипт доступен и имеет права на выполнение. Вы можете установить права на выполнение, используя команду <code>chmod</code>:</p>
  <pre id="3MGK">sudo chmod +x /etc/systemd/system/automation_script.py</pre>
  <tt-tags id="rzL7">
    <tt-tag name="автоматизация">#автоматизация</tt-tag>
    <tt-tag name="скрипт">#скрипт</tt-tag>
  </tt-tags>

]]></content:encoded></item><item><guid isPermaLink="true">https://teletype.in/@ddbd/Klik-po-opredelennomu-elementu</guid><link>https://teletype.in/@ddbd/Klik-po-opredelennomu-elementu?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=ddbd</link><comments>https://teletype.in/@ddbd/Klik-po-opredelennomu-elementu?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=ddbd#comments</comments><dc:creator>ddbd</dc:creator><title>Selenium: Клик по определенному элементу на веб-странице</title><pubDate>Wed, 27 Mar 2024 11:38:54 GMT</pubDate><description><![CDATA[Чтобы совершить клик по определенному элементу на веб-странице с использованием Selenium, вам нужно сначала найти этот элемент. Это можно сделать разными способами, в зависимости от того, какие атрибуты у элемента есть (id, класс, имя, XPath и т.д.). Допустим, у вас есть элемент с уникальным идентификатором (id), на который вы хотите кликнуть после успешной авторизации. Вот как это можно сделать:]]></description><content:encoded><![CDATA[
  <p id="SyLI">Чтобы совершить клик по определенному элементу на веб-странице с использованием Selenium, вам нужно сначала найти этот элемент. Это можно сделать разными способами, в зависимости от того, какие атрибуты у элемента есть (id, класс, имя, XPath и т.д.). Допустим, у вас есть элемент с уникальным идентификатором (id), на который вы хотите кликнуть после успешной авторизации. Вот как это можно сделать:</p>
  <pre id="HPoI" data-lang="python"># Найти элемент по его id и выполнить клик
element_to_click = WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.ID, &quot;element_id&quot;)))
element_to_click.click()</pre>
  <p id="dKVq">Если у элемента нет уникального id, но есть, например, уникальный класс, можно использовать следующий код:<br /></p>
  <pre id="8w8V" data-lang="python"># Найти элемент по его классу и выполнить клик
element_to_click = WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.CLASS_NAME, &quot;class_name&quot;)))
element_to_click.click()</pre>
  <p id="Q7bI">Или если вам нужно использовать XPath для нахождения элемента, код будет выглядеть так:</p>
  <pre id="hQhL" data-lang="python"># Найти элемент по XPath и выполнить клик
element_to_click = WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.XPATH, &quot;//div[@class=&#x27;example_class&#x27;]/button&quot;)))
element_to_click.click()</pre>
  <p id="gmSP">Важно использовать <code>WebDriverWait</code> и <code>element_to_be_clickable</code>, чтобы дождаться, пока элемент станет кликабельным. Это поможет избежать ошибок, связанных с попыткой клика по элементу, который еще не загружен на странице. Убедитесь, что вы замените <code>&quot;element_id&quot;</code>, <code>&quot;class_name&quot;</code> или XPath-выражение на актуальные значения, соответствующие элементу, по которому вы хотите выполнить клик. Если после клика на элемент требуется выполнить еще какие-либо действия (например, проверить, что появился новый элемент или открылась новая страница), не забудьте добавить соответствующие ожидания или проверки.</p>
  <h3 id="C1eF">Как узнать, что клик выполнен:</h3>
  <ol id="hcBR">
    <li id="GMMF"><strong>Добавление явных ожиданий</strong>: После выполнения клика вы можете использовать явные ожидания (<code>WebDriverWait</code> в Selenium), чтобы дождаться появления элемента или изменения состояния на странице, которое произойдет только после успешного выполнения клика. Например, если после клика ожидается появление нового элемента, вы можете ожидать его появления: </li>
  </ol>
  <pre id="lITo">from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

# Предполагая, что &#x60;driver&#x60; - ваш WebDriver
# После выполнения клика
element = WebDriverWait(driver, 10).until(EC.visibility_of_element_located((By.ID, &quot;newElementId&quot;)))</pre>
  <p id="alyD"><strong>Логирование</strong>: Добавьте вывод в консоль или логирование перед и после выполнения клика для подтверждения его выполнения:</p>
  <pre id="vhte">Copy</pre>
  <ol id="loEQ">
    <li id="sm4E"><code>print(&quot;Выполняю клик...&quot;) driver.find_element(By.ID, &quot;elementId&quot;).click() print(&quot;Клик выполнен.&quot;)</code></li>
  </ol>
  <h3 id="Xk0K">Можно ли редактировать скрипт, когда он запущен:</h3>
  <p id="BXN6">Да, вы можете редактировать скрипт в любое время, но изменения вступят в силу только после его перезапуска. Если ваш скрипт запущен как сервис systemd (<code>automation.service</code>), вам нужно будет выполнить следующие действия после редактирования скрипта:</p>
  <ol id="uScS">
    <li id="rRhG"><strong>Остановить сервис</strong> (если он активен): <a href="true">Copy</a></li>
  </ol>
  <pre id="ivVc">sudo systemctl stop automation.service</pre>
  <p id="dTIK"><strong>Внести изменения в скрипт</strong>. Используйте предпочитаемый текстовый редактор для редактирования скрипта.</p>
  <p id="2F1Y"><strong>Перезапустить сервис</strong>, чтобы зменения вступили в силу:</p>
  <pre id="rsNT">sudo systemctl start automation.service</pre>
  <p id="i2Qc"><strong>Проверить статус сервиса</strong>, чтобы убедиться, что он успешно запущен с новыми изменениями:</p>
  <p id="W9qF"></p>
  <pre id="xnQD">sudo systemctl status automation.service</pre>

]]></content:encoded></item><item><guid isPermaLink="true">https://teletype.in/@ddbd/Proverka_nalichiya_opredelennogo_elementa</guid><link>https://teletype.in/@ddbd/Proverka_nalichiya_opredelennogo_elementa?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=ddbd</link><comments>https://teletype.in/@ddbd/Proverka_nalichiya_opredelennogo_elementa?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=ddbd#comments</comments><dc:creator>ddbd</dc:creator><title>Selenium: Проверка наличия, определенного элемента на странице</title><pubDate>Wed, 27 Mar 2024 11:15:30 GMT</pubDate><tt:hashtag>selenium</tt:hashtag><tt:hashtag>python</tt:hashtag><tt:hashtag>автоматизация</tt:hashtag><description><![CDATA[Чтобы узнать, что вход в панель управления  выполнен успешно, обычно используется проверка наличия определенного элемента на странице, который является уникальным для страниц после успешной авторизации. В вашем коде вы уже используете такой подход, проверяя наличие элемента с текстом &quot;Dashboard&quot; на странице:]]></description><content:encoded><![CDATA[
  <p id="ZQgq">Чтобы узнать, что вход в панель управления  выполнен успешно, обычно используется проверка наличия определенного элемента на странице, который является уникальным для страниц после успешной авторизации. В вашем коде вы уже используете такой подход, проверяя наличие элемента с текстом &quot;Dashboard&quot; на странице:</p>
  <pre id="WeTX" data-lang="python">try:
    dashboard_element = WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.XPATH, &quot;//h1[contains(text(), &#x27;Dashboard&#x27;)]&quot;)))
    print(&quot;Авторизация успешна&quot;)
except:
    print(&quot;Ошибка авторизации&quot;)</pre>
  <p id="uHvM">Этот код работает следующим образом:</p>
  <ul id="m7pR">
    <li id="2C3x">После клика по кнопке входа, скрипт ожидает до 10 секунд появления элемента <code>&lt;h1&gt;</code> с текстом &quot;Dashboard&quot; на странице. Это означает, что пользователь успешно авторизовался и перешел на главную страницу панели управления.</li>
    <li id="X9Ja">Если такой элемент найден, скрипт выводит сообщение &quot;Авторизация успешна&quot;.</li>
    <li id="mtsy">Если элемент не найден в течение 10 секунд (например, из-за неправильного логина или пароля), то выполняется блок <code>except</code>, и скрипт выводит сообщение &quot;Ошибка авторизации&quot;.</li>
  </ul>
  <p id="0itK">Для улучшения этого подхода и увеличения надежности проверки, вы можете использовать дополнительные критерии, например, проверку URL-адреса страницы после авторизации или поиск других уникальных элементов, характерных только для авторизованных пользователей.</p>
  <p id="nvMU">Например, проверка URL:</p>
  <pre id="Sdfi" data-lang="python">if &quot;dashboard&quot; in driver.current_url:
    print(&quot;Авторизация успешна&quot;)
else:
    print(&quot;Ошибка авторизации&quot;)</pre>
  <p id="79Ma">Этот код проверяет, содержит ли текущий URL-адрес страницы слово &quot;dashboard&quot;, что может быть признаком успешной авторизации.</p>
  <tt-tags id="tGVR">
    <tt-tag name="selenium">#selenium</tt-tag>
    <tt-tag name="python">#python</tt-tag>
    <tt-tag name="автоматизация">#автоматизация</tt-tag>
  </tt-tags>

]]></content:encoded></item></channel></rss>