เบซเปเบญเบเบชเบฐเปเบธเบ Python เปเบเบฑเบเปเบเบเบเบฒเบเปเบซเบผเปเบเปเบเบตเบเปเบเบทเปเบญเบญเบฑเบเบเบฐเปเบเบกเบฑเบเปเบญเบฑเบเบเบฅเบดเปเบเบเบฑเบ GUI เปเบเบดเบ Windows. เปเบเปเบฅเบเบฐเบชเบญเบเบเบตเบเบตเปเบเปเบฒเบเบกเบฒ, เบฅเบฑเบเบชเบฐเบเบฐเบเบตเปเบชเปเบฒเบเบฑเบเปเบซเบกเปเปเบเปเบเบฒเบเบปเบเบขเบนเปเปเบเบกเบฑเบ:
- เบฎเบญเบเบฎเบฑเบเปเบเบฑเบเปเบเปเบฅเบเบต MS UI Automation. เบเบฒเบเปเบเปเบเบญเบเปเบกเปเบเบเบทเบเบฑเบ, เปเบฅเบฐเปเบเบเบฑเบเบเบธเบเบฑเบเบกเบฑเบเบชเบฐเบซเบเบฑเบเบชเบฐเบซเบเบนเบ: WinForms, WPF, Qt5, Windows Store (UWP) เปเบฅเบฐเบญเบทเปเบเป - เปเบเบทเบญเบเบเบธเบเบชเบดเปเบเบเบตเปเบขเบนเปเปเบ Windows.
- เบฅเบฐเบเบปเบเบเบญเบ backends/plugins (เบเบฐเบเบธเบเบฑเบเบกเบตเบชเบญเบเบญเบฑเบเบเบฒเบเปเบเป hood: เบเปเบฒเปเบฅเบตเปเบกเบเบปเปเบ
"win32"เปเบฅเบฐ เปเปเป"uia"). เบซเบผเบฑเบเบเบฒเบเบเบฑเปเบ, เบเบงเบเปเบฎเบปเบฒเบเปเบฒเบงเปเบเบชเบนเปเบเบฒเบเบเปเบฒเบกเปเบงเบเบต. - Win32 hook เบชเปเบฒโเบฅเบฑเบโเบซเบเบนโเปเบฅเบฐ keyboard (เบเบธเปเบกโเบฎเปเบญเบโเปเบโเบเบดเบโเปเบโเบเบญเบ pyHookโ)โ.
เบเบงเบเปเบฎเบปเบฒเบเบฑเบเบเบฐเปเบซเปเบเบฒเบเบฅเบงเบกเบชเบฑเปเบเปเบเปเบฝเบงเบเบฑเบเบชเบดเปเบเบเบตเปเบกเบตเบขเบนเปเปเบเปเบซเบผเปเบเปเบเบตเบเบชเปเบฒเบฅเบฑเบเบเบฒเบเบญเบฑเบเบเบฐเปเบเบกเบฑเบ desktop (เปเบเบเบเปเปเบกเบตเบเบฒเบเบเปเบฒเบเปเบฒเปเบเบฑเบเบเบฒเบเบเบฝเบเบเบฝเบเบเบตเปเบฎเบธเบเปเบฎเบ).
เบเบปเบโเบเบงเบฒเบกโเบเบตเปโเปเบกเปเบโเบเบปเบโเบฅเบฒเบโเบเบฒเบโเบเบฒเบโเบชเปเบงเบโเบเบญเบโเบเบปเบโเบฅเบฒเบโเบเบฒเบโเบเบฒเบโเบเบญเบโเบเบฐโเบเบธเบก SQA Days 20 เปเบ Minsk ( ะธ ), เบชเบฐเบเบฑเบเบเบฒเบชเบฒเบฅเบฑเบเปเบเบเบเบฒเบเบชเปเบงเบ เบชเปเบฒเบฅเบฑเบ pywinauto.
- เบงเบดเบเบตเบเบฒเบเบเบทเปเบเบเบฒเบ
- เปเบเบฑเบโเปเบโเปเบฅโเบเบตโเบเบฒเบโเปเบเบปเปเบฒโเปเบเบดเบโเบเบทเปเบโเบเบฒเบ desktopโ
เปเบซเปเปเบฅเบตเปเบกเบเบปเปเบเบเปเบงเบเบเบฒเบเบฅเบงเบกเบชเบฑเปเบเปเบเบญเบเปเบซเบผเปเบเปเบเบตเบเปเบเบเบปเบเปเบเบเบเบตเป. เบชเปเบฒเบฅเบฑเบเบเปเบฒเบฎเปเบญเบเบชเบฐเบซเบกเบฑเบ GUI desktop, เบเบธเบเบชเบดเปเบเบเบธเบเบขเปเบฒเบเปเบกเปเบเบเปเบญเบเบเปเบฒเบเบชเบฑเบเบชเบปเบเบซเบผเบฒเบเบเปเบงเบฒเปเบงเบฑเบ, เปเบเบดเปเบเบกเบต Selenium. เบเบตเปเปเบกเปเบเบงเบดเบเบตเบเบฒเบเบเบปเปเบเบเป:
เบงเบดเบเบตเบเบฒเบเบเบฐเบชเบฒเบเบเบฒเบ
Hardcode เบเบธเบเบเบฅเบดเบ, เบเบงเบเปเบฎเบปเบฒเบซเบงเบฑเบเบงเปเบฒเบเบฐเปเบเป hits เบชเบปเบเบเบปเบเบชเปเบฒเปเบฅเบฑเบ.
[+] เบเปเบฒเบกเปเบงเบเบต, เบเปเบฒเบเบเบตเปเบเบฐเบเบฐเบเบดเบเบฑเบ.
[+] เบกเบฑเบเบเปเบฒเบเบเบตเปเบเบฐ "record-play" เบเบฒเบเบเบฑเบเบเบถเบเบเบฒเบเบเบปเบเบชเบญเบ.
[-] เบเบงเบฒเบกเบเปเปเบชเบฐเบเบฝเบเบเบตเปเบชเบธเบเบเปเปเบเบฑเบเบเบฒเบเบเปเบฝเบเปเบเบเบเบงเบฒเบกเบฅเบฐเบญเบฝเบเปเปเบฒเบเป, เบฎเบนเบเปเบเบเบชเบตเบชเบฑเบ, เบเบปเบงเบญเบฑเบเบชเบญเบ, เบเบฐเปเบฒเบเปเปเบฒเบเป, เปเบฅเบฐเบญเบทเปเบเป.
[-] เบเปเบญเบเบเบฒเบเบเบงเบฒเบกเบเบฐเบเบฒเบเบฒเบกเบชเบฐเปเบฑเบเบชเบฐเปเบนเบเบญเบฑเบเปเบซเบเปเบซเบผเบงเบ;
[-] เบญเบฑเบเบเบฐเปเบเบกเบฑเบเบเบฐเบเบดเบเบฑเบเบเบฝเบเปเบเป;
เปเบเบทเปเบญเบโเบกเบท (เบเปเบฒเบกโเปเบงโเบเบตโ)โ: , , เปเบฅเบฐเบญเบทเปเบเปเบเปเบฒเบเบงเบเบซเบผเบฒเบ. เปเบเบเบเบปเบเบเบฐเบเบด, เปเบเบทเปเบญเบเบกเบทเบเบตเปเบชเบฑเบเบชเบปเบเบซเบผเบฒเบเบเบฐเบเบญเบเบกเบตเบเบฒเบเปเบฎเบฑเบเบงเบฝเบเบเบตเป (เบเปเปเบชเบฐเปเบซเบกเบตเปเบเบเปเบฒเบกเปเบงเบเบต).
เบกเบฑเบเปเบเบฑเบเบกเบนเบเบเปเบฒเบเบตเปเปเบงเบปเปเบฒเบงเปเบฒเบงเบดเบเบตเบเบฒเบเบเบฐเบชเบฒเบเบเบฒเบเบชเบฒเบกเบฒเบเบเบฐเบเบญเบเบงเบดเบเบตเบเบฒเบเบญเบทเปเบเป. เบชเปเบฒเบฅเบฑเบเบเบปเบงเบขเปเบฒเบ, เบชเปเบฒเบฅเบฑเบเบฎเบนเบเบเบฒเบเบเบตเปเบเปเบฒเบซเบเบปเบเปเบญเบ, เบเปเบฒเบเบชเบฒเบกเบฒเบเบเบฅเบดเบเปเบชเปเบเบฒเบเบเบฐเบชเบฒเบเบเบฒเบเบเบตเปเบเปเบฝเบงเบเปเบญเบ (เบเบฒเบเบกเบธเบกเบเปเบฒเบเปเบเบดเบเบเบญเบเบเปเบญเบเบขเปเบฝเบก / เบญเบปเบเบเบฐเบเบญเบ, เปเบฅเบฐเบเปเปเปเบกเปเบเบซเบเปเบฒเบเปเบเบฑเบเบซเบกเบปเบ) - เบเบตเปเปเบกเปเบเบเปเบญเบเบเปเบฒเบเปเบเบทเปเบญเบเบทเปเบเป, เปเบเบเบชเบฐเปเบเบฒเบฐเบเปเบฒเบซเบฒเบเบงเปเบฒเบเปเบฒเบเบเปเบฒเบเบถเบเปเบเบดเบเบเบงเบฒเบกเบเบฒเบง / เบเบงเบฒเบกเบเบงเปเบฒเบเบเบญเบ. เบญเบปเบเบเบฐเบเบญเบเบเบฑเบเบซเบกเบปเบ (เบซเบผเบฑเบเบเบฒเบเบเบฑเปเบเบเบฒเบเปเบเปเปเบเบซเบเปเบฒเบเปเบเบตเปเปเบเบเบเปเบฒเบเบเบฑเบเบเบฐเบเปเปเปเบเบฑเบเบเบงเบ).
เบเบฒเบเปเบฅเบทเบญเบเบญเบทเปเบ: เบเบฑเบเบชเบฑเบเปเบเบทเปเบญเบเบเบฝเบงเบเบตเปเบกเบตเบเบฒเบเบเบฑเปเบเบเปเบฒเบเบตเปเบซเบกเบฑเปเบเบเบปเบเบชเปเบฒเบฅเบฑเบเบเบฒเบเบเบปเบเบชเบญเบ (เบเปเปเปเบกเปเบเบเปเบฒเบกเปเบงเบเบต, เปเบเปเปเบเบเบฒเบเบเปเบฅเบฐเบเบตเบกเบฑเบเบเบต).
เบเบฒเบเบฎเบฑเบเบฎเบนเปเบฎเบนเบเบเบฒเบเบญเปเบฒเบเบญเบตเบ
[+] เบเปเบฒเบกเปเบงเบเบต[+-] เบเปเบญเบเบเปเบฒเบเปเบเบทเปเบญเบเบทเปเบเป (เบเบตเบเบงเปเบฒเบงเบดเบเบตเบเบฒเบเบเบฐเบชเบฒเบเบเบฒเบ), เปเบเปเบเบฑเบเบเปเบญเบเบเบฒเบ tricks เบเบฒเบ.
[-+] เบเปเบญเบเบเปเบฒเบเบเปเบฒ, เปเบเบฒเบฐเบงเปเบฒ เบเปเบญเบเบเบฒเบเบเบฑเบเบเบฐเบเบฒเบเบญเบ CPU เบชเปเบฒเบฅเบฑเบเบชเบนเบเบเบฒเบเบฎเบฑเบเบฎเบนเป.
[-] เบเบฒเบเบฎเบฑเบเบฎเบนเปเบเปเปเบเบงเบฒเบก (OCR), เบเบฒเบกเบเบปเบเบฅเบฐเบเบฝเบ, เปเบกเปเบเบเปเปเบกเบตเบเปเบฒเบเบฒเบก => เบเปเปเบกเบนเบเบเปเปเบเบงเบฒเบกเบเปเปเบชเบฒเบกเบฒเบเปเบเปเบฎเบฑเบ. เปเบเบปเปเบฒเบเบตเปเบเปเบฒเบเบฐเปเบเบปเปเบฒเบฎเบนเป, เบเบฒเบเปเบเปเปเบ OCR เบเบตเปเบกเบตเบขเบนเปเปเบกเปเบเบเปเปเบกเบตเบเบงเบฒเบกเบซเบเปเบฒเปเบเบทเปเบญเบเบทเบซเบผเบฒเบเบชเปเบฒเบฅเบฑเบเบงเบฝเบเบเบฒเบเบเบฐเปเบเบเบเบตเป, เปเบฅเบฐเบเปเปเปเบเปเบเบทเบเบเปเบฒเปเบเปเบขเปเบฒเบเบเบงเปเบฒเบเบเบงเบฒเบ (เบเบดเบเบเบตเบเปเบญเบเบฎเบฑเบเปเบเบเปเบฒเปเบซเบฑเบเบเปเบฒเบเบตเปเบเปเปเปเบกเปเบเบเปเบฅเบฐเบเบต).
เปเบเบทเปเบญเบเบกเบท: , (Sikuli-เปเบเบปเปเบฒเบเบฑเบเปเบเป, Python เบเปเบฅเบดเบชเบธเบ), .
เปเบเบฑเบเปเบเปเบฅเบเบตเบเบฒเบเปเบเบปเปเบฒเปเบเบดเบ
[+] เบงเบดเบเบตเบเบฒเบเบเบตเปเปเบเบทเปเบญเบเบทเปเบเปเบซเบผเบฒเบเบเบตเปเบชเบธเบ, เปเบเบทเปเบญเบเบเบฒเบเบงเปเบฒ เบญเบฐเบเบธเบเบฒเบเปเบซเปเบเปเบฒเบเบเบปเปเบเบซเบฒเบเปเบงเบเบเปเปเบเบงเบฒเบก, เปเบเบเบเปเปเบเปเบฒเบเบถเบเปเบเบดเบเบงเบดเบเบตเบเบฒเบเบชเบฐเปเบเบเปเบเบเบฅเบฐเบเบปเบเบซเบผเบทเบเบญเบ.[+] เบญเบฐเบเบธเบเบฒเบเปเบซเปเบเปเบฒเบเบชเบฐเบเบฑเบเบเปเปเบกเบนเบเบเปเปเบเบงเบฒเบก => เบเปเบฒเบเบเปเปเบเบฒเบเบเบงเบเบชเบญเบเบเบปเบเบเบฒเบเบเบปเบเบชเบญเบ.
[+] เบเบฒเบกเบเบปเบเบฅเบฐเบเบฝเบ, เปเบงเบเบตเปเบชเบธเบ, เปเบเบฒเบฐเบงเปเบฒ เปเบเบทเบญเบเบเปเปเบกเบตเบเบฑเบเบเบฐเบเบฒเบเบญเบ CPU.
[-] เบกเบฑเบเปเบเบฑเบเบเบฒเบเบเบฒเบเบเบตเปเบเบฐเบชเปเบฒเบเปเบเบทเปเบญเบเบกเบทเบเปเบฒเบกเปเบงเบเบต: เบขเปเบฒเบเปเบเปเบเบดเบเบเบธเบเบซเปเบญเบเบชเบฐเบซเบกเบธเบ open-source เบชเบฐเบซเบเบฑเบเบชเบฐเบซเบเบนเบเบซเบเบถเปเบเบซเบผเบทเบชเบญเบเปเบเบฑเบเปเบเปเบฅเบเบตเบเบฒเบเปเบเบปเปเบฒเปเบเบดเบ. Windows/Linux/MacOS เบเปเปเปเบเปเบฎเบฑเบเบเบฒเบเบชเบฐเปเบฑเบเบชเบฐเปเบธเบเบขเปเบฒเบเปเบเบฑเบกเบเบตเปเบเบฒเบเปเบเบเปเบเบฒเบก เบเบปเบเปเบงเบฑเปเบเบญเบฑเบเบเบตเปเบเปเบฒเบเปเบฅเปเบงเปเบเบฑเปเบ TestComplete, UFT เบซเบผเบท Squish.
[-] เปเบเบฑเบเปเบเปเบฅเบเบตเบเบฑเปเบเบเปเบฒเบงเบเปเปเบชเบฐเปเบซเบกเบตเปเบเปเบเบซเบผเบฑเบเบเบฒเบ. เบเบปเบงเบขเปเบฒเบ, เบเบฒเบเบเบปเบเบชเบญเบเบเบฒเบเปเบซเบผเบเบซเบเปเบฒเบเปเบเบฒเบเปเบ VirtualBox - เบเบตเปเบเปเปเบชเบฒเบกเบฒเบเปเบฎเบฑเบเปเบเปเปเบเบเบเปเปเบกเบตเบเบฒเบเบฎเบฑเบเบฎเบนเปเบฎเบนเบเบเบฒเบ. เปเบเปเปเบเบซเบผเบฒเบเปเบเปเบฅเบฐเบเบตเบเบฅเบฒเบชเบชเบดเบ, เบงเบดเบเบตเบเบฒเบเปเบเบปเปเบฒเปเบเบดเบเปเบกเปเบเบเบฑเบเปเบเปเปเบเป. เบเบตเปเบเบฐเบเบทเบเบเบถเบเบชเบฒเบซเบฒเบฅเบทเบเบทเปเบกเบญเบตเบ.
เปเบเบทเปเบญเบเบกเบท: เปเบ C#, เปเบ C# (Selenium เปเบเบปเปเบฒเบเบฑเบเปเบเป), เปเบ C# (Appium เปเบเบปเปเบฒเบเบฑเบเปเบเป), , (LDTP เปเบเบปเปเบฒเบเบฑเบเปเบเป) , เปเบ Ruby, (เปเบเบเบเบฒเบเบเบปเบเบชเบญเบ Linux Desktop) เปเบฅเบฐเบฅเบธเปเบ Windows เบเบญเบเบกเบฑเบ .
LDTP เบเบฒเบเบเบตเบญเบฒเบเปเบเบฑเบเปเบเบทเปเบญเบเบกเบทเปเบญเปเบเบเบเบญเบเบเปเบฒเบกเปเบเบฅเบเบเบญเบกเปเบเบปเปเบฒเบเบฑเปเบ (เบเบตเปเบเบฑเบเปเบเบเบเบงเปเบฒเบเบฑเปเบ, เปเบเบฑเบเบเบญเบเบเบปเบงเบเบญเบเบซเปเบญเบเบชเบฐเปเบธเบ) เปเบเบเบญเบตเบเปเบชเปเปเบเบฑเบเปเบเปเบฅเบเบตเบเบฒเบเบเปเบงเบเปเบเบปเปเบฒเปเบเบดเบ. เบขเปเบฒเบเปเบเบเปเบเบฒเบก, เบกเบฑเบเบเปเปเปเบกเปเบเปเบเบฑเบเบเบตเปเบเบดเบเบปเบกเบซเบผเบฒเบ. เบเปเบฒโเบเบฐโเปเบเบปเปเบฒโเบเปเปโเปเบเปโเบเปเบฒโเปเบเปโเบกเบฑเบโเปเบญเบโ, เปเบเปโเบญเบตเบโเบเบฒเบกโเบเบฒเบโเบเบปเบโเบเบงเบโเบเบทเบโ, เบเบฒเบโเปเบเปโเบเบญเบโเบเบญเบโเบกเบฑเบโเบเปเปโเปเบกเปเบโเบชเบฐโเบเบงเบโเบเบตเปโเบชเบธเบโ. เบเปเบฒเบเปเบฒเบเบกเบตเบเบงเบฒเบกเบเบดเบเปเบซเบฑเบเปเบเบเบฒเบเบเบงเบ, เบเบฐเบฅเบธเบเบฒเปเบเปเบเบเบฑเบเบกเบฑเบเปเบเบเปเบฒเปเบซเบฑเบ.
เบเบปเบเบชเบญเบ backdoor (aka indoor bike)
เบชเปเบฒเบฅเบฑเบเบเปเบฒเบฎเปเบญเบเบชเบฐเบซเบกเบฑเบเบเปเบฒเบกเปเบงเบเบต, เบเบฑเบเบเบฑเบเบเบฐเบเบฒเปเบญเบเบกเบฑเบเบเบฐเบชเปเบฒเบเบเบปเบเปเบเบเบฒเบเปเบเปเบเบทเปเบญเบฎเบฑเบเบเบฐเบเบฑเบเบเบฒเบเบเบปเบเบชเบญเบ. เบเบปเบงเบขเปเบฒเบ, เบเบงเบเปเบเบปเบฒเบชเปเบฒเบเบเปเบฅเบดเบเบฒเบเปเบเบตเบเปเบงเบต TCP เปเบเปเบญเบฑเบเบเบฅเบดเปเบเบเบฑเบ, เบเบฒเบเบเบปเบเบชเบญเบเปเบเบทเปเบญเบกเบเปเปเบเบฑเบเบกเบฑเบเปเบฅเบฐเบชเบปเปเบเบเปเบฒเบชเบฑเปเบเบเปเปเบเบงเบฒเบก: เบชเบดเปเบเบเบตเปเบเปเบญเบเบเบฅเบดเบเปเบชเป, เบเปเบญเบเบเบตเปเปเบเปเบฎเบฑเบเบเปเปเบกเบนเบ, เปเบฅเบฐเบญเบทเปเบเป. เปเบเบทเปเบญเบเบทเปเบเป, เปเบเปเบเปเปเปเบกเปเบเบเบปเปเบงเปเบ.
เปเบเบฑเบโเปเบโเปเบฅโเบเบตโเบเบฒเบโเปเบเบปเปเบฒโเปเบเบดเบโเบเบทเปเบโเบเบฒเบ desktopโ
เบเบตเปเบเบปเปเบฒ Win32 API
เบเปเบฒเบฎเปเบญเบเบชเบฐเบซเบกเบฑเบ Windows เบชเปเบงเบเปเบซเบเปเบเบตเปเบเบฝเบเปเบงเปเบเปเบญเบเบเบฒเบเบเปเบญเบ WPF เปเบฅเบฐเบซเบผเบฑเบเบเบฒเบเบเบฑเปเบ Windows Store เบเบทเบเบชเปเบฒเบเบเบถเปเบเปเบ Win32 API เปเบเบเบฒเบเบซเบเบถเปเบเบซเบผเบทเบญเบทเปเบ. เบเบท, MFC, WTL, C ++ Builder, Delphi, VB6 - เปเบเบทเปเบญเบเบกเบทเบเบฑเบเบซเบกเบปเบเปเบซเบผเบปเปเบฒเบเบตเปเปเบเป Win32 API. เปเบเบดเบเปเบกเปเบเบงเปเบฒ Windows Forms เบชเปเบงเบเปเบซเบเปเปเบกเปเบ Win32 API เปเบเบปเปเบฒเบเบฑเบเปเบเป.
เปเบเบทเปเบญเบเบกเบท: (เบเปเบฒเบเบเบฑเบ VB) เปเบฅเบฐ Python wrapper , (เบเบฒเบชเบฒเบเบญเบเบเบปเบเปเบญเบ, เบกเบตเบเบฒเบเปเบเปเบเบญเบ IDispatch COM), ( python ) (Ruby) (เบฃเบนเบเบต).
Microsoft UI เบญเบฑเบเบเบฐเปเบเบกเบฑเบ
เบเบฐเปเบซเบเบเบเบปเปเบเบเป: เปเบเบฑเบเปเบเปเบฅเบเบต MS UI Automation เบชเบฐเบซเบเบฑเบเบชเบฐเบซเบเบนเบเบเปเบฒเบฎเปเบญเบเบชเบฐเบซเบกเบฑเบ GUI เบชเปเบงเบเปเบซเบเปเปเบ Windows เปเบเบเบกเบตเบเปเปเบเบปเบเปเบงเบฑเปเบเบเบตเปเบซเบฒเบเบฒเบ. เบเบฑเบเบซเบฒ: เบกเบฑเบเบเปเปเบเปเบฒเบเบเบถเปเบเบซเบผเบฒเบเบเบตเปเบเบฐเบฎเบฝเบเบฎเบนเปเบเปเบงเบฒ Win32 API. เบเปเบฒเบเปเปเบเบฑเปเบเบเบฑเปเบ, เบเปเปเบกเบตเปเบเปเบฎเบฑเบ wrappers เปเบเบดเบเบกเบฑเบ.
เปเบเบเบงเบฒเบกเปเบเบฑเบเบเบดเบ, เบเบตเปเปเบกเปเบเบเบธเบเบเบญเบเบเบฒเบเปเบเปเบเบญเบ COM เบเบตเปเบเปเบฒเบซเบเบปเบเปเบญเบ (เบเบปเปเบเบเป UIAutomationCore.dll), เปเบฅเบฐเบเบฑเบเบกเบต .NET wrapper เปเบเบฎเบนเบเปเบเบ namespace System.Windows.Automation. เปเบเบเบงเบดเบเบตเบเบฒเบเบเบฒเบ, เบกเบฑเบเบกเบตเบเปเปเบเบปเบเบเปเบญเบเบเบตเปเปเบเบฐเบเปเบฒเปเบเบทเปเบญเบเบเบฒเบเบเบฒเบเบญเบปเบเบเบฐเบเบญเบ UI เบญเบฒเบเบเบฐเบเบฒเบ. เบเบฑเปเบเบเบฑเปเบ, เบกเบฑเบเบเบตเบเบงเปเบฒเบเบตเปเบเบฐเปเบเป UIAutomationCore.dll เปเบเบเบเบปเบ (เบเปเบฒเบเปเบฒเบเปเบเปเบเบดเบเบเปเบฝเบงเบเบฑเบ UiaComWrapper เปเบ C#, เบเบตเปเปเบกเปเบเบกเบฑเบ).
เบเบฐเปเบเบเบเบญเบเบเบฒเบเปเบเปเบเบญเบ COM:
(1) IU เบเบทเปเบเบเบฒเบเบเบตเปเบฎเบนเปเบเบฑเบ - "เบฎเบฒเบเบเบญเบเบเบงเบฒเบกเบเบปเปเบงเบฎเปเบฒเบเบเบฑเบเบซเบกเบปเบ". เบฅเบฐเบเบฑเบเบเปเปเบฒเบชเบธเบ, เบเปเปเปเบเบตเบเปเบเบฑเบเบกเบดเบเบเบฑเบเบเบนเปเปเบเป.
(2) IDispatch เปเบฅเบฐ derivatives (eg Excel.Application), เปเบเบดเปเบเบชเบฒเบกเบฒเบเบเบทเบเบเปเบฒเปเบเปเปเบ Python เปเบเบเปเบเปเบเบธเบ win32com.client (เบฅเบงเบกเบเบฑเบ pyWin32). เบเบฒเบเปเบฅเบทเบญเบเบเบตเปเบชเบฐเบเบงเบเปเบฅเบฐเบชเบงเบเบเบฒเบกเบเบตเปเบชเบธเบ.
(3) เบเบฒเบเปเบเปเบเบญเบเปเบเบเบเบณเบเบปเบเปเบญเบเบเบตเปเปเบเบฑเบเปเบเบฑเบ Python เบเบฒเบเบชเปเบงเบเบเบตเบชเบฒเบกเบชเบฒเบกเบฒเบเปเบฎเบฑเบเบงเบฝเบเปเบเปเบเบฑเบ .
เปเบเบทเปเบญเบเบกเบท: เปเบ C#, 0.6.0+, เปเบ C#, (เบฅเบฐเบซเบฑเบเปเบซเบผเปเบเบเบญเบเบเบงเบเปเบเบปเบฒเบชเปเบฒเบฅเบฑเบ C wrappers เบเปเบฒเบ UIAutomationCore.dll เบเปเปเปเบเปเบเบทเบเปเบเบตเบเปเบเบตเบ), เปเบ Ruby.
AT-SPI
เปเบเบดเบเบงเปเบฒเบเบฐเบกเบตเบเบงเบฒเบกเบเบดเบเบเบตเปเบงเปเบฒเปเบเบทเบญเบเบเบธเบเปเบเบเบเบญเบเบเบญเบเบเบปเบง Linux เบเบทเบเบชเปเบฒเบเบเบถเปเบเปเบ X Window System (เปเบ Fedora 25, "X's" เบเบทเบเบเปเบฝเบเปเบเบฑเบ Wayland), "X's" เบเปเบงเบเปเบซเปเบเปเบฒเบเบชเบฒเบกเบฒเบเบเปเบฒเปเบเบตเบเบเบฒเบเบเบฝเบเปเบเปเบเปเบญเบเบขเปเบฝเบกเบฅเบฐเบเบฑเบเบชเบนเบเบชเบธเบเปเบฅเบฐเบซเบเบน / เปเบเปเบเบเบดเบก. เบชเปเบฒเบฅเบฑเบเบเบฒเบเบงเบดเปเบเบฒเบฐเบฅเบฒเบเบฅเบฐเบญเบฝเบเบเบญเบเบเบธเปเบก, เบเปเบญเบเบฅเบฒเบเบเบทเป, เปเบฅเบฐเบญเบทเปเบเป, เบกเบตเปเบเบเปเบเปเบฅเบเบต AT-SPI. เบเบนเปเบเบฑเบเบเบฒเบเบเปเบญเบเบขเปเบฝเบกเบเบตเปเบเบดเบเบปเบกเบซเบผเบฒเบเบเบตเปเบชเบธเบเบกเบตเบญเบฑเบเบเบตเปเปเบญเบตเปเบเบงเปเบฒ daemon registry AT-SPI, เปเบเบดเปเบเบชเบฐเบซเบเบญเบ GUI เบญเบฑเบเบเบฐเปเบเบกเบฑเบเบชเปเบฒเบฅเบฑเบเปเบญเบฑเบเบเบฅเบดเปเบเบเบฑเบ (เบขเปเบฒเบเบซเบเปเบญเบ Qt เปเบฅเบฐ GTK เปเบเปเบฎเบฑเบเบเบฒเบเบชเบฐเบซเบเบฑเบเบชเบฐเบซเบเบนเบ).
เปเบเบทเปเบญเบเบกเบท: .
pyatspi2, เปเบเบเบงเบฒเบกเบเบดเบเปเบซเบฑเบเบเบญเบเบเปเบญเบ, เบเบฐเบเบญเบเบเปเบงเบเบเบฒเบเปเบเบดเปเบเบเบฒเบญเบฒเปเบชเบซเบผเบฒเบเปเบเบตเบเปเบเปเบเบฑเปเบ PyGObject. เปเบเบฑเบเปเบเปเบฅเบขเบตเบเบญเบเบกเบฑเบเปเบญเบเปเบกเปเบเบกเบตเบขเบนเปเปเบเบซเปเบญเบเบชเบฐเบซเบกเบธเบเปเบเบเปเบเบทเปเบญเบเปเบซเบงเบเบปเบเบเบฐเบเบด libatspi.so. เบกเบต . เบชเปเบฒเบฅเบฑเบเบซเปเบญเบเบชเบฐเบซเบกเบธเบ pywinauto เบเบงเบเปเบฎเบปเบฒเบงเบฒเบเปเบเบเบเบตเปเบเบฐเบเบฐเบเบดเบเบฑเบเบเบฒเบเบชเบฐเบซเบเบฑเบเบชเบฐเบซเบเบนเบ AT-SPI เบเปเบงเบเบงเบดเบเบตเบเบตเป: เปเบเบเบเปเบฒเบเบเบฒเบเปเบซเบฅเบ libatspi.so เปเบฅเบฐเปเบกเบเบนเบ ctypes. เบกเบตเบเบฑเบเบซเบฒเปเบฅเบฑเบเบเปเบญเบเบเบฝเบเปเบเปเปเบเบเบฒเบเบเปเบฒเปเบเปเบชเบฐเบเบฑเบเบเบตเปเบเปเบฒเบเบปเบเปเบงเป, เปเบเบฒเบฐเบงเปเบฒเบชเปเบฒเบฅเบฑเบเบเปเบฒเบฎเปเบญเบเบชเบฐเบซเบกเบฑเบ GTK + เปเบฅเบฐ Qt เบกเบตเบเบงเบฒเบกเปเบเบเบเปเบฒเบเบเบฑเบเปเบฅเบฑเบเบเปเบญเบ. เบเบงเบฒเบกเปเบเบฑเบเปเบเปเบเปเบเบญเบเบเบฒเบเบเปเบญเบ pywinauto 0.7.0 เบเบตเปเบกเบตเบเบฒเบเบชเบฐเบซเบเบฑเบเบชเบฐเบซเบเบนเบ Linux เบขเปเบฒเบเปเบเบฑเบกเบเบตเปเบชเบฒเบกเบฒเบเบเบฒเบเบงเปเบฒเบเบฐเบขเบนเปเปเบเปเบเบดเปเบเบเปเบฒเบญเบดเบเบเบญเบเบเบต 2018.
Apple Accessibility API
MacOS เบกเบตเบเบฒเบชเบฒเบญเบฑเบเบเบฐเปเบเบกเบฑเบเบเบญเบเบเบปเบเปเบญเบ, AppleScript. เปเบเบทเปเบญเบเบฐเบเบดเบเบฑเบเบเบฒเบเบชเบดเปเบเบเบฒเบเบขเปเบฒเบเปเบเบฑเปเบเบเบตเปเปเบ Python, เปเบเปเบเบญเบ, เบเปเบฒเบเบเปเบฒเปเบเบฑเบเบเปเบญเบเปเบเปเบเบฑเบเบเบฑเบเบเบฒเบ ObjectiveC. เปเบฅเบตเปเบกเบเบปเปเบ, เปเบเบดเปเบเบเบทเบงเปเบฒ, เบเปเบงเบ MacOS 10.6, เบเบธเบ pyobjc เปเบกเปเบเบฅเบงเบกเบขเบนเปเปเบ Python เบเบตเปเบเบดเบเบเบฑเปเบเปเบงเปเบเปเบญเบ. เบญเบฑเบเบเบตเปเบเบฑเบเบเบฐเปเบฎเบฑเบเปเบซเปเบฅเบฒเบเบเบทเปเบเบฒเบเปเบเบดเปเบเบเบฒเบญเบฒเปเบชเบเบฒเบเบชเบฐเปเบฑเบเบชเบฐเปเบนเบเปเบเบญเบฐเบเบฒเบเบปเบเปเบ pywinauto เบเปเบฒเบเบเบถเปเบ.
เปเบเบทเปเบญเบเบกเบท: เบเบญเบเปเบซเบเบทเบญเบเบฒเบเบเบฒเบชเบฒ Apple Script, เบกเบฑเบเปเบเบฑเบเบกเบนเบเบเปเบฒเบเบตเปเบเบฐเปเบญเบปเบฒเปเบเปเบชเป , aka pyatom. เบกเบฑเบโเปเบเบฑเบโเบเบฒเบโเปเบเปโเบเบญเบโเบเบตเปโเปเบซเบกเบฒเบฐโเบชเบปเบกโเบเบฑเบ LDTPโ, เปเบเปโเบเบฑเบโเปเบเบฑเบโเบซเปเบญเบโเบชเบฐโเบซเบกเบธเบ standaloneโ. เบกเบฑเบโเบกเบต , เบเบฝเบเปเบเบเบเบฑเบเบฎเบฝเบเบเบญเบเบเปเบญเบ. เบกเบตเบเบฑเบเบซเบฒเบเบตเปเบฎเบนเปเบเบฑเบ: เปเบฅเบเบฐเปเบงเบฅเบฒเบเบตเปเบกเบตเบเบงเบฒเบกเบเบทเบเบซเบเบธเปเบเบเปเปเปเบฎเบฑเบเบงเบฝเบ (เบงเบดเบเบตเบเบฒเบ waitFor*). เปเบเปเปเบเบเบฅเบงเบก, เบเปเปเปเบกเปเบเบชเบดเปเบเบเบตเปเบเปเปเบเบต.
เบงเบดเบเบตเบเบฒเบเปเบฅเบตเปเบกเบเบปเปเบเบเปเบงเบ pywinauto
เบเบฑเปเบโเบเบญเบโเบเปเบฒโเบญเบดเบโเปเบกเปเบโเบเบฒเบโเปเบเบโเบเบปเบงโเบเปเบฒเบโเปเบญเบโเบเบฑเบโเบเบฒเบโเบเบงเบโเบเบฒโเบงเบฑเบโเบเบธ GUI (เบญเบฑเบโเบเบตเปโเปเบญเบตเปเบโเบงเปเบฒโเปเบเบทเปเบญเบโเบกเบท Spyโ)โ. เบกเบฑเบเบเบฐเบเปเบงเบเปเบซเปเบเปเบฒเบเบชเบถเบเบชเบฒเบเปเบฒเบฎเปเบญเบเบชเบฐเบซเบกเบฑเบเบเบฒเบเบเบฒเบเปเบ: เบงเบดเบเบตเบเบฒเบเบฅเปเบฒเบเบฑเบเบเบฑเปเบเบเบญเบเบญเบปเบเบเบฐเบเบญเบเบเบตเปเบกเบตเปเบเบเบชเปเบฒเบ, เบกเบตเบเบธเบเบชเบปเบกเบเบฑเบเปเบเปเบเป. เบเบนเปเบเบงเบเบเบฒเบชเบฐเบเบฒเบเบเบตเปเบเบตเปเบกเบตเบเบทเปเบชเบฝเบเบเบตเปเบชเบธเบ:
- spy++ - เบฅเบงเบกเบเบฑเบ Visual Studio, เบฅเบงเบกเบเบฑเบ Express เบซเบผเบท Community Edition. เปเบเป Win32 API. clone เบฅเบฒเบงเบเบฑเบเปเบเบฑเบเบเบตเปเบฎเบนเปเบเบฑเบ AutoIt Window เบเปเปเบกเบนเบ.
- Inspect.exe - เบฅเบงเบกเบขเบนเปเปเบ Windows SDK. เบเปเบฒโเบซเบฒเบโเบเปเบฒเบโเปเบเปโเบเบดเบโเบเบฑเปเบโเบกเบฑเบโ, เบซเบผเบฑเบโเบเบฒเบโเบเบฑเปเบโเปเบ Windows 64-bit เบเปเบฒเบโเบชเบฒโเบกเบฒเบโเบเบญเบโเบซเบฒโเบกเบฑเบโเบขเบนเปโเปเบโเปเบเบโเปเบเบตโ
C:Program Files (x86)Windows Kits<winver>binx64. เปเบเบเบปเบงเบเบงเบเบเบฒเบเบปเบงเบกเบฑเบเปเบญเบ, เบเปเบฒเบเบเปเบฒเปเบเบฑเบเบเปเบญเบเปเบฅเบทเบญเบเบฎเบนเบเปเบเบ UI เบญเบฑเบเบเบฐเปเบเบกเบฑเบ เปเบเบ MS AA (Active Accessibility, เบเบฑเบเบเบฐเบเบธเบฅเบธเบเบเบญเบ UI Automation).
เบกเบตเบเบฒเบเบเบงเบเบชเบญเบเบเปเบฒเบฎเปเบญเบเบชเบฐเบซเบกเบฑเบเปเบเบเบเปเบฒเบเปเบฅเบฐเปเบเบเบเปเบฒเบเบเบฒเบ, เบเบงเบเปเบฎเบปเบฒเปเบฅเบทเบญเบ backend เบเบตเปเบเบงเบเปเบฎเบปเบฒเบเบฐเบเปเบฒเปเบเป. เบกเบฑเบเบเบฝเบเบเปเบเบตเปเบเบฐเบฅเบฐเบเบธเบเบทเปเบเบญเบ backend เปเบกเบทเปเบญเบชเปเบฒเบเบงเบฑเบเบเบธเปเบญเบฑเบเบเบฅเบดเปเบเบเบฑเบ.
- backend=โwin32โณ โ เปเบโเบเบฐโเบเบฐโเบเบตเปโเบเบฒเบโเบเปเบฒโเปเบเปโเปเบเบฑเบโเบเปเบฒโเปเบฅเบตเปเบกโเบเบปเปเบโ, เปเบฎเบฑเบโเบงเบฝเบโเปเบเปโเบเบตโเบเบฑเบ MFCโ, WTLโ, VB6 เปเบฅเบฐโเบเปเบฒโเบฎเปเบญเบโเบชเบฐโเบซเบกเบฑเบโเปเบเบปเปเบฒโเบญเบทเปเบเปโ.
- backend=โuiaโ - backend เปเบซเบกเปเบชเปเบฒเบฅเบฑเบ MS UI เบญเบฑเบเบเบฐเปเบเบกเบฑเบ: เปเบฎเบฑเบเบงเบฝเบเบขเปเบฒเบเบชเบปเบกเบเบนเบเบเบฑเบ WPF เปเบฅเบฐ WinForms; เบเบฑเบเบเบตเบชเปเบฒเบฅเบฑเบเบเปเบฒเบฎเปเบญเบเบชเบฐเบซเบกเบฑเบ Delphi เปเบฅเบฐ Windows Store; เปเบฎเบฑเบเบงเบฝเบเบเบฑเบ Qt5 เปเบฅเบฐเบเบฒเบเบเปเบฒเบฎเปเบญเบเบชเบฐเบซเบกเบฑเบ Java. เปเบฅเบฐเปเบเบเบเบปเปเบงเปเบ, เบเปเบฒ Inspect.exe เปเบซเบฑเบเบญเบปเบเบเบฐเบเบญเบเปเบฅเบฐเบเบธเบเบชเบปเบกเบเบฑเบเบเบญเบเบกเบฑเบ, เบซเบผเบฑเบเบเบฒเบเบเบฑเปเบ backend เบเบตเปเปเบกเปเบเปเบซเบกเบฒเบฐเบชเบปเบก. เปเบเบซเบผเบฑเบเบเบฒเบ, เบเบปเบงเบเปเบญเบเปเบงเบฑเบเบชเปเบงเบเปเบซเบเปเบเบฑเบเบชเบฐเบซเบเบฑเบเบชเบฐเบซเบเบนเบ UI Automation (Mozilla เปเบเบเบเปเบฒเปเบฅเบตเปเบกเบเบปเปเบ, เปเบฅเบฐ Chrome เบเปเบญเบเปเบเปเบฎเบฑเบเบเบฒเบเบเปเบญเบเบฅเบฐเบซเบฑเบเบเปเบฒเบชเบฑเปเบเปเบเปเบงเบฅเบฒเบเบตเปเปเบฅเบตเปเบกเบเบปเปเบ.
--force-renderer-accessibilityเปเบเบทเปเบญเปเบเบดเปเบเบญเบปเบเบเบฐเบเบญเบเปเบเบซเบเปเบฒเบเปเบฒเบเปเปเบ Inspect.exe). เปเบเปเบเบญเบ, เบเบฒเบเปเบเปเบเบเบฑเบเบเบฑเบ Selenium เปเบเบเบปเบเปเบเบเบเบตเปเปเบกเปเบเบเปเปเบเปเบญเบเปเบเบฑเบเปเบเปเบเป. เบเบฝเบเปเบเปเบงเบดเบเบตเบญเบทเปเบเบเบตเปเบเบฐเปเบฎเบฑเบเบงเบฝเบเบเบฑเบเบเบปเบงเบเปเบญเบเปเบงเบฑเบ (เบญเบฒเบเบเบฐเปเบเบฑเบเบเบฐเปเบซเบเบเบชเปเบฒเบฅเบฑเบเบชเบฐเบเบฒเบเบฐเบเบฒเบเบเปเบฒเบกเบเบฐเบฅเบดเบเบเบฐเบเบฑเบ).
เบเบธเบเปเบเบปเปเบฒเบชเปเบฒเบฅเบฑเบเบญเบฑเบเบเบฐเปเบเบกเบฑเบ
เบเปเบฒเบฎเปเบญเบเบชเบฐเบซเบกเบฑเบเปเบเปเบเบทเบเบเบปเปเบเบเปเบงเบฒเบขเปเบฒเบเบเบงเปเบฒเบเบเบงเบฒเบ. เบกเบฑเบเปเบเบดเบเปเบงเบฅเบฒเบเบตเปเบเบฐเบชเปเบฒเบ Application object เปเบฅเบฐเปเบฅเปเบเบกเบฑเบเบซเบผเบทเบเบดเบเบเบฑเบเบญเบฑเบเบเบตเปเปเบฅเปเบเปเบฅเปเบง. เบเบตเปเบเปเปเปเบกเปเบเบเบฝเบเปเบเป clone เบเบญเบเบซเปเบญเบเบฎเบฝเบเบกเบฒเบเบเบฐเบเบฒเบ subprocess.Popen, เบเบทเบงเบฑเบเบเบธเบเปเบญเบเบเปเปเบกเบนเบเบเบตเปเบเปเบฒเบเบฑเบเบเบฒเบเบเปเบฒเปเบเบตเบเบเบฒเบเบเบฑเบเบซเบกเบปเบเบเบญเบเบเปเบฒเบเบเบฑเบเบเบญเบเปเบเบเบเบญเบเบเบฐเบเบงเบเบเบฒเบ. เบเบตเปเปเบกเปเบเปเบเบฑเบเบเบฐเปเบซเบเบเบซเบผเบฒเบเบเปเบฒเบซเบฒเบเบงเปเบฒเบซเบผเบฒเบเปเบเบปเบงเบขเปเบฒเบเบเบญเบเปเบญเบฑเบเบเบฅเบดเปเบเบเบฑเบเบเปเบฒเบฅเบฑเบเปเบฎเบฑเบเบงเบฝเบ, เปเบเปเบเปเบฒเบเบเปเปเบเปเบญเบเบเบฒเบเปเบเบฐเบเบตเปเบชเปเบงเบเบเบตเปเปเบซเบผเบทเบญ.
from pywinauto.application import Application
app = Application(backend="uia").start('notepad.exe')
# ะะฟะธัะตะผ ะพะบะฝะพ, ะบะพัะพัะพะต ั
ะพัะธะผ ะฝะฐะนัะธ ะฒ ะฟัะพัะตััะต Notepad.exe
dlg_spec = app.UntitledNotepad
# ะถะดะตะผ ะฟะพะบะฐ ะพะบะฝะพ ัะตะฐะปัะฝะพ ะฟะพัะฒะธััั
actionable_dlg = dlg_spec.wait('visible')เบเปเบฒเบเปเบฒเบเบเปเบญเบเบเบฒเบเบเบฑเบเบเบฒเบเบซเบผเบฒเบเบเปเบฒเบฎเปเบญเบเบชเบฐเบซเบกเบฑเบเปเบเปเบงเบฅเบฒเบเบฝเบงเบเบฑเบ, เบซเปเบญเบเบฎเบฝเบเบเบตเปเบเบฐเบเปเบงเบเบเปเบฒเบเปเบเป Desktop. เบชเปเบฒเบฅเบฑเบเบเบปเบงเบขเปเบฒเบ, เปเบเปเบเบทเปเบญเบเบเบดเบเปเบฅเบเปเบ Win10, เบฅเปเบฒเบเบฑเบเบเบฑเปเบเบเบญเบเบญเบปเบเบเบฐเบเบญเบเปเบกเปเบเปเบเปเบเบฐเบซเบเบฒเบเปเบเบเบปเปเบงเบเบฐเบเบงเบเบเบฒเบเบเปเบฒเบเป (เบเปเปเบเบฝเบเปเบเป. calc.exe). เบเบฑเปเบเบเบฑเปเบเบเปเปเบกเบตเบงเบฑเบเบเบธ Desktop เบเปเปโเบเบฝเบโเบเป.
from subprocess import Popen
from pywinauto import Desktop
Popen('calc.exe', shell=True)
dlg = Desktop(backend="uia").Calculator
dlg.wait('visible')เบฎเบฒเบเบงเบฑเบเบเบธ (Application เบซเบผเบท Desktop) เปเบเบฑเบเบเปเบญเบเบเบฝเบงเบเบตเปเบเปเบฒเบเบเปเบญเบเบเบฒเบเบฅเบฐเบเบธ backend. เบเบธเบเบชเบดเปเบเบเบธเบเบขเปเบฒเบเบญเบทเปเบเบเบปเบเบขเบนเปเปเบเปเบเบงเบเบงเบฒเบกเบเบดเบ "specification->wrapper" เบขเปเบฒเบเปเบเปเบเปเบช, เปเบเบดเปเบเบเบฐเบเบทเบเบเบถเบเบชเบฒเบซเบฒเบฅเบทเบเปเปเบกเบฒ.
เบเปเปเบกเบนเบเบชเบฐเปเบเบฒเบฐเปเปเบฒเบเปเบฒเบ/เบญเบปเบเบเบฐเบเบญเบ
เบเบตเปเปเบกเปเบเปเบเบงเบเบงเบฒเบกเบเบดเบเบซเบผเบฑเบเบเบตเปเบเบฒเบเปเบเปเบเบญเบ pywinauto เบเบทเบเบชเปเบฒเบเบเบถเปเบ. เบเปเบฒเบโเบชเบฒโเบกเบฒเบโเบญเบฐโเบเบดโเบเบฒเบโเบเปเบญเบโเบขเปเบฝเบก / เบญเบปเบโเบเบฐโเบเบญเบโเปเบเบโเบเบฐโเบกเบฒเบโเบซเบผเบทโเปเบโเบฅเบฐโเบญเบฝเบโเปเบเบตเปเบกโเปเบเบตเบกโ, เปเบเบดเบโเปเบกเปเบโเบงเปเบฒโเบกเบฑเบโเบเบฑเบโเบเปเปโเบเบฑเบโเบกเบตโเบซเบผเบทโเปเบเปโเบเบทเบโเบเบดเบโเปเบฅเปเบงโ. เบชเบฐเปเบเบฒเบฐเปเปเบฒเบเปเบฒเบ (เบงเบฑเบเบเบธ WindowSpecification) เปเบเบฑเบเบฎเบฑเบเบชเบฒเปเบเบทเปเบญเบเปเบเบเบตเปเบเบฐเบเบปเปเบเบซเบฒเบเปเบญเบเบขเปเบฝเบกเบเบตเปเปเบเปเบเบดเบเบซเบผเบทเบญเบปเบเบเบฐเบเบญเบ.
เบเบปเบงโเบขเปเบฒเบโเบเบญเบโเบเปเบญเบโเบขเปเบฝเบกโเบฅเบฐโเบญเบฝเบโเบชเบฐโเปเบเบฒเบฐโ:
>>> dlg_spec = app.window(title='Untitled - Notepad')
>>> dlg_spec
<pywinauto.application.WindowSpecification object at 0x0568B790>
>>> dlg_spec.wrapper_object()
<pywinauto.controls.win32_controls.DialogWrapper object at 0x05639B70>เบเบฒเบเบเบปเปเบเบซเบฒเบเปเบญเบเบขเปเบฝเบกเบเบปเบงเบกเบฑเบเปเบญเบเปเบเบตเบเบเบทเปเบเปเบเบเบเบฒเบเปเบเบซเบฒเบงเบดเบเบตเบเบฒเบ .wrapper_object(). เบกเบฑเบเบชเบปเปเบเบเบทเบ "wrapper" เบเบตเปเปเบเปเบเบญเบเบชเปเบฒเบฅเบฑเบเบเปเบญเบเบขเปเบฝเบก / เบญเบปเบเบเบฐเบเบญเบเบเบตเปเปเบเปเบเบดเบเบซเบผเบทเบเบดเปเบก ElementNotFoundError (เบเบฒเบเบเบฑเปเบ ElementAmbiguousError, เบเปเบฒเบซเบฒเบเบงเปเบฒเบญเบปเบเบเบฐเบเบญเบเบเปเบฒเบเบงเบเบซเบเบถเปเบเปเบเปเบเบทเบเบเบปเบเปเบซเบฑเบ, เบเบฑเปเบเปเบกเปเบ, เบเปเบฒเบเบเปเบฒเปเบเบฑเบเบเปเบญเบเบเบตเปเปเบเบเปเบเบทเปเบญเบเปเบเบเบฒเบเบเบญเบเบซเบฒ). "wrapper" เบเบตเปเบฎเบนเปเปเบฅเปเบงเบงเบดเบเบตเบเบฒเบเบเปเบฒเปเบเบตเบเบเบฒเบเบเบฒเบเบขเปเบฒเบเบเบฑเบเบญเบปเบเบเบฐเบเบญเบเบซเบผเบทเบฎเบฑเบเบเปเปเบกเบนเบเบเบฒเบเบกเบฑเบ.
Python เบชเบฒเบกเบฒเบเปเบเบทเปเบญเบเบเบฒเบเปเบเปเบเป .wrapper_object(), เบเบฑเปเบเบเบฑเปเบเบฅเบฐเบซเบฑเบเบชเบธเบเบเปเบฒเบเบเบฐเบเบฒเบเปเบเบฑเบเบชเบฑเปเบ. เบเบงเบเปเบฎเบปเบฒเปเบเบฐเบเปเบฒเปเบซเปเปเบเปเบกเบฑเบเปเบเบทเปเบญเบเบธเบเบเบฐเบชเบปเบ debugging เปเบเบปเปเบฒเบเบฑเปเบ. เบชเบญเบเปเบเบงเบเปเปเปเบเปเบฎเบฑเบเบชเบดเปเบเบเบฝเบงเบเบฑเบเปเบเป:
dlg_spec.wrapper_object().minimize() # debugging
dlg_spec.minimize() # productionเบกเบตเปเบเบทเปเบญเบเปเบเบเบฒเบเบเบญเบเบซเบฒเบซเบผเบฒเบเบขเปเบฒเบเบชเปเบฒเบฅเบฑเบเบเปเปเบเปเบฒเบเบปเบเบเบญเบเบเปเบญเบเบขเปเบฝเบก. เบเบตเปเปเบกเปเบเบเบฝเบเปเบเปเบเบฒเบเบเบปเบงเบขเปเบฒเบ:
# ะผะพะณัั ะธะผะตัั ะฝะตัะบะพะปัะบะพ ััะพะฒะฝะตะน
app.window(title_re='.* - Notepad$').window(class_name='Edit')
# ะผะพะถะฝะพ ะบะพะผะฑะธะฝะธัะพะฒะฐัั ะบัะธัะตัะธะธ (ะบะฐะบ AND) ะธ ะฝะต ะพะณัะฐะฝะธัะธะฒะฐัััั ะพะดะฝะธะผ ะฟัะพัะตััะพะผ ะฟัะธะปะพะถะตะฝะธั
dlg = Desktop(backend="uia").Calculator
dlg.window(auto_id='num8Button', control_type='Button')เบเบฑเบเบเบตเบฅเบฒเบเบเบทเปเบเบญเบเปเบเบทเปเบญเบเปเบเบเบตเปเปเบเบฑเบเปเบเปเบเปเบเบฑเบเบซเบกเบปเบเปเบกเปเบเบขเบนเปเปเบเปเบญเบเบฐเบชเบฒเบเบซเบเปเบฒเบเบตเป .
magic เบเบญเบเบเบฒเบเปเบเบปเปเบฒเปเบเบดเบเปเบเบเบเบธเบเบฅเบฑเบเบชเบฐเบเบฐเปเบฅเบฐเบเบตเปเบชเปเบฒเบเบฑเบ
Python เปเบฎเบฑเบเปเบซเปเบกเบฑเบเบเปเบฒเบเบเปเปเบเบฒเบเบชเปเบฒเบเบเปเปเบกเบนเบเบชเบฐเปเบเบฒเบฐเบเบญเบเบเปเบญเบเบขเปเบฝเบกเปเบฅเบฐเบฎเบฑเบเบฎเบนเปเบเบธเบเบฅเบฑเบเบชเบฐเบเบฐเบเบญเบเบงเบฑเบเบเบธเปเบเบเปเบเบทเปเบญเบเปเบซเบง (เบเบฒเบเปเบ, เบงเบดเบเบตเบเบฒเบเปเบกเปเบ overridden. __getattribute__). เปเบเปเบเบญเบ, เบเปเปเบเปเบฒเบเบฑเบเบเบฝเบงเบเบฑเบเปเบกเปเบเบเบทเบเบเบฑเบเบเบฑเบเปเบชเปเบเบทเปเบเบธเบเบฅเบฑเบเบชเบฐเบเบฐเปเบเบฑเปเบเบเบฝเบงเบเบฑเบเบเบฑเบเบเบทเปเบเบญเบเบเบปเบงเปเบเปเบเป (เบเปเบฒเบเบเปเปเบชเบฒเบกเบฒเบเปเบชเปเบเบฐเบซเบงเปเบฒเบ, เปเบเบทเปเบญเบเปเบฒเบเบเบธเบ, เบซเบผเบทเบเบปเบงเบญเบฑเบเบชเบญเบเบเบดเปเบชเบเบญเบทเปเบเป). เปเบเบเบเบต, pywinauto เปเบเปเบญเบฑเบเบเบตเปเปเบญเบตเปเบเบงเปเบฒ "เบเบฒเบเบเบฑเบเบเบนเปเบเบตเปเบเบตเบเบตเปเบชเบธเบ" algorithm เบเบปเปเบเบซเบฒเบเบตเปเบเบปเบเบเบฒเบเบเปเปเบเบฒเบเบเบดเบกเบเบดเบเปเบฅเบฐเบเบฒเบเบเปเบฝเบเปเบเบเบเบฐเบซเบเบฒเบเบเปเบญเบ.
app.UntitledNotepad
# ัะพ ะถะต ัะฐะผะพะต, ััะพ
app.window(best_match='UntitledNotepad')เบเปเบฒโเบซเบฒเบโเบงเปเบฒโเบเปเบฒเบโเบเบฑเบโเบเปเบญเบโเบเบฒเบ Unicode strings (เบชเปเบฒโเบฅเบฑเบโเบเบฒเบโเบเบปเบโเบเบปเบงโเบขเปเบฒเบโ, เบชเปเบฒโเบฅเบฑเบโเบเบฒโเบชเบฒโเบฅเบฑเบโเปเบเบโ)โ, เบเบฐโเบซเบงเปเบฒเบโ, เปเบฅเบฐโเบญเบทเปเบเปโ, เบเปเบฒเบโเบชเบฒโเบกเบฒเบโเปเบเบปเปเบฒโเปเบเบดเบโเปเบเบโเบเบฒเบโเบชเปเบฒโเบเบฑเบ (เปเบเบฑเปเบโเบงเปเบฒโเบกเบฑเบโเปเบเบฑเบโเบเบฐโเบเบฒโเบเบธโเบเบปเบกโเบเบปเบโเบเบฐโเบเบดโ)โ:
app['Untitled - Notepad']
# ัะพ ะถะต ัะฐะผะพะต, ััะพ
app.window(best_match='Untitled - Notepad')เบซเปเบฒเบเบปเบเบฅเบฐเบเบฝเบเบชเปเบฒเบฅเบฑเบเบเบทเป magical
เบงเบดเบเบตเบเบฒเบเบเบญเบเบซเบฒเบเบทเป magic เบกเบฒเบเบเบฐเบเบฒเบ? เบเบนเปเบเบตเปเบเบทเบเบกเบญเบเบซเบกเบฒเบเปเบซเปเบญเบปเบเบเบฐเบเบญเบเบเปเบญเบเบเบตเปเบเบฐเบเบปเปเบเบซเบฒ. เบเปเบฒเบเปเบฒเบเบฅเบฐเบเบธเบเบทเปเบเบตเปเบเบฝเบเบเปเบเบฑเบเบกเบฒเบเบเบฐเบเบฒเบ, เบซเบผเบฑเบเบเบฒเบเบเบฑเปเบเบญเบปเบเบเบฐเบเบญเบเบเบฐเบเบปเบเปเบซเบฑเบ.
- เปเบเบเบซเบปเบงเบเปเป (เบเปเปเบเบงเบฒเบก, เบเบทเป):
app.Properties.OK.click() - เปเบเบเบเปเปเบเบงเบฒเบก เปเบฅเบฐเบเบฒเบกเบเบฐเปเบเบเบญเบปเบเบเบฐเบเบญเบ:
app.Properties.OKButton.click() - เปเบเบโเบเบฐโเปเบเบโเปเบฅเบฐโเบเปเบฒโเบเบงเบโ:
app.Properties.Button3.click()(เบเบทเปButton0ะธButton1เบเบนเบเบกเบฑเบเบเบฑเบเบญเบปเบเบเบฐเบเบญเบเบเปเบฒเบญเบดเบเบเบตเปเบเบปเบเปเบซเบฑเบ,Button2- เบเบตเบชเบญเบ, เปเบฅเบฐเบซเบผเบฑเบเบเบฒเบเบเบฑเปเบเปเบเบเปเบฒเบชเบฑเปเบ - เบเบตเปเปเบกเปเบเบงเบดเบเบตเบเบตเปเบกเบฑเบเปเบเบตเบเบเบถเปเบเปเบเบเบฐเบซเบงเบฑเบเบชเบฒเบ) - เปเบเบเบเปเปเบเบงเบฒเบกเบชเบฐเบเบดเบ (เบเปเบฒเบ เบซเบผเบท เปเบเบดเบ) เปเบฅเบฐเบเบฒเบกเบเบฐเปเบเบ:
app.OpenDialog.FileNameEdit.set_text("")(เปเบเบฑเบเบเบฐเปเบซเบเบเบชเปเบฒเบฅเบฑเบเบญเบปเบเบเบฐเบเบญเบเบเบตเปเบกเบตเบเปเปเบเบงเบฒเบกเปเบเบเปเบเบทเปเบญเบเปเบซเบง) - เปเบเบเบเบฐเปเบเบเปเบฅเบฐเบเปเปเบเบงเบฒเบกเบเบฒเบเปเบ:
app.Properties.TabControlSharing.select("General")
เบเบปเบเบเบฐเบเบดเปเบฅเปเบงเบชเบญเบเบซเบผเบทเบชเบฒเบกเบเบปเบเบฅเบฐเบเบฝเบเบเบทเบเบเปเบฒเปเบเปเปเบเปเบงเบฅเบฒเบเบฝเบงเบเบฑเบ, เบเปเปเบเปเบญเบเบซเบผเบฒเบ. เปเบเบทเปเบญเบเบงเบเปเบเบดเปเบเบเบทเปเบชเบฐเปเบเบฒเบฐเปเบเบเบตเปเบกเบตเบชเปเบฒเบฅเบฑเบเปเบเปเบฅเบฐเบญเบปเบเบเบฐเบเบญเบ, เบเปเบฒเบเบชเบฒเบกเบฒเบเบเปเบฒเปเบเปเบงเบดเบเบตเบเบฒเบ print_control_identifiers(). เบกเบฑเบโเบชเบฒโเบกเบฒเบโเบเบดเบกโเบเบปเปเบโเปเบกเปโเบเบญเบโเบญเบปเบโเบเบฐโเบเบญเบโเบเบฑเบโเปเบโเบซเบเปเบฒโเบเปโเปเบฅเบฐโเปเบเบฅโเปโ. เบชเปเบฒเบฅเบฑเบเปเบเปเบฅเบฐเบญเบปเบเบเบฐเบเบญเบ, เบเบทเป magic เบกเบฒเบเบเบฐเบเบฒเบเบเบญเบเบกเบฑเบเบเบทเบเบเบดเบกเบญเบญเบ. เบเบญเบเบเบฑเปเบเบเปเบฒเบเบเบฑเบเบชเบฒเบกเบฒเบเบเบฑเบเบฅเบญเบเปเบฅเบฐเบงเบฒเบเบฅเบฒเบเบฅเบฐเบญเบฝเบเปเบเบตเปเบกเปเบเบตเบกเบเบญเบเบญเบปเบเบเบฐเบเบญเบเบเบญเบเปเบเบฑเบเบเปเบญเบเบเบฒเบเบเปเบญเบเบเบฑเปเบ. เบเบปเบเปเบเปเบฎเบฑเบเปเบเบชเบฐเบเบดเบเบเบฐเบกเบตเบฅเบฑเบเบชเบฐเบเบฐเบเบตเป:
app.Properties.child_window(data-gt-translate-attributes='["title"]' title="Contains:", auto_id="13087", control_type="Edit")เบเบปเปเบเปเบกเปเบเบญเบเบญเบปเบเบเบฐเบเบญเบเบเบปเบงเบกเบฑเบเปเบญเบเบกเบฑเบเบเบฐเปเบเบฑเบเบเปเบฒเบเบตเบเบเบฐเบซเบเบฒเบเปเบซเบเป.
>>> app.Properties.print_control_identifiers()
Control Identifiers:
Dialog - 'Windows NT Properties' (L688, T518, R1065, B1006)
[u'Windows NT PropertiesDialog', u'Dialog', u'Windows NT Properties']
child_window(data-gt-translate-attributes='["title"]' title="Windows NT Properties", control_type="Window")
|
| Image - '' (L717, T589, R749, B622)
| [u'', u'0', u'Image1', u'Image0', 'Image', u'1']
| child_window(auto_id="13057", control_type="Image")
|
| Image - '' (L717, T630, R1035, B632)
| ['Image2', u'2']
| child_window(auto_id="13095", control_type="Image")
|
| Edit - 'Folder name:' (L790, T596, R1036, B619)
| [u'3', 'Edit', u'Edit1', u'Edit0']
| child_window(data-gt-translate-attributes='["title"]' title="Folder name:", auto_id="13156", control_type="Edit")
|
| Static - 'Type:' (L717, T643, R780, B658)
| [u'Type:Static', u'Static', u'Static1', u'Static0', u'Type:']
| child_window(data-gt-translate-attributes='["title"]' title="Type:", auto_id="13080", control_type="Text")
|
| Edit - 'Type:' (L790, T643, R1036, B666)
| [u'4', 'Edit2', u'Type:Edit']
| child_window(data-gt-translate-attributes='["title"]' title="Type:", auto_id="13059", control_type="Edit")
|
| Static - 'Location:' (L717, T669, R780, B684)
| [u'Location:Static', u'Location:', u'Static2']
| child_window(data-gt-translate-attributes='["title"]' title="Location:", auto_id="13089", control_type="Text")
|
| Edit - 'Location:' (L790, T669, R1036, B692)
| ['Edit3', u'Location:Edit', u'5']
| child_window(data-gt-translate-attributes='["title"]' title="Location:", auto_id="13065", control_type="Edit")
|
| Static - 'Size:' (L717, T695, R780, B710)
| [u'Size:Static', u'Size:', u'Static3']
| child_window(data-gt-translate-attributes='["title"]' title="Size:", auto_id="13081", control_type="Text")
|
| Edit - 'Size:' (L790, T695, R1036, B718)
| ['Edit4', u'6', u'Size:Edit']
| child_window(data-gt-translate-attributes='["title"]' title="Size:", auto_id="13064", control_type="Edit")
|
| Static - 'Size on disk:' (L717, T721, R780, B736)
| [u'Size on disk:', u'Size on disk:Static', u'Static4']
| child_window(data-gt-translate-attributes='["title"]' title="Size on disk:", auto_id="13107", control_type="Text")
|
| Edit - 'Size on disk:' (L790, T721, R1036, B744)
| ['Edit5', u'7', u'Size on disk:Edit']
| child_window(data-gt-translate-attributes='["title"]' title="Size on disk:", auto_id="13106", control_type="Edit")
|
| Static - 'Contains:' (L717, T747, R780, B762)
| [u'Contains:1', u'Contains:0', u'Contains:Static', u'Static5', u'Contains:']
| child_window(data-gt-translate-attributes='["title"]' title="Contains:", auto_id="13088", control_type="Text")
|
| Edit - 'Contains:' (L790, T747, R1036, B770)
| [u'8', 'Edit6', u'Contains:Edit']
| child_window(data-gt-translate-attributes='["title"]' title="Contains:", auto_id="13087", control_type="Edit")
|
| Image - 'Contains:' (L717, T773, R1035, B775)
| [u'Contains:Image', 'Image3', u'Contains:2']
| child_window(data-gt-translate-attributes='["title"]' title="Contains:", auto_id="13096", control_type="Image")
|
| Static - 'Created:' (L717, T786, R780, B801)
| [u'Created:', u'Created:Static', u'Static6', u'Created:1', u'Created:0']
| child_window(data-gt-translate-attributes='["title"]' title="Created:", auto_id="13092", control_type="Text")
|
| Edit - 'Created:' (L790, T786, R1036, B809)
| [u'Created:Edit', 'Edit7', u'9']
| child_window(data-gt-translate-attributes='["title"]' title="Created:", auto_id="13072", control_type="Edit")
|
| Image - 'Created:' (L717, T812, R1035, B814)
| [u'Created:Image', 'Image4', u'Created:2']
| child_window(data-gt-translate-attributes='["title"]' title="Created:", auto_id="13097", control_type="Image")
|
| Static - 'Attributes:' (L717, T825, R780, B840)
| [u'Attributes:Static', u'Static7', u'Attributes:']
| child_window(data-gt-translate-attributes='["title"]' title="Attributes:", auto_id="13091", control_type="Text")
|
| CheckBox - 'Read-only (Only applies to files in folder)' (L790, T825, R1035, B841)
| [u'CheckBox0', u'CheckBox1', 'CheckBox', u'Read-only (Only applies to files in folder)CheckBox', u'Read-only (Only applies to files in folder)']
| child_window(data-gt-translate-attributes='["title"]' title="Read-only (Only applies to files in folder)", auto_id="13075", control_type="CheckBox")
|
| CheckBox - 'Hidden' (L790, T848, R865, B864)
| ['CheckBox2', u'HiddenCheckBox', u'Hidden']
| child_window(data-gt-translate-attributes='["title"]' title="Hidden", auto_id="13076", control_type="CheckBox")
|
| Button - 'Advanced...' (L930, T845, R1035, B868)
| [u'Advanced...', u'Advanced...Button', 'Button', u'Button1', u'Button0']
| child_window(data-gt-translate-attributes='["title"]' title="Advanced...", auto_id="13154", control_type="Button")
|
| Button - 'OK' (L814, T968, R889, B991)
| ['Button2', u'OK', u'OKButton']
| child_window(data-gt-translate-attributes='["title"]' title="OK", auto_id="1", control_type="Button")
|
| Button - 'Cancel' (L895, T968, R970, B991)
| ['Button3', u'CancelButton', u'Cancel']
| child_window(data-gt-translate-attributes='["title"]' title="Cancel", auto_id="2", control_type="Button")
|
| Button - 'Apply' (L976, T968, R1051, B991)
| ['Button4', u'ApplyButton', u'Apply']
| child_window(data-gt-translate-attributes='["title"]' title="Apply", auto_id="12321", control_type="Button")
|
| TabControl - '' (L702, T556, R1051, B962)
| [u'10', u'TabControlSharing', u'TabControlPrevious Versions', u'TabControlSecurity', u'TabControl', u'TabControlCustomize']
| child_window(auto_id="12320", control_type="Tab")
| |
| | TabItem - 'General' (L704, T558, R753, B576)
| | [u'GeneralTabItem', 'TabItem', u'General', u'TabItem0', u'TabItem1']
| | child_window(data-gt-translate-attributes='["title"]' title="General", control_type="TabItem")
| |
| | TabItem - 'Sharing' (L753, T558, R801, B576)
| | [u'Sharing', u'SharingTabItem', 'TabItem2']
| | child_window(data-gt-translate-attributes='["title"]' title="Sharing", control_type="TabItem")
| |
| | TabItem - 'Security' (L801, T558, R851, B576)
| | [u'Security', 'TabItem3', u'SecurityTabItem']
| | child_window(data-gt-translate-attributes='["title"]' title="Security", control_type="TabItem")
| |
| | TabItem - 'Previous Versions' (L851, T558, R947, B576)
| | [u'Previous VersionsTabItem', u'Previous Versions', 'TabItem4']
| | child_window(data-gt-translate-attributes='["title"]' title="Previous Versions", control_type="TabItem")
| |
| | TabItem - 'Customize' (L947, T558, R1007, B576)
| | [u'CustomizeTabItem', 'TabItem5', u'Customize']
| | child_window(data-gt-translate-attributes='["title"]' title="Customize", control_type="TabItem")
|
| TitleBar - 'None' (L712, T521, R1057, B549)
| ['TitleBar', u'11']
| |
| | Menu - 'System' (L696, T526, R718, B548)
| | [u'System0', u'System', u'System1', u'Menu', u'SystemMenu']
| | child_window(data-gt-translate-attributes='["title"]' title="System", auto_id="MenuBar", control_type="MenuBar")
| | |
| | | MenuItem - 'System' (L696, T526, R718, B548)
| | | [u'System2', u'MenuItem', u'SystemMenuItem']
| | | child_window(data-gt-translate-attributes='["title"]' title="System", control_type="MenuItem")
| |
| | Button - 'Close' (L1024, T519, R1058, B549)
| | [u'CloseButton', u'Close', 'Button5']
| | child_window(data-gt-translate-attributes='["title"]' title="Close", control_type="Button")เปเบโเบเบฒเบโเบเปโเบฅเบฐโเบเบตโ, เบเบฒเบโเบเบดเบกโเบเบปเปเบโเปเบกเปโเบเบฑเบโเบซเบกเบปเบโเบญเบฒเบโเบเบฐโเบเปเบฒ (เบชเปเบฒโเบฅเบฑเบโเบเบฒเบโเบเบปเบโเบเบปเบงโเบขเปเบฒเบโ, เปเบ iTunes เบกเบตโเบซเบผเบฒเบโเปเบเบดเบโเบชเบฒเบกโเบเบฑเบโเบญเบปเบโเบเบฐโเบเบญเบโเปเบโเบซเบเบถเปเบโเปเบเบโ!), เปเบเปโเบเปเบฒเบโเบชเบฒโเบกเบฒเบโเบเปเบฒโเปเบเปโเบเบฒเบโเปเบฅเบทเบญเบโ. depth (เบเบงเบฒเบกโเปเบฅเบดเบโ)โ: depth=1 - เบญเบปเบโเบเบฐโเบเบญเบโเบเบญเบโเบเบปเบโเปเบญเบโ, depth=2 - เบเบฝเบเปเบเปเปเบเบฑเบเบเปเบญเบเบเบฑเบเบเบต, เปเบฅเบฐเบญเบทเปเบเป. เบกเบฑเบเบเบฑเบเบชเบฒเบกเบฒเบเบเบทเบเบเปเบฒเบเบปเบเปเบงเปเปเบเบชเบฐเปเบเบฒเบฐเปเบเปเบงเบฅเบฒเบเบตเปเบชเปเบฒเบ child_window.
เบเบปเบงเบขเปเบฒเบ
เบเบงเบเปเบฎเบปเบฒเบเปเบฒเบฅเบฑเบเปเบเบตเบกเปเบเบฑเบกเบขเปเบฒเบเบเปเปเปเบเบทเปเบญเบ . เปเบเบเบฑเบเบเบฒเบชเบดเปเบเบเบตเปเบเปเบฒเบเบกเบฒ, เบกเบฑเบเปเบเบฑเบเบกเบนเบเบเปเบฒเบเบตเปเบชเบฑเบเปเบเบเปเบซเบฑเบเบญเบฑเบเบเบฐเปเบเบกเบฑเบเบเบญเบเปเบเบทเปเบญเบเบงเบดเปเบเบฒเบฐเปเบเบทเบญเบเปเบฒเบ WireShark (เบเบตเปเปเบกเปเบเบเบปเบงเบขเปเบฒเบเบเบตเปเบเบตเบเบญเบเบเปเบฒเบฎเปเบญเบเบชเบฐเบซเบกเบฑเบ Qt5; เปเบเบดเบเปเบกเปเบเบงเปเบฒเบงเบฝเบเบเบฒเบเบเบตเปเบชเบฒเบกเบฒเบเปเบเปเปเบเปเบเปเปเบเบเบเปเปเบกเบต GUI, เปเบเบฒเบฐเบงเปเบฒเบกเบต. scapy.Sniffer เบเบฒเบเบเบธเบ Python ). เบเบญเบเบเบฒเบเบเบตเปเบเบฑเบเบกเบตเบเบปเบงเบขเปเบฒเบเบเบญเบ MS Paint เบญเบฑเบเบเบฐเปเบเบกเบฑเบเบเบตเปเบกเบตเปเบเบเปเบเบทเปเบญเบเบกเบท Ribbon เบเบญเบเบกเบฑเบ.
เบเบปเบงเบขเปเบฒเบเบเบตเปเบเบดเปเบเปเบซเบเปเบญเบตเบเบญเบฑเบเปเบถเปเบเบเบตเปเบเบฝเบเปเบเบเบเบฑเบเบฎเบฝเบเบเบญเบเบเปเบญเบ: (เบกเบฑเบเบเบฐเบเปเบฒเบเปเบเบเปเบญเบเปเบเบฑเบเบกเปเบฝเบเบซเบผเบฑเบเปเบเปเบงเบฅเบฒเบเปเปเบกเบฒเปเบฅเบฑเบเบเปเบญเบ).
เปเบฅเบฐ, เปเบเปเบเบญเบ, เบเบปเบงเบขเปเบฒเบเบเบญเบเบเบฒเบเบชเบฐเปเบฑเบเปเบเปเปเบเปเบเบเบดเบก (เบเบธเปเบกเบฎเปเบญเบ) เปเบฅเบฐเปเบซเบเบเบฒเบเปเบกเบปเบฒเบชเป:
.
เบเบญเบเปเบ
เบเบญเบเปเบเปเบเบฑเบเบเบดเปเบชเบเบเปเปเบเบนเปเบเบตเปเบเปเบงเบเบเบฑเบเบเบฐเบเบฒเปเบเบเบเบฒเบเบขเปเบฒเบเบเปเปเปเบเบทเปเบญเบ. เบชเปเบฒเบฅเบฑเบเบเปเบญเบเปเบฅเบฐ เบเบตเปเปเบกเปเบเบงเบฝเบเบญเบฐเบเบดเปเบฅเบเบเบฒเบงเบญเบ. เบเบฑเบเบชเบถเบเบชเบฒเบชเบญเบเบเบปเบเบเบญเบเบเปเบญเบเบเบฒเบ UNN เบเปเปเบเบปเบเบกเบฒเบเบตเปเปเบเปเบเปเบญเบเบเบฑเบเบฅเบฐเบเบฑเบเบเบฐเบฅเบดเบเบเบฒเบเบตเบเบญเบเปเบเบปเบฒเปเบเบปเปเบฒเบเปเบฝเบงเบเบฑเบเบซเบปเบงเบเปเปเบเบตเป. เปเบเปเบเบฐเบเบญเบเบชเปเบงเบเบญเบฑเบเปเบซเบเปเบซเบผเบงเบเปเบเบทเปเบญเบชเบฐเบซเบเบฑเบเบชเบฐเบซเบเบนเบ MS UI Automation เปเบฅเบฐเบเปเปเบเบปเบเบกเบฒเบเบตเปเปเบเปเปเบฅเบตเปเบกเบเบปเปเบเบชเปเบฒเบเบฅเบฐเบซเบฑเบเบญเบฑเบเบเบฐเปเบเบกเบฑเบเปเบเบเบญเบตเบเปเบชเปเบซเบผเบฑเบเบเบฒเบ "เบเบฑเบเบเบถเบเบเบฒเบเบซเบผเบดเปเบ" เปเบเบเบญเบตเบเปเบชเปเบเบธเบเบชเบปเบกเบเบฑเบเบเปเปเบเบงเบฒเบก (เบเบตเปเปเบกเปเบเบฅเบฑเบเบชเบฐเบเบฐเบเบตเปเบชเบฑเบเบชเบปเบเบเบตเปเบชเบธเบ), เบกเบฒเบฎเบญเบเบเบฑเบเบเบธเบเบฑเบเบเบฝเบเปเบเปเบชเปเบฒเบฅเบฑเบ backend "uia" เปเบเบปเปเบฒเบเบฑเปเบ. เบเปเบฒเบฅเบฑเบเบเบฑเบเบเบฐเบเบฒ backend เปเบซเบกเปเบชเปเบฒเบฅเบฑเบ Linux เปเบเบเบญเบตเบเปเบชเป AT-SPI (เปเบกเบเบนเบ mouse ะธ keyboard เบญเบตเบ - เปเบฅเปเบงเปเบเบเบฒเบเบเปเบญเบ 0.6.x).
เบเบฑเบเบเบฑเปเบเปเบเปเบเปเบญเบเปเบเปเบชเบญเบเบซเบผเบฑเบเบชเบนเบเบเบดเปเบชเบเบเปเบฝเบงเบเบฑเบเบญเบฑเบเบเบฐเปเบเบกเบฑเบเปเบ Python เปเบเบฑเบเปเบงเบฅเบฒเบเบปเบเบเบฒเบ, เบเบฑเบเบฎเบฝเบเบเบฐเบฅเบดเบเบเบฒเปเบเบเบฒเบเบเบปเบเปเบฎเบฑเบเบงเบฝเบเบเปเบฒเบ, เบเบฐเบเบดเบเบฑเบเบฅเบฑเบเบชเบฐเบเบฐเบเปเบญเบเปเบซเบผเบทเบเบปเบงเบขเปเบฒเบเบเบญเบเบญเบฑเบเบเบฐเปเบเบกเบฑเบ. เบเบฒเบเบชเบดเปเบเบเบตเป เบชเบณ เบเบฑเบเปเบเบเบฑเปเบเบเบญเบเบเบฒเบเบเบปเปเบเบเบงเปเบฒเบเปเปเปเบเปเบเบทเบเบเบปเปเบเบเบปเบเปเบเบเบเบฑเบเบฎเบฝเบ. เปเบเบดเบเปเบกเปเบเบงเปเบฒเบเบฒเบเบเบฑเปเบเบเปเบฒเบเบเปเบญเบเบเบดเบเบเบฒเบกเบขเปเบฒเบเปเบเบฑเปเบกเบเบงเบเบเปเบฝเบงเบเบฑเบเบเบธเบเบเบฐเบเบฒเบเบเบญเบเบฅเบฐเบซเบฑเบ. เบเบฒเบเบงเบดเปเบเบฒเบฐเปเบเบเบเบปเบเบเบตเป (QuantifiedCode, Codacy เปเบฅเบฐเบเบนเบกเบชเบฑเบเบเบฒเบ) เปเบฅเบฐเบเบฒเบเบเบปเบเบชเบญเบเบญเบฑเบเบเบฐเปเบเบกเบฑเบเปเบเปเบกเบ (เบเปเบฅเบดเบเบฒเบ AppVeyor) เบเบตเปเบกเบตเบเบฒเบเบเบธเปเบกเบเบญเบเบฅเบฐเบซเบฑเบเบเบฐเบกเบฒเบ 95% เบเปเบงเบเบซเบผเบฒเบเปเบเปเบฅเบทเปเบญเบเบเบตเป.
เบเบญเบเบเบฒเบเบเบฑเปเบ, เบเบญเบเปเบเบเบธเบเบเบปเบเบเบตเปเบญเบญเบเบเปเบฒเบเบดเบเปเบซเบฑเบ, เบชเปเบฒเบเบเปเปเบเบปเบเบเปเบญเบเปเบฅเบฐเบชเบปเปเบเบเปเบฒเบฎเปเบญเบเบเปเบเบถเบ!
เบเบฑเบเบเบฐเบเบฒเบเบญเบเปเบเบตเปเบกเปเบเบตเบก
เบเบงเบเปเบฎเบปเบฒเบเบดเบเบเบฒเบกเบเปเบฒเบเบฒเบก (เบเปเปโเบเบปเบโเบกเบฒโเบเบตเปโ ) เปเบฅเบฐ . เบกเบต .
เบเบงเบเปเบฎเบปเบฒเบญเบฑเบเปเบเบเบเบธเบเปเปเบเบทเบญเบ . เปเบเปเบเปเบเบญเบเบเปเบฒเบเบงเบเบเบฒเบงเปเบ GitHub, เบกเบตเบเบฝเบเปเบเป Autohotkey (เบเบงเบเปเบเบปเบฒเบกเบตเบเบธเบกเบเบปเบเบเบฐเบซเบเบฒเบเปเบซเบเปเปเบฅเบฐเบเบฐเบซเบงเบฑเบเบชเบฒเบเบญเบฑเบเบเบฒเบงเบเบฒเบ) เปเบฅเบฐ PyAutoGUI เบเปเบฒเบฅเบฑเบเปเบเบตเบเปเบเปเบงเบเบถเปเบ (เบชเปเบงเบเปเบซเบเปเปเบกเปเบเบเปเบญเบเบเบงเบฒเบกเบเบดเบเบปเบกเบเบญเบเบซเบเบฑเบเบชเบทเปเบเบเบเบนเปเบเบฝเบ Al Sweigart: "เบญเบฑเบเบเบฐเปเบเบกเบฑเบเบชเบดเปเบเบเบตเปเบซเบเปเบฒเปเบเบทเปเบญเบเบฑเบ. Pythonโ เปเบฅเบฐเบญเบทเปเบเป).
เปเบซเบผเปเบเบเปเปเบกเบนเบ: www.habr.com
