Задать вопрос
  • Как убрать ошибку кода в exe?

    Vindicar
    @Vindicar
    RTFM!
    1. почитать внимательно про auto-py-to-exe и осознать, что он базируется на pyinstaller
    2. почитать, как указать pyinstaller модуль, импорта которого он не увидел (hidden import)
    3. найти, где в интерфейсе auto-py-to-exe можно указать дополнительные опции для pyinstaller (подсказка: секция Advanced)
    4. Вписать в нужный параметр имя comtypes (возможно, придётся указать именно comtypes.stream)
    Ответ написан
    8 комментариев
  • Как парсить telegram desktop с помощью pywinauto?

    @alekssamos
    Программист любитель
    А почему вВы выбрали такой путь, если можно это делать через API? Telethon / Pyrogram.
    Боюсь, что никак. Он даже для незрячих пользователей скринридеров недоступен, для средств автоматизации, возможно, тоже, если не учитывать OCR и поиск по цвету.
    Ответ написан
    1 комментарий
  • Как запустить .bat файл через pywinauto?

    Vindicar
    @Vindicar
    RTFM!
    С командной строкой взаимодействуй через стандартный модуль subprocess. pywinauto ТОЛЬКО для графических приложений.
    Ответ написан
    Комментировать
  • Какие компиляторы "принято" использовать в клиентских приложениях для разных платформ (Windows, MacOS etc)?

    Кажется, что всё-таки чаще Clang/LLVM, тк он под капотом умеет компилировать под MSVC ABI, если компилируешь под винду, и GNU ABI, когда компилируешь под Linux.
    Ответ написан
    Комментировать
  • Почему еще не состыкованы технологии Python(Rust, Go, JavaScript) -> LLVM -> Asm -> STM32 ?

    soshnikov
    @soshnikov
    Мне кажется, это Неуловимый Джо.
    Если вам необходима компактная платформа общего назначения для прикладного решения на питоне, к примеру, возьмите малину, кубик или любую подобную плату. Валом их.
    Ембеддед это несколько другие задачи и соответственно инструменты. Это работа на уровне железа, таймингов, прерываний. Зачастую сложно понять, почему что-то не работает, хотя должно. Хотя код на си или асме, и вроде как все прозрачно и понятно и на одном экране умещается.
    А вы представьте в какой ад превратится отладка, если туда впихнуть рантайм или виртуальную машину?
    Ответ написан
    1 комментарий
  • Как реализовать какое-либо действия скрипта при открытии пользователем определённое программы?

    exibite777
    @exibite777
    Ведущий системный аналитик
    Попробуйте модуль pywinauto отлично работает с интерфейсом Windows, позволяет его автоматизировать
    Например, вот код инсталлера 7-zip
    wizard=app['7-Zip 19.00 (x64) Setup']
    wizard.Install.Click()
    time.sleep(5)
    wizard.CloseButton.Click()
    time.sleep(2)
    app=pywinauto.Application().start(r'C:\Program Files\7-Zip\7zFM.exe')
    main=app['7-Zip']
    main.MenuSelect('Сервис->Настройки...')
    settings=app['Настройки']
    settings.Button.Click()
    settings.ОКButton.Click()
    main.Close()
    Имена кнопок и компонентов на которые надо нажимать можно узнать утилитой swapy, она же автомтически генерит код для pywinauto

    Модуль позволяет создавать свои собственные дочерние процессы, а может подключаться к процессам уже ранее запущенных приложений. Ну а раз скрипт уже запущен, то можете в нем хоть print() хоть все что угодно писать. Например я делал сервис киллер notepad
    Киллер Notepad
    import pywinauto, datetime, threading, time
    pid_list=[]; log_list=[]
    
    with open("kill-notepad.log", "a") as log:
        log.write(f"{datetime.datetime.now()} | service started, I'am kill all notepad appliction\n")
    
    def logger():
        global log_list
        if len(log_list)>0:
            log_copy=log_list.copy(); log_list=[]
            with open("kill-notepad.log", "a") as log:
                for i in range(len(log_copy)):
                    log.write(log_copy.pop(0))
    
    def disabler(main,count):
         for i in range(count-count//255):
                main.set_transparency(alpha=255-i//(count//255))
    def alarm(main):
        for i in range(10):
                main.Edit.send_keystrokes("НЕЛЬЗЯ ЗАПУСКАТЬ ЭТУ ПРОГРАММУ\n")
    
    def killer():
        global pid_list
        try:
            app=pywinauto.Application().connect(path=r"c:\windows\system32\notepad.exe")
            main=app.top_window(); count=10000
            if main.process_id() not in pid_list:
                pid_list.append(main.process_id())
            else:
                return
            main.set_transparency(alpha=255)
            threading.Thread(target=alarm(main)).start()
            threading.Thread(target=disabler(main,count)).start()
            log_list.append(f'{datetime.datetime.now()} | destroy {main.element_info}\n')
            app.kill()
        except:
            pass
    count=0
    while True:
        if count==10:count=0
        time.sleep(1); count+=1
        shout=threading.Thread(target=killer)
        shout.start()
        if count==10:
            report=threading.Thread(target=logger)
            report.start()

    Потом можно скрипт упаковать в exe-файл при помощи cx-Freeze
    упаковываем скрипт
    Файл setup.py
    from cx_Freeze import setup, Executable
    packages = ['win32serviceutil','win32service','win32event','servicemanager','socket','win32timezone','pywinauto', 'sys', 'datetime', 'not-notepad-service']
    build_exe_options = {"packages": packages}
    executable = [Executable("not-notepad-service.py")]
    setup(name = "StopNotepadService",
            version = "1.0",
            description = "Stop NotepadApp and Log",
            options = {"build_exe": build_exe_options},
            executables = executable)

    Запускаем сборку python setup.py build

    И можно даже потом повесить готовый exe-файл как службу Windows
    при помощи nssm-2.24-101-g897c7ad
    Ответ написан
    2 комментария
  • Почему у C# программистов по статистике зарплата сильно меньше чем у JS, Java, Python?

    Тут есть очень простое объяснение:

    1) Это Unity, которая сильно снижает планку зп по рынку.
    2) Студенты. Майкрософт хорошо лоббирует .net в универах, поэтому большая часть студентов (которые готовы работать за еду), идут со знанием .net
    3) В США большая часть .net работы — это компании в области гос/финтех-сектора. У нас же по историческим причинам, в этом секторе основной игрок Java. Следовательно и деньги в .net не идут.
    4) .Net — дорогой стек, поэтому все стартапы, которые вынуждены большой зп конкурировать с более «стабильными» компаниями за разработчиков, выбирают python/java/php, а не .net. Хостинг на .net — крайне разорителен (сейчас, конечно, появился .net core — но он еще слишком молод, чтобы поменять ситуацию).
    5) .net часто используется во всяких тендерных проектах, где руководство использует принцип «совка». Разработчик должен быть голодным и «уставшим».

    ___

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

    Реально открываешь вакансии, там middle .net разраб — 90-120к тысяч. Хотя проекты такой же сложности на Java — идут уже 120-150к. В общем, так сложилось, что .net платят меньше, и работодатели не шибко хотят поднимать эту планку.
    Ответ написан
    Комментировать
  • Какую библиотеку Python использовать для управления приложениями?

    frendri, используй pywinauto или более высокоуровневый pyautogui

    Вот статья с Хабра на русском.
    Будут сложности, пиши в комментарии, отвечу. Прежде чем задавать вопросы, прочтие статьи
    в интернете и конечно официальный сайт библиотеки, попробуйте написать что нибудь.
    Если будете использовать pywinauto, то неизбежно придется по минимуму изучить
    устройство Windows программ. pyautogui должен быть менее требователен по квалификации,
    но так скажем "более толстая" библиотека.

    P.S. Со своего опыта могу сказать: нужно было автоматизировать нажатие в программе написаной
    на FoxPro для создания отчетов. Использовал pywinauto. Большинство действии без проблем сделал,
    но некоторые действия не давались из за того, что не мог узнать идентификаторы некоторых кнопок.
    Выкрутился отправляя нужное количество нажатии на TAB для переключения на нужную кнопку и
    SPACE для нажатие. Есть и более хипстерский способ, использовать распознавание по контрольной
    картинке элемента окна (pyautogui), но его не приходилось использовать
    Ответ написан
    3 комментария
  • Почему в Google Chrome и в Opera не открывается xml-файл с подключённым к нему xsl-стилями?

    @Roman-Fov
    Всё он работает. Только нужно предварительно закрыть все другие окна хрома. Если он работает в фоне, то убить все его процессы. Только тогда запускать его с флагом --allow-file-access-from-files.
    Работает во всех браузерах основанных на Chromium.
    Или создать сервер (денвер или что там сейчас на винде) и обращаться к файлам через http. Тогда этой ошибки возникать не будет вообще без флагов всяких.
    Ответ написан
    3 комментария
  • Как отследить состояние программы?

    DDDsa
    @DDDsa
    Может быть overkill, конечно, но можете посмотреть в сторону pywinauto. Это библиотека для автоматизации взаимодействия с Windows GUI. С ее помощью можно отследить появление, например, определенного окна программы.

    Вот фрагмент кода из одного моего скрипта, должно стать понятно:
    tw = app.window_(title_re="Выбор подразделения")
    while not tw.Exists():
        sleep(.1)
        tw = app.window_(title_re="Выбор подразделения")
    #окно появилось - выполняем следующие действия
    Ответ написан
    1 комментарий
  • Какие есть инструменты для программного управления окнами?

    ApeCoder
    @ApeCoder
    Есть приблуды для автоматизации работы типа AutoHotkey, AutoIT со своим языком
    Есть либы для ЯП типа PyWinAuto
    Есть тестовые фреймворки типа coded ui tests
    Ответ написан
    Комментировать
  • Как из питона взаимодействовать с окнами?

    TomasHuk
    @TomasHuk
    Ответ написан
    Комментировать
  • Модули для доступа к разным функция компьютера?

    TomasHuk
    @TomasHuk
    В довесок для Windows можете посмотреть pywinauto, для автоматизации действий с GUI.
    Ответ написан
    Комментировать
  • Как автоматизировать повторяющиеся действия в windows?

    TomasHuk
    @TomasHuk
    Getautoma похоже на какую-то обертку над pywinauto на python.
    Еще можно посмотреть на AutoIt, функции ControlClick, ControlSend и пр., но не проверял.
    Ответ написан
    Комментировать
  • Можно ли узнать информацию о всех доступных для нажатия областях на активном окне приложения в Windows?

    lxsmkv
    @lxsmkv
    Test automation engineer
    Инспектор из SDK Майкрософта https://docs.microsoft.com/de-de/windows/desktop/W...
    Инспектор AutoIt https://www.autoitscript.com/autoit3/docs/intro/au...
    Библиотека на питоне позволяющая манипулировать приложениями Windows https://pywinauto.readthedocs.io/en/latest/getting...
    Ответ написан
    Комментировать
  • Как запустить расширение в Selenium?

    @GeneD88
    QA
    Простите, что понимается под 'запустить'?
    Вы добавили плагин через указанные расширения для хрома и необходимо "нажать" на кнопку этого плагина? Если так, то средствами селениума этого уже не сделать, тк эта кнопка не является частью веб страницы, а является частью приложения. Для этого случая необходимо будет подключиться к этому приложению с помощью Pywinauto (тк, Вы не указали язык, то я выбрал знакомый мне=) )

    Что то типа:
    chrm = Application().connect(title='Chrome browser')

    (с) https://pywinauto.readthedocs.io/en/latest/HowTo.h...

    А дальше уже указать кнопку и нажать ее...
    Ответ написан
    1 комментарий
  • Куда пойти работать тестестировщиком ПО?

    @sisn
    Мой уровень технический знаний - написание простых тестов на C++.

    Никому не надо.

    Простые тесты пишут сами разработчики.
    Ваши представления о том, что существуют отдельно пишущие простые тесты тестировщики - устарели лет на 10.

    Хотя.
    В больших фирма есть выделенные тестировщики, которые сами пишут тесты.
    Но это вовсе не "простые" тесты.
    Ответ написан
    Комментировать
  • Как с помощью python перехвать управление над другим приложением?

    @Beltoev
    Живу в своё удовольствие
    Вам нужно использовать pywinauto для манипуляции приложениями
    Ответ написан
    Комментировать
  • Какой язык выбрать для автоматизации тестирования?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Все зависит от того что вы будете тестить. Если вы будете писать E2E тесты то лучше взять простенький динамический язык, и не PHP, хотя конечно можно и его.

    Я бы рекомендовал вам посмотреть в сторону python или javascript (ruby тоже можно, с капибарой какой, просто python универсальнее).

    Так же немаловажно учитывать на чем написан проект который вы собираетесь покрывать тестами. Если у вас есть люди в команде которые помогут вам с программированием то это несомненнно будет плюсом.
    Ответ написан
    Комментировать