BG Development


Страници: (2) [1] 2   ( Първото ново мнение ) Reply to this topicStart new topicStart Poll

> Има ли такава функция в Python
ebatichoveka
Публикувано на: 10-03-2019, 00:05
Quote Post



Име:
Група: Потребител
Ранг: Новопостъпил

Мнения: 1
Регистриран на: 09.03.19



Здравейте,

Да кажем, че трябва да тествам някакво енд юзер програмче посредством което се въвежда някаква информация в база данни.
Чрез pyautogui функцията въвеждам нужните данни но поради някаква причина от програмчето на екран изкача съобщение за грешка (примерно непозволен запис или нещо от сорта...без значение екран за грешка).
въпроса ми е мога ли да хвана по някакъв начин този прозорец с грешка и да спра скрипта там.....?

Това мнение е било редактирано от ebatichoveka на 10-03-2019, 00:07
PMEmail Poster
Top
ici
Публикувано на: 10-03-2019, 00:26
Quote Post


Group Icon
Име: Ивайло Илчев ики
Група: VIP
Ранг: Почетен член

Мнения: 16323
Регистриран на: 06.06.04



CODE
      if app.windows_(title=TITLE):
           dlg = app.window_(title=TITLE)
           log("Found Error msg dialog!")
           log("ErrorMsg :" + dlg.Static2.Texts()[0].strip())
           dlg.OK.Click()

           win = _findWindow(app, TITLE_APP, 10.0)
           if win:
               try:
                   win.MenuSelect("&Platform->E&xit")
               except MatchError:
                   win.MenuSelect(u"&Платформа->Изход")
               log("TODO: Update via treeview control")
           _killApp(app, EXE_PATH)
           return "Error read!"

           break # Some shit hapens!


--------------------
Reading undefined locations provides undefined data.
PMEmail PosterUsers Website
Top
dedal
Публикувано на: 29-04-2019, 15:37
Quote Post



Име: Григор Колев
Група: Потребител
Ранг: Посетител

Мнения: 104
Регистриран на: 17.11.10



Нямам никаква идея какво е pyautogui.
Ама аз в wx пренасочвам целия stdout и stderr към log и си ги чета.
Работи на чист pytho, whpython, pyglet, pygame и всичко на което съм го пуснал.
Биеш го някъде в някой файл и започваш main с import където си го забил.
Пише всичко барабар с print.

CODE

import logging
import sys
from logging.handlers import RotatingFileHandler
class StreamToLogger(object):
   def __init__(self, logger, log_level=logging.INFO):
       self.logger = logger
       self.log_level = log_level
       self.linebuf = ''

   def write(self, buf):
       for line in buf.rstrip().splitlines():
           self.logger.log(self.log_level, line.rstrip())

   def flush(self):
       pass
logging.basicConfig(
   level=logging.DEBUG,
   format='%(asctime)s:%(levelname)s:%(name)s:%(message)s',
)
log_formatter = logging.Formatter('%(asctime)s:%(levelname)s:%(name)s:%(message)s')
my_handler = RotatingFileHandler('file.log', mode='a', maxBytes=5*512*512,
                                backupCount=5, encoding=None, delay=0)
my_handler.setFormatter(log_formatter)
my_handler.setLevel(logging.INFO)

stdout_logger = logging.getLogger('STDOUT')
sl = StreamToLogger(stdout_logger, logging.ERROR)
sys.stdout = sl
stdout_logger.addHandler(my_handler)

stderr_logger = logging.getLogger('STDERR')
sl = StreamToLogger(stderr_logger, logging.ERROR)
sys.stderr = sl
stderr_logger.addHandler(my_handler)
PMEmail Poster
Top
ici
Публикувано на: 29-04-2019, 15:48
Quote Post


Group Icon
Име: Ивайло Илчев ики
Група: VIP
Ранг: Почетен член

Мнения: 16323
Регистриран на: 06.06.04



QUOTE (dedal @ 29-04-2019, 16:37)
Нямам никаква идея какво е pyautogui.

А би трябвало! Не можеш да пренасочиш изкачащ прозорец от някакво приложение да пише в твоите хендлери за стдио стдаут.


--------------------
Reading undefined locations provides undefined data.
PMEmail PosterUsers Website
Top
dedal
Публикувано на: 29-04-2019, 15:55
Quote Post



Име: Григор Колев
Група: Потребител
Ранг: Посетител

Мнения: 104
Регистриран на: 17.11.10



QUOTE (ici @ 29-04-2019, 15:48)
QUOTE (dedal @ 29-04-2019, 16:37)
Нямам никаква идея какво е pyautogui.

А би трябвало! Не можеш да пренасочиш изкачащ прозорец от някакво приложение да пише в твоите хендлери за стдио стдаут.

Е то не връща ли нещо това приложение?
Питам, наистина нямам идея.
Но то трябва да върне нещо.
Или моите връщат False или True.
При грешка я хващам и връщам False ама loggin е в exc_info=True и ми я печата.
И при мен излиза прозорец със съобщение, Кофти информация, ама на заден план си върви лога, само левела да е ОК.
PMEmail Poster
Top
dedal
Публикувано на: 29-04-2019, 16:00
Quote Post



Име: Григор Колев
Група: Потребител
Ранг: Посетител

Мнения: 104
Регистриран на: 17.11.10



QUOTE (ici @ 29-04-2019, 15:48)
QUOTE (dedal @ 29-04-2019, 16:37)
Нямам никаква идея какво е pyautogui.

А би трябвало! Не можеш да пренасочиш изкачащ прозорец от някакво приложение да пише в твоите хендлери за стдио стдаут.

Пак казвам НЯМАМ ИДЕЯ.
Обаче ако ти дам моя програма ще ти скочи прозорец няма връзка със сървър.
Ако преди теста импортирал лога, там пише към кое IP, на кой port, с какъв timeout, biffer и дали протокола е UDP или TCP а в 90% вади и грешката. Все пак като го пиша трябва и да го поправям.
При мен е така:
CODE

dial = wx.MessageDialog(None, *gui_lib.msg.NO_DB_CONNECTION)
dial.ShowModal()


Самия gui_lib.msg.NO_DB_CONNECTION е:
CODE

ERROR = _(u'Грешка!')
NO_DB_CONNECTION=( _(u'Няма връзка със сървъра!'), ERROR, wx.OK | wx.ICON_ERROR | wx.STAY_ON_TOP)


Да ама базата е:
CODE

engine = create_engine('postgresql://user:password@127.0.0.1:5432/db',
                          echo=True,
                          echo_pool=False,
                          pool_reset_on_return=True,
                          connect_args = {'connect_timeout':30}
                          )

И си печата всичко дето са го писали от sqlalchemy

Иначе мога и така:
CODE

app = wx.App(redirect='file.log')

Но това не работи както трябва, мога да хвана само мои грешки и като се бъгне базата няма намиране.

Това мнение е било редактирано от dedal на 29-04-2019, 16:16
PMEmail Poster
Top
ici
Публикувано на: 29-04-2019, 16:57
Quote Post


Group Icon
Име: Ивайло Илчев ики
Група: VIP
Ранг: Почетен член

Мнения: 16323
Регистриран на: 06.06.04



1. Да речем че става дума за автоматичен тест на GUI приложение. Нищо не връща. Реагира по неочакван начин.
2. Да речем че искаме да автоматизираме приложение което върши нещо което ни трябва, но го върши в ръчен режим - трябва да кликнем някъде, да изберем нещо от списък и прочие.


--------------------
Reading undefined locations provides undefined data.
PMEmail PosterUsers Website
Top
dedal
Публикувано на: 29-04-2019, 17:57
Quote Post



Име: Григор Колев
Група: Потребител
Ранг: Посетител

Мнения: 104
Регистриран на: 17.11.10



QUOTE (ici @ 29-04-2019, 16:57)
1. Да речем че става дума за автоматичен тест на GUI приложение. Нищо не връща. Реагира по неочакван начин.
2. Да речем че искаме да автоматизираме приложение което върши нещо което ни трябва, но го върши в ръчен режим - трябва да кликнем някъде, да изберем нещо от списък и прочие.

Мисля, не се разбрахме.
Да речем че е нещо от сорта: погледни снимката
Да ма на заден фон то връща та се къса.
При 10 000 реда, нямам друг начин да го дебъгна?
Казвам като човек който ги пише тези прозорци.

Наистина нямам идея кой е фреймуърка, няма представа какво точно прави pyautogui (предполагам редиректва грешките), ама това връща на 100%.
Иначе няма дебъгване и програмиста е мазохист.
Казвам от опит като човек който пише подобни програми.

Това мнение е било редактирано от dedal на 29-04-2019, 18:05

Прикачена картинка (Кликнете на картинката, за да я увеличите!)
Прикачена картинка
PMEmail Poster
Top
dedal
Публикувано на: 29-04-2019, 18:14
Quote Post



Име: Григор Колев
Група: Потребител
Ранг: Посетител

Мнения: 104
Регистриран на: 17.11.10



QUOTE (ici @ 29-04-2019, 16:57)
1. Да речем че става дума за автоматичен тест на GUI приложение. Нищо не връща. Реагира по неочакван начин.
2. Да речем че искаме да автоматизираме приложение което върши нещо което ни трябва, но го върши в ръчен режим - трябва да кликнем някъде, да изберем нещо от списък и прочие.

А за теста си кликам на всеки бутон един по един.
Е вярно по-бавно става, но за момента ми е ОК.
Пускам го преди компилация до C++
Явно аз не разбирам как се правят тестове. Няма да откажа да дадеш някой линк за четене.
Не ми е силна страна теста и ги карам едно към гьотере icon_lol.gif
Само да кажа, че при мен е не само клик има и два клика, десен и скрол. Отделно има и бързи бутони от сорта на ctrl+A, имам ресайз (минимизирай, максимизирай, преоразмери) където всеки елемент си сменя рамрера спрямо X, Y на Фрейма
И за момента намерих само това
UnitTest
След пане цъка вместо мен.

Това мнение е било редактирано от dedal на 29-04-2019, 18:35
PMEmail Poster
Top
dedal
Публикувано на: 29-04-2019, 18:38
Quote Post



Име: Григор Колев
Група: Потребител
Ранг: Посетител

Мнения: 104
Регистриран на: 17.11.10



Абе колко искате да дебъгнете 7 програми.
Те реално са свързани през сокет и си говорят като правят обща система.
Да изврънкам шефа за някой лев да даде, стига съм се гърчил като животно.
icon_smile.gif
И ако дойде някой много на ТИ с debian (ARM) никак няма да го върна icon_smile.gif

1. Python, pyserial (SMIB модул)
2. Python, pyglet (Джакпот Визуализация)
3. python, wxpython, sqlalchemy, postgresql (Отчет)
4. python, pyglet (Клиент модул)
5. python (Джакпот сървър)
6. python (Редирект сървър)
7. python, wxpython (настройки на сървър но ги вградих в отчета стоят за старите версии)

И всички използват socket, UDP

Това мнение е било редактирано от dedal на 29-04-2019, 18:50
PMEmail Poster
Top
0 потребители преглеждат тази тема в момента (0 гости, 0 анонимни потребители)
Потребители, преглеждащи темата в момента:

Topic Options Страници: (2) [1] 2  Reply to this topicStart new topicStart Poll

 


Copyright © 2003-2019 | BG Development | All Rights Reserved
RSS 2.0