electric Posted August 27, 2022 at 09:08 AM Report Share #627013 Posted August 27, 2022 at 09:08 AM Bom dia, Em primeiro fico feliz por saber que esta comunidade ainda esta ativa, estive afastado da programação durante uns anos mas agora que voltei e vejo que ainda estamos aqui ativo fiquei bem feliz parabens. Passando a duvida, estou a aprender python, por diversão, e descobri que posso dar clicks em em imagens especificas usando o pyautogui, perfeito e funciona, a minha grande duvida é: Existe alguma forma de eu estar a usar a minha maquina ( teclado e rato ) e usar o pyautogui ao mesmo tempo ? como que dar os clicks ou escrever sem "usar" o meu rato ou teclado ? Forte abraça PS: acredito que possa ter colocado aqui a duvida se nao for peço desculpa e peço que me digam onde. Link to comment Share on other sites More sharing options...
Cerzedelo Posted August 29, 2022 at 04:00 PM Report Share #627026 Posted August 29, 2022 at 04:00 PM (edited) Em 27/08/2022 às 10:08, electric disse: Bom dia, Em primeiro fico feliz por saber que esta comunidade ainda esta ativa, estive afastado da programação durante uns anos mas agora que voltei e vejo que ainda estamos aqui ativo fiquei bem feliz parabens. Passando a duvida, estou a aprender python, por diversão, e descobri que posso dar clicks em em imagens especificas usando o pyautogui, perfeito e funciona, a minha grande duvida é: Existe alguma forma de eu estar a usar a minha maquina ( teclado e rato ) e usar o pyautogui ao mesmo tempo ? como que dar os clicks ou escrever sem "usar" o meu rato ou teclado ? Forte abraça PS: acredito que possa ter colocado aqui a duvida se nao for peço desculpa e peço que me digam onde. Não é possível usar o pyautogui e o seu computador em simultâneo dado que por exemplo não é possível clicar em dois elementos em diferentes posições na tela ao mesmo tempo. Isto é, se durante a execução do pyautogui mexer no mouse ou no teclado o programa não vai executar correctamente. Para dar um click com o mouse basta utilizar a função pyautogui.click(), se pretender um duplo click utiliza o pyautogui.doubleclick(). A questão é que para o pyautogui saber onde vai clicar tem de lhe indicar o local através das coordenadas da sua tela. Para isso utiliza a função pyautogui.position() que lhe vai mostrar quais são as coordenadas x e y do elemento que pretende clicar. Quanto a usar o teclado pode usar as funções pyautogui.press(),pyautogui.keypress(), pyautogui.keyup(), pyautogui.keydown() e o pyautogui.write() que escreve um texto. Veja o seguinte exemplo que procura e abre o firefox, e na barra de pesquisa do firefox escreve e abre a página do google.com, na barra de pesquisa do google escreve pyautogui e clica no primeiro link que aparece indo para a página da documentação do pyautogui. import pyautogui pyautogui.PAUSE=1 # dá uma pausa de 1 segundo entre os procedimentos seguintes, é importante na medida em que o computador pode demorar algum tempo a abrir as páginas pyautogui.press('win') # clica na tecla win pyautogui.write('firefox') #na barra de pesquisa escreve firefox, se tiver o firefox instalado e for o chrome troque por chrome pyautogui.press('enter') # prime a tecla enter pyautogui.press('backspace') # este é um promenor para abrir a pagina do browser pyautogui.press('shift') # seleciona a barra de pesquisa do browser pyautogui.write('google.com') # escreve na barra de pesquisa google.com pyautogui.press("enter") # prime a tecla enter pyautogui.write("pyautogui") #escreve na barra de pesquisa do ggogle a palavra pyautogui pyautogui.press("enter") # prime a tecla enter pyautogui.click(x=319, y=329) #clica no primeiro link que aparece da pesquisa que é a documentação do pyautogui Como referi o pyautogui.PAUSE é importante porque indica que o programa espera 1 segundo (pode alterar o tempo) entre as diversas operações, pois se o programa correr mais rápido de que o computador demorar, neste exemplo, a abrir a página do google.com, já não consegue executar os comandos seguintes. Para obter as coordenadas x e y a utilizar no pyautogui.click(), deve utilizar a função pyautogui.position(), mas para isso convérm utilizar um time sleep, para por o programa numa espécie de "pausa", para você minimizar o editor de código, e colocar o ponteiro do mouse, sobre o elemento que pretende clicar. import pyautogui import time time.sleep(5) pyautogui.position() Quando terminar a execução passado 5 segundos deste script aparece a informação Point(x=319, y=329), que corresponde as coordenadas onde estava o ponteiro do mouse, neste exemplo está sobre o primeiro link que aparece na pesquisa pyautogui na página do google.com Edited August 29, 2022 at 04:47 PM by Cerzedelo 1 Report Link to comment Share on other sites More sharing options...
electric Posted August 29, 2022 at 09:35 PM Author Report Share #627029 Posted August 29, 2022 at 09:35 PM Muito obrigado Cerzedelo, foi uma boa explicação sem duvida que acabei por tirar ainda mais duvidas 🙂 Eu estou a usar ( não sei se é melhor ou não ) click na imagem Exemplo: x, y= pyautogui.locateCenterOnScreen("IMAGENS\123.png", confidence = 0.5) O grande problema é que realmente preciso de algo que me permita poder estar a usar a maquina e processar o script, Ainda pensei e se calhar será a melhor hipótese, ter uma VM a correr com o script em simultâneo, não deixa de ser ambientes diferentes logo não interfere... Sei que em algumas programações ( lendo muito por ai ) consegue-se fazer o focus numa aplicação e usar apenas o código nessa aplicação, isso não é aplicável em python ? Mais uma vez obrigado, um abraço Link to comment Share on other sites More sharing options...
Cerzedelo Posted August 30, 2022 at 12:10 PM Report Share #627034 Posted August 30, 2022 at 12:10 PM 14 horas atrás, electric disse: Muito obrigado Cerzedelo, foi uma boa explicação sem duvida que acabei por tirar ainda mais duvidas 🙂 Eu estou a usar ( não sei se é melhor ou não ) click na imagem Exemplo: x, y= pyautogui.locateCenterOnScreen("IMAGENS\123.png", confidence = 0.5) O grande problema é que realmente preciso de algo que me permita poder estar a usar a maquina e processar o script, Ainda pensei e se calhar será a melhor hipótese, ter uma VM a correr com o script em simultâneo, não deixa de ser ambientes diferentes logo não interfere... Sei que em algumas programações ( lendo muito por ai ) consegue-se fazer o focus numa aplicação e usar apenas o código nessa aplicação, isso não é aplicável em python ? Mais uma vez obrigado, um abraço O problema não é a aplicação em python correr em background, a questão é que o pyautogui na sua concecpção se baseia em procura de imagens e não em texto, o que implica que quando estiver a correr, a tela que é considerada é aquela que está activa e não por exemplo uma tela que esteja minimizada. Uma eventual solução é aquele que apresenta de utilizar uma máquina virtual. Se usar o sistema operacional windows existe uma alternativa que é o pywinauto, que já opera em modo texto e não baseado em imagens. Link to comment Share on other sites More sharing options...
electric Posted September 2, 2022 at 12:32 PM Author Report Share #627089 Posted September 2, 2022 at 12:32 PM On 8/30/2022 at 1:10 PM, Cerzedelo said: O problema não é a aplicação em python correr em background, a questão é que o pyautogui na sua concecpção se baseia em procura de imagens e não em texto, o que implica que quando estiver a correr, a tela que é considerada é aquela que está activa e não por exemplo uma tela que esteja minimizada. Uma eventual solução é aquele que apresenta de utilizar uma máquina virtual. Se usar o sistema operacional windows existe uma alternativa que é o pywinauto, que já opera em modo texto e não baseado em imagens. Boa tarde Cerzelo desculpe a demora tardia na resposta, tenho estado um pouco ocupado para este meu hobby, bem vou começar a investigar isso, pois será uma questão que eu iria fazer, pois eu percebo um pouco de VB.Net e acredito que esta a morrer cada vez mais ( como disse posso estar enganado pois não ando neste mundo a algum tempo ) No entanto caso exista alguma maneira de conseguir usar em simultâneo nem que seja com outra linguagem, terei que me adaptar e começar a estudar essa mesma linguagem 😉, estou aberto a tudo neste momento. Obrigado Link to comment Share on other sites More sharing options...
Solution Cerzedelo Posted September 2, 2022 at 06:10 PM Solution Report Share #627097 Posted September 2, 2022 at 06:10 PM 4 horas atrás, electric disse: Boa tarde Cerzelo desculpe a demora tardia na resposta, tenho estado um pouco ocupado para este meu hobby, bem vou começar a investigar isso, pois será uma questão que eu iria fazer, pois eu percebo um pouco de VB.Net e acredito que esta a morrer cada vez mais ( como disse posso estar enganado pois não ando neste mundo a algum tempo ) No entanto caso exista alguma maneira de conseguir usar em simultâneo nem que seja com outra linguagem, terei que me adaptar e começar a estudar essa mesma linguagem 😉, estou aberto a tudo neste momento. Obrigado Não é que o VB.net esteja a morrer, a questão é que neste momento o python, digamos está na moda, e tem uma lista de bibliotecas enorme, que lhe permite criar os mais diversos tipos de programas, aliado a uma sintaxe relativamente simples e integração com todos os sistemas operativos e web, enquanto o VB.net só se aplica aos sistemas operativos windows. Aliás muita da popularidade do python reside na sua aplicação na ciência de dados, machine learning e inteligência artificial. Quanto ao pyautogui, neste momento existe essa limitação, contudo no seu roadmap eles apontam como recursos planeados para versões futuras: - Find a list of all windows and their captions. - Make it easier to work on systems with multiple monitors. O problema é que não sabemos quando é que estas funcionalidade irão ser implementadas e se irão suprir esta necessidade. O exemplo que lhe forneci anteriormente essencialmente usa os recursos web. Neste caso o pyautogui não é o mais indicado, mas sim o selenium ou o playwright. Ou seja para criar um bot que vá operar o seu computador utiliza o pyautogui, se quiser usar um bot que vai operar na internet aí usa o selenium que opera através do css ou do xpath da pagina, pode operar em background, ou até em modo headless. Infelizmente por enquanto o pyautogui não parece operar da mesma forma. Há quem utilize algumas artimanhas como utilizar maquinas virtuais ou mesmo adicionando 2 teclados e dois ratos ao computador e depois usar o multiplex. No entanto neste processo não é garantido que a pyautogui funcione. Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now