Проблема копирования в буфер обмена с использованием tkinter и pyautogui - PullRequest
0 голосов
/ 13 марта 2019

Я работаю над программой автоматизации для просмотра / тестирования контента в стороннем приложении.В данный момент я собираюсь с pyautogui выделять и копировать значения (по крайней мере, пока мы не получим доступ для запроса базы данных приложений) и tkinter для извлечения данных из буфера обмена.

Сценарий ниже работал для копирования содержимого, которое можетбыть выделенным на экране (в разделе #get manager в скрипте).

Однако при переходе к разделу с текстовым телом (#QAR test 2) используйте pyautogui.hotkey ("Ctrl", "a"), чтобы выделить все, и pyautogui.hotkey ("Ctrl")., "c"), чтобы скопировать, похоже, что буфер обмена не заполнен (из-за сообщения об ошибке при попытке распечатать переменную, которой он был назначен).

Для справки я прилагаю экранвыстрел из целевого текста.Можно ли скопировать текст (в частности, абзацы) в буфер обмена?

Сообщение об ошибке, возникающее после теста #QAR 2:

Traceback (most recent call last):
  File "C:/Users/haudrxr/Downloads/PCA_5_5_18_QAR.py", line 92, in <module>
    background_tm= copy_clipboard()
  File "C:/Users/haudrxr/Downloads/PCA_5_5_18_QAR.py", line 10, in copy_clipboard
    clipboard = Tk().clipboard_get()
  File "C:\Users\haudrxr\AppData\Local\Continuum\anaconda3\lib\tkinter\__init__.py", line 804, in clipboard_get
    return self.tk.call(('clipboard', 'get') + self._options(kw))
_tkinter.TclError: CLIPBOARD selection doesn't exist or form "STRING" not defined

enter image description here

...
#Get Manager Value
x=115
y=450
for i in range (10):
    pyautogui.click(x, y)
    time.sleep(1)
    pyautogui.doubleClick(839, 567)
    pyautogui.hotkey("Ctrl","c")
    level=copy_clipboard()
    y += 23
    if level=="1":
        pyautogui.mouseDown(750, 437,button="left",duration=1)
        pyautogui.dragTo(1049, 437,1, button='left')
        pyautogui.hotkey("Ctrl", "c")
        staffname = copy_clipboard()
        if len(staffname)>1:
            team_tab.append(staffname)
            print(team_tab)
    else:
        continue

    team_tab = list(filter(None, team_tab))  # fastest
    print(len(team_tab))
if len(team_tab)>2:
    print("QAR Item 1: PASS")
else:
    print("QAR Item 1: FAIL")

#QAR Test 2
if windll.user32.OpenClipboard(None):
    windll.user32.EmptyClipboard()
    windll.user32.CloseClipboard()
pyautogui.click(262, 162) # navigates to tab with text box
pyautogui.click(614, 314) #clicks in text box
pyautogui.hotkey("Ctrl", "a")
pyautogui.hotkey("Ctrl", "c")
background_tm= copy_clipboard()
time.sleep(10)
print(background_tm)
print("test1")
...