Автоматизация пользовательского интерфейса Python Windows, чтобы нажать кнопку «Закрыть другие вкладки» в браузере MicroPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Автоматизация пользовательского интерфейса Python Windows, чтобы нажать кнопку «Закрыть другие вкладки» в браузере Micro

Сообщение Anonymous »

Я работаю с Python Uiautomation для Windows Library, чтобы создать сочетания клавиш, которые отсутствуют в Edge. Я хотел бы иметь возможность запустить скрипт Python, который нажимает кнопку «Закрыть другие вкладки» на вкладке браузера. Следующий код работает вплоть до последнего шага. Это не бросает исключение, но вместо этого нажимает в несколько случайном месте, которое не соответствует пункту меню, которое я указал. Каким -то образом смещение кажется неверным. Есть советы?import uiautomation as auto

# Find the Edge window
edge_window = auto.WindowControl(searchDepth=1, ClassName='Chrome_WidgetWin_1', Name_re='.* - Microsoft.*Edge')

# Find the browser tabs in the window
tab_control = edge_window.Control(searchDepth=6, ControlType=auto.ControlType.TabControl)

# Find the active tab from all available tabs and right-click it
selection_pattern = tab_control.GetPattern(auto.PatternId.SelectionPattern)
selected_tabs = selection_pattern.GetSelection()
active_tab = selected_tabs[0]
active_tab.RightClick()

# find the "close other tabs" from the context menu and left-click it
closeButton = edge_window.MenuItemControl(name='Close other tabs', ControlType=auto.ControlType.MenuItemControl)
closeButton.Click()
< /code>
Обновление - в соответствии с прокомментированным предложением, я нашел способ сделать это полностью в автоххии с библиотекой UIA, но я все равно хотел бы понять, почему код Python не работал. Вот решение AHK: < /p>
#include UIA-v2\Lib\UIA.ahk
#include UIA-v2\Lib\UIA_Browser.ahk
WinWaitActive "ahk_exe msedge.exe"
edgeWindow := UIA.ElementFromHandle("ahk_exe msedge.exe")
edge := UIA_Edge("")
tab := edge.GetTab()
tab.ShowContextMenu()
closeButton := edgeWindow.FindElement([{name:"Close other tabs"}])
closeButton.Click()
< /code>
Второе обновление: Оказывается, у меня была опечатка в коде, который я первоначально опубликовал здесь (исправлено выше-select_tabs должен был быть выбран_tabs ), но задача ключа заключалась в том, что элемент управления «Закрыть другие вкладки» не находился под Edge_window . Вместо этого мне нужно искать «Закройте другие вкладки» сверху. Следующий код теперь работает для достижения цели: < /p>
import uiautomation as auto

# Find the Edge window
edge_window = auto.WindowControl(searchDepth=1, ClassName='Chrome_WidgetWin_1', Name_re='.* - Microsoft.*Edge')

# Find the browser tabs in the window
tab_control = edge_window.Control(searchDepth=6, ControlType=auto.ControlType.TabControl)

# Find the active tab from all available tabs and right-click it
selection_pattern = tab_control.GetPattern(auto.PatternId.SelectionPattern)
selected_tabs = selection_pattern.GetSelection()
active_tab = selected_tabs[0]
active_tab.RightClick()

edge_window = auto.WindowControl(searchDepth=1, ClassName='Chrome_WidgetWin_1', Name_re='.* - Microsoft.*Edge')

# find the "close other tabs" from the context menu and left-click it
closeButton = auto.MenuItemControl(searchFromControl=None, Name='Close other tabs')
closeButton.Click()


Подробнее здесь: https://stackoverflow.com/questions/796 ... rosoft-edg
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»