簡體   English   中英

Pywinauto 沒有在 Mozilla 地址欄中輸入地址

[英]Pywinauto Not Entering Address into Mozilla Address bar

app = pywinauto.Application(backend="win32").start("C:\\Program Files\\Mozilla Firefox\\firefox.exe")
app = pywinauto.Application(backend="win32").connect(title_re='.*Mozilla Firefox', timeout=5)
dlg_spec = app.window(title="Mozilla Firefox", class_name="MozillaWindowClass")
#dlg_spec.print_control_identifiers()
child_window = dlg_spec.child_window(class_name="MozillaCompositorWindowClass")
address_bar = child_window.child_window(control_type='Edit', class_name='Edit')
address_bar.set_edit_text("https://google.com")

上面的腳本啟動 Mozilla Firefox window,然后在大約 5-10 秒后拋出以下運行時錯誤:

pywinauto.timings.TimeoutError: 

During handling of the above exception, another exception occurred:

  <script_path> line 61, in <module>
    address_bar.set_edit_text("https://google.com")
    ^^^^^^^^^^^^^^^^^^^^^^^^^
pywinauto.findwindows.ElementNotFoundError: {'control_type': 'Edit', 'class_name': 'Edit', 'top_level_only': False, 'parent': <win32_element_info.HwndElementInfo - '', MozillaCompositorWindowClass, 6883088>, 'backend': 'win32'}

以下注釋掉的代碼顯示似乎表明我的控件標識符是正確的。 運行#dlg_spec.print_control_identifiers()產生:

MozillaWindowClass - 'Mozilla Firefox' (L-1928, T-8, R8, B1040) ['MozillaWindowClass', 'Mozilla FirefoxMozillaWindowClass', 'Mozilla Firefox'] child_window(title="Mozilla Firefox", class_name="MozillaWindowClass") | | MozillaCompositorWindowClass - '' (L-1920, T0, R0, B1032) | ['MozillaCompositorWindowClass'] | child_window(class_name="MozillaCompositorWindowClass")

預期結果:我期待 Firefox 的啟動實例導航到指定的 URL。

我嘗試過的事情: time.sleep幾秒鍾,想可能是在加載之前嘗試訪問地址欄。嘗試了Type_keys或與set_edit_text非常相似的方法。 還有其他幾件事。

我不確定發生了什么。 任何幫助將不勝感激

如果您可以使用鍵盤快捷鍵自動執行此操作,則只需發送Ctrl + L ,粘貼/輸入您的地址,然后發送Enter即可導航至您的 url。

使用pywinauto.keyboard.send_keys()

import pywinauto as pwa

# start firefox
app = pwa.Application(backend="win32").start("C:\\Program Files\\Mozilla Firefox\\firefox.exe")
# wait for it to start (we can also use time.sleep(5) here if waiting everytime is not a problem)
app = pywinauto.Application(backend="win32").connect(title_re='.*Mozilla Firefox', timeout=5)
# set address bar as active using Ctrl + L, type our url then press Enter
pwa.keyboard.send_keys('^l{BACKSPACE}https://google.com{ENTER}')

如果您想使用 pywinauto 的 window 規范方法進行自動化,我建議您首先嘗試確保您使用的“win32”后端確實適合您的用例。 另外,如果您是 pywinauto 的新手,我建議您看一下Magic Attributes

使用 window 規范方法和“uia”后端:

import pywinauto as pwa
from time import sleep

firefox = pwa.Application(backend="win32").start("C:\\Program Files\\Mozilla Firefox\\firefox.exe")
sleep(5)
firefox = pwa.Application(backend="uia").connect(title_re='.*Mozilla Firefox', timeout=5)
# firefox.print_control_identifiers(depth=4)
# NOTE: The magic attribute lookup is very slow, could take even 30 secs
address_bar = firefox.Mozilla_Firefox.Navigation.ComboBox.Edit
address_bar.set_edit_text('https://google.com')

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM