fala impressionador no vídeo de hoje a gente vai falar sobre o celenio o celenio É uma ferramenta uma biblioteca de parte usado para automações web para você automatizar qualquer processo que acontece na internet seja uma busca de alguma informação na internet seja raspagem de dados em sites dinâmicos carregas informações de pouco em pouco seja o sistema da sua empresa que roda dentro do seu navegador tudo que tá no seu navegador o celenium consegue automatizar e nesse vídeo eu vou te dar um resumão uma aula completa de Como que funciona o celen a gente vai passar
sobre várias funcionalidades dele aplicando aqui no em exemplos para você poder consolidar isso tudo exercitar junto comigo então vamos [Música] lá bom galera se você gostou da ideia do vídeo já deixa seu like se inscreve no canal e eu vou deixar na descrição aqui dois presentes primeiro o arquivo da aula de hoje que essencialmente é um resumo das funcionalidades do celenium que eu acho que é muito importante você ter salvo no seu computador para consultar Sempre que precisar Então pega ali na descrição o segundo presente é um minicurso de automação com python que você pode
inclusive integrar com você vai aprender na aula de hoje para levar suas automações para um próximo nível então pega esse minicurso também e volta aqui pro conteúdo e vamos começar bom galera como eu tava falando o que que é o celenium o celenium ele é uma ferramenta de automação com o Python tá então ele essencialmente ele controla o seu navegador para você conseguir automatizar qualquer processo que Rode no seu navegador e o legal do celenio é que ele consegue rodar em segundo plano Ou seja você bota uma automação do celenio para rodar você pode fazendo
outra coisa no seu computador ele vai est mexendo no navegador você vai ver aqui o navegador vai aparecer e tudo mais ele vai rodar as coisas Mas você pode inclusive usar uma outra Instância do seu navegador né abre um outro navegador vai fazendo outra coisa no seu computador e como ele tá controlando o seu navegador automaticamente ele vai fazendo as coisas lá e nada do que você tá fazendo no computador vai impactar ele e nada do que ele tá fazendo vai impactar você ele vai só controlar aquele navegador e vai executar beleza Além disso O
celenio é na minha opinião a melhor ferramenta que a gente tem no Python para fazer essas automações o celenio junto com o playwrights tá porque eles T uma vantagem só que o celenio ele acaba atualmente pelo menos ele é mais usado Ele é mais famoso tá porque o celenio ele tem uma vantagem são outras ferramentas de raspagem de dados que é o quê ele consegue trabalhar com sites dinâmicos que que é um site dinâmico por exemplo no YouTube quando você entra no YouTube você chega deixa eu abrir aqui o YouTube que você vai conseguir visualizar
bem isso mas quando você chega no YouTube e faz uma pesquisa por exemplo vou chegar aqui no YouTube olha lá Tã vou chegar aqui ó pesquisar aqui ó YouTube E aí aqui no YouTube eu vou pesquisar aqui por exemplo por Python vídeos de Python E aí olha o que que vai acontecer ele vai aparecer aqui os vídeos de Python E aí quando eu for rolando para baixo aqui ó ele vai carregar mais vídeos você vai ver ele carregando ó ele tá carregando mais vídeos tá ó tá vendo carregou mais vídeos eu tô rolando agora para
baixo ele vai carregar mais vídeos vai carregar mais tamp ou seja esse é um site que ele é carregado de forma dinâmica como ele é um site que é carregado de forma dinâmica as informações não estão sempre já prontas ali como o celenio ele simula o controle do seu navegador ele consegue fazer ex vez informações da mesma forma que você usuário final veria essas informações então ele consegue trabalhar com ses dinâmicos isso é muito legal dele como que a gente usa o celenio primeiro passo é você instalar para você instalar é só você chegar aqui
no seu terminal E aí rodar aqui o comando eip install Selenium tá essencialmente é isso que você vai precisar PIP install Selenium roda ele vai fazer a instalação no meu caso ele já tava instalado então ele só vai dizer que que estava instalado no seu caso ele vai fazer a instalação toda beleza e antigamente nas versões anteriores do celen você também aqui tinha que gerenciar o que a gente chama de um web driver o que que é o webdriver webdriver basicamente é a ferramenta que o celen usa para controlar o seu navegador todo navegador ele
tem um web driver por trás do Google Chrome é o que a gente chama de chromeon o do Firefox é o gecko driver o do Opera eu não sei qual é mas enfim todo navegador ele tem um webdriver por trás que nada mais é do que o cara que faz a conexão com o seu navegador e que permite você mexer nas coisas com ele e é esse cara que permite o Python controlar o seu navegador é o webdriver até a versão anterior do celenium antes de eu gravar esse vídeo daqui você tinha que fazer isso
por conta própria atualmente o celenio ele tem o gerenciamento do webdriver da versão do seu webdriver se ele tá compatível com o seu navegador ele faz gerenciamento automaticamente e se não tiver ele baixa ele faz isso certinho Então você provavelmente não vai precisar se preocupar com webdrive principalmente se você estiver usando os navegadores Chrome e Firefox tá que são os navegadores mais recomendados pela biblioteca do celenio inclusive se eu não me engano Eu recomendo até mais o Chrome do que o Firefox tá então eu particularmente uso sempre no Chrome Mas se você tiver usando algum
navegador super diferentão Talvez o celenio não ten integração Nativa com ele você vai ter que gerenciar isso mas se você tiver usando Chrome Firefox Muito provavelmente você não vai ter que gerenciar esse webdriver o que significa que para você abrir o navegador que é o primeiro comando que eu quero ensinar para vocês aqui Abrir o navegador controlado pelo celenio a única coisa que você precisa fazer é Rodar aqui importar from celenio então importar na biblioteca do celen você vai importar o o Web driver que é esse cara que gerencia que controla o seu navegador e
na hora de você abrir o seu navegador você vai criar o navegador você vai fazer ó navegador vai ser esse webdriver que a gente importou ponto qual navegador você vai usar se você for usar o Chrome ponto Chrome se você for usar o Firefox pon Firefox no meu caso eu vou usar o Chrome porque é que eu tenho instalado o computador Lembrando que o navegador tem que est instalado no seu computador sim tá E aí quando a gente executar esse código aqui ele vai abrir o Chrome pra gente no meu caso ele vai abrir numa
outra tela que eu tô com duas telas aqui mas ele abre e fecha rapidão então se você rodar o código só ele vai pum abrir e fechar aqui bom galera acertei aqui o rolê das Telas só para você visualizar a tela que eu tô rodando ou seja só mudei a tela que eu tô gravando aqui para vocês e aí se eu rodar o código aqui agora vocês vão ver o meu navegador aparecendo aqui ó tá vendo ele aparece rapidão e fecha por quê Porque depois que ele abre o navegador acaba o meu código ele encerra
aquela Instância do navegador Então o que a gente costuma fazer aqui só para a gente poder ver que as coisas estão acontecendo é eu vou importar a biblioteca time só para botar aqui no final do meu código um time P slip de 10 segundos só pra gente ver que ele abriu o navegador e olha lá quando eu rodar o código agora ele vai abrir o navegador e vai esperar 10 segundos para fechar o legal é que ele fala aqui ó o Chrome está sendo controlado por um software de teste automatizado ou seja ele reconhece que
o Chrome tá sendo controlado pelo Ceno que é uma ferramenta de automação justamente para fazer esse tipo de processo E aí o que a gente vai usar Não tem problema ele tá sendo controlado pelo celenio a gente vai usar ele agora para fazer as nossas automações então o primeiro passo é isso a gente abre o navegador assim e aqui já vai um ponto muito importante se você tiver usando um editor de código online esse editor de código online ele tem que ter meio que dentro dele esse navegador instalado dentro dele alguns tem se eu não
me engano por exemplo replet tem mas não são todos A grande maioria não tem então para você usar o celenium num num editor de código online é muito mais difícil normalmente a gente vai botar ele numa máquina virtual ou em alguma ferramenta que tem algum navegador justamente quando você quer disponibilizar essa ação digamos assim sem seu computador precisar ficar ligado e tal ou então você roda ela no seu próprio computador beleza bom Então mostrei para vocês como que abre o navegador agora a gente vai acessar um site como que a gente acessa um site que
é um processo bem padrão do celenio navegador pget e a você passa para ele o site que você quer acessar e aqui é muito importante você passar esse iniciozinho https 2 p bar bar então repara o seguinte eu vou abrir aqui de novo meu navegador que eu tinha fechado e aí eu vou mostrar para vocês aqui o seguinte ó quando eu entrar aqui no site por exemplo Digamos que a gente quer entrar no site da Hashtag #treinamentos pcom eu entro eu Lira costumo fazer isso eu entro no site copio o link que tá aqui em
cima e colo ele lá no meu código e cola ele aqui no meu código porque quando você copia o link ali de cima ele já vem o link completo E é isso que você precisa se você passar só isso aqui ele não vai reconhecer isso aqui como site Então você tem que passar com o link completo mesmo e aí se eu rodar o código agora você vai ver ó ele vai tarã acho que eu não cliquei para rodar não ah tá aqui cliquei sim ó abriu rodou e ele abriu meu navegador aqui bonitão tá vendo
tranquilo então show de bola agora agora repara o seguinte em alguns casos como no meu que tá acontecendo aqui agora o meu navegador ele não abre em tela cheia e eu Lira particularmente não gosto de ficar rodando automação sem o navegador em tela cheia porque eu acho que me atrapalha de ficar visualizando as coisas atrapalha inclusive vocês vão ver que isso atrapalha Inclusive a sua automação porque se você quiser clicar em algum elemento esse elemento tem que estar aparecendo na tela e a gente vai ver como que a gente trata quando o elemento não tá
na tela mas como ele não tá na tela cheia por padrão Vai ter muito mais elementos que não vão est na tela se você fizer é isso então o que que eu recomendo Abrir automação coloca em tela cheia Então como que a gente faz para colocar o navegador colocar o navegador em tela cheia a gente basicamente roda o comando navegador pon Maximize Windows e Lira da onde você tá tirando todos esses comandos aqui galera todos esses comandos eu tô tirando da biblioteca do Selenium Python então na dúvida eu sempre recomendo que sempre que vocês forem
criar qualquer automação abre a documentação Selenium Python clica aqui no primeiro link e aqui vocês vão ter toda a documentação disponível para vocês Vocês podem pesquisar alguma coisa aqui ó getting started ele vai mostrar o from celen Import web drive ele vai dar um exemplo aqui para vocês e tudo mais a documentação do celen eu não acho que é das mais fáceis de entender mas também não é um bicho de sete cabeças Inclusive eu vou usar ela na aula de hoje para mostrar coisa para vocês Tá então vamos lá vamos seguir ó agora com isso
aqui a gente já maximiza a nossa tela e eu gosto sempre de testando então maximizei a tela vamos rodar o código agora aí eu rodo o código ele vai abrir o meu navegador ó abri o navegador botou ele entrou no no #treinamentos e agora colocou em tela cheia uma vantagem do celen em relação a várias outras ferramentas de automação é que se você reparar ele não tá executando isso na velocidade da luz né ou seja ele tá executando esse nosso código aqui mas olha lá vou rodar de novo aqui Repara bem presta bastante atenção enquanto
o site da hashtag tá carregando ele não maximizou a tela ainda tá vendo ou seja o Selenium automaticamente ele sempre espera essa rodinha aqui do navegador terminar de carregar algumas informações dos Sites elas são carregadas de forma dinâmica não significa que a rodinha do navegador parou de carregar o celenio ele sempre espera a rodinha do navegador Parar de carregar ou seja todas as informações do site serem enviadas pro seu computador agora se o site carrega alguma informação de forma dinâmica você tem que explícitamente falar pro celen esperar mas eu não preciso falar pro celenio esperar
o site da hashtag carregar para eu poder maximizar minha tela eu não preciso falar para ele esperar isso aqui carregar para eu poder por exemplo procurar agora alguma informação na tela que que a gente vai querer fazer por exemplo no caso do site da hashtag aqui eu vou querer clicar nesse botão quero aprender eu não preciso esperar eu não preciso falar pro Celene Celene espera esse botão aparecer porque esse botão ó quando eu dou F5 aqui eu entro na página sempre que eu entro na página esse botão já tá na tela ele já aparece aqui
então depois que o site carregou esse botão já existe o celenio ele automaticamente espera o site carregar para aí sim rodar os próximos comandos e agora o próximo comando que então isso é muito legal dele porque é uma configuração padrão do celenio obviamente se for algum elemento dinâmico eu vou mostrar para vocês já já como que a gente faz para esperar ele carregar então eu vou agora selecionar um elemento na tela e sempre que você quiser selecionar um elemento no seu navegador você vai usar o na ador P find elements tá você tem o find
elements para encontrar um elemento e o find elements para encontrar vários elementos Lira por que que eu vou querer buscar um ou vários você vai querer já já vamos usaro find elements porque eu quero encontrar esse botão verde aqui de quero aprender bom o find elements ele precisa de duas informações para funcionar a primeira informação é qual é a característica desse elemento que você tá procurando aqui que você quer pegar você tá procurando ele pelo id dele pela classe dele pelo texto dele pelo nome dele todos os elementos que você vê dentro de um site
eles T um código por trás deles por eles terem um código por trás deles eles têm várias informações associad a eles você quer ver para você visualizar essas informações você pega o seu Mouse Clica com o botão direito no elemento que você quer por exemplo no elemento quer aprender ou clica em qualquer lugar da tela e clica em inspecionar tá vendo inspecionar eu no meu caso aqui é a última opção inspecionar ele vai abrir essa janelinha para você essa janelinha ela pode estar na lateral do seu Google Chrome pode estar aqui embaixo pode estar em
algum lugar no meu ele tá numa janela separada aqui o ou então se ele não mudar ali direto você clica nos três pontinhos aqui e muda aqui ó doc Side que ele vai ser numa janela separada ó numa janelinha lateral aqui aparecendo tá vendo ó nos três pontinhos eu quero que apareça embaixo e assim vai você consegue mudando aqui eu gosto de usar ele numa janela separada tá repara o seguinte se eu chegar agora já com essa janela aberta clicar com o botão direito aqui no botão e clicar em inspecionar ele vai selecionar esse elemento
aqui uma outra forma de você selecionar esse elemento é você clicar nessa setinha aqui em cima tá vendo essa setinha aqui em cima clica nessa setinha tum e vem com o mouse passando em cima tá V tá vendo ó quando eu cliquei nessa setinha quando eu passo o mouse em cima de alguma coisa ele já vai mostrando quem é essa coisa então eu vou passar com o mouse em cima do botão queera prender e vou clicar nele ó pum cliquei ele marcou o botão quero aprender vamos olhar esse botão quero aprender tá aqui ó o
botão esse botão quero aprender deixa eu Fechar essa janela tá fechou esse botão que quero aprender ele tem várias informações sobre ele ele tem um Class ele tem um target ele é um botãozinho do tipo A tá vendo ele é uma tagz minha a do HTML isso daqui é HTML se você não sabe nada nada nada de html talvez você olha isso daqu fala isso aqui tá um pouco difícil só que se você já tem uma mínima base de html isso aqui já ajuda você eu vou deixar na descrição um vídeo também de introdução HTML
caso isso vai te ajudar porque se você for realmente trabalhar com automações celenium é legal que você tenha uma noção de html mas essencialmente o que a gente tá buscando aqui é algum parâmetro tá vendo que isso aqui é uma chavezinha que tem vários parâmetros dentro dele tem o href tem o target tem o Class você tá procurando algum parâmetro que diga que identifica esse botão eu vou usar o parâmetro classe ó parâmetro classe é botão traço Verde então no meu código então V voltar lá pro nosso código eu quero selecionar o elemento que tem
a classe chamada botão verde Como que você passa isso a primeira informação é eu quero selecionar esse elemento de acordo com o Class name dele ou seja com o nome da classe que ele tem com o Class dele tá vendo o nome da classe que ele tem E aí depois você passa Qual o nome da classe que ele tem botão traço Verde esse cara daqui é esse botão verde aqui de quero aprender tanto que eu posso atribuir esse cara a uma variável botão verde é esse cara daqui e aí E se eu quiser clicar nesse
botão então clicar em um elemento clicar no botão a gente vai aprender a escrever depois eu faço botão verde ponto clique e eu consigo clicar nesse botão Então tá vendo eu tô pegando esse elemento e depois clicando nele se isso funcionar se eu rodar esse código quando eu clicar no botão ele tem que abrir uma nova aba e entrar na nova janela aqui dessa nova aba tá vendo que é o que esse botão faz esse botão quando eu clico nele ele é pelo menos no momento que eu tô gravando o vídeo tá pode ser que
no momento que você esteja executando essa aula tem mudado a funcionalidade do site da hashtag mas o fato é encontra um botão encontra a classe dele então não copia o meu código usa o que você tá aprendendo aqui agora para você exercitar dentro do site da hashtag mesmo então clica procura um botão identifica a classe name dele e manda aqui eu fala assim quero selecionar esse botão de acordo com a classe name dele e vou mandar clicar nele cliquei nele Beleza então se eu rodar o código agora vamos ver ó rodei ele vai abrir meu
navegador vai maximizar minha tela Ó vai entrar no site hashtag vai maximizar minha tela e vai clicar no botão quero a prender tá vendo clicou no botão quero a prender abriu essa janela aqui para mim show de B eu quero te mostrar nesse sear aqui se Ele clicou nesse botão então a minha automação tá rodando de forma perfeita Beleza então a gente aprendeu a selecionar um elemento na tela e a clicar em um elemento só que você vai ver que você às vezes vai ter uma mesma classe usada em vários elementos outra coisa você vai
ver que alguns elementos eles têm outro parâmetro que não seja só o parâmetro classe eles tem o parâmetro ID eles t o parâmetro name eles T vários outros parâmetros como que eu sei quais são as coisas que estão disponíveis para selecionar um elemento lá na documentação lembra que eu falei para vocês abrirem na documentação Se você olhar aqui ó a opção locate elements Tá vendo locating elements você vai ver ó você pode encontrar o elemento pelo id pelo nome pelo expf pelo texto do link que tem dentro dele pelo por um pedaço do texto do
link que tá escrito nele pelo nome da tag pela classe name e pelo CSS selector beleza os que a gente mais costuma usar são Class name e ID tá então aqui vocês vão ver que a gente vai usar os dois tanto Class name quanto ID na aula de hoje tá você pode usar os outros a gente poderia entrar aqui em detalhe dos outros e tal mas como objetiva aqui apresentar para vocês saiba você tem todas essas opções a gente vai usar mais o id e o Class name Tá bom então vamos lá agora o que
que eu quero fazer aqui repara o seguinte a gente pegou um elemento aqui que era o primeiro botão que aparecia na tela deixa eu entrar lá no meu site de novo ó era o primeiro botão que aparecia aqui na tela o primeiro botão verde só que repara o seguinte esse segundo botão verde e esse terceiro botão verde qual botão verde eu sei que ele vai selecionar sempre que você usa o find elements ele seleciona o primeiro botão verde que ele vê ou seja o primeiro elemento que tem essa classe que ele vê você quer ver
um exemplo olha aqui só imagina que eu quero clicar aqui em assinatura eu quero clicar nesse cara aqui assinatura bom se eu quero clicar nesse cara assinatura como que eu clico nele eu ensinei para vocês a gente vem aqui na janelinha na janelinha do inspecionar né para abrir ela botão direito qualquer lugar da tela inspecionar ele vai abrir a janelinha a gente seleciona aqui a setinha coloca aqui em cima da assinatura clica nela ele vai marcar esse cara legal esse cara aqui qual é a classe dele ah a classe dele é header título vou copiar
essa classe classe aqui header título vou chegar lá no meu código agora eu vou mudar eu quero pegar o cara que tem a classe name de header título Então esse cara não vai ser mais o botão verde ele vai ser o botão assinatura e eu quero agora clicar no botão assinatura botão assinatura pon cli é isso que a gente quer fazer não é não foi exatamente isso que eu falei para vocês foi exatamente isso deixa eu diminuir um pouco o zoom para aparecer tudo foi exatamente isso que eu mostrei para vocês só que repar o
seguinte esse botão assinatura aqui ele não é o primeiro elemento que tem essa classez inha header título Se você olhar esse cara de cursos aqui ó esse cara de cursos aqui ele também tem a classe header título quando eu mandar el rodar o código aqui com find elements ele vai encontrar o primeiro elemento que tem a classe name header título se eu rodar o código agora ao invés de clicar no botão de assinatura que era o cara que eu queria clicar ele não vai clicar ele vai clicar no botão de cursos fic olhando ó fic
olhando Tá vendo clicou no botão de cursos e não no botão assinatura que era o cara que eu queria como que eu faço para ele clicar no segundo elemento aí a gente vai ter que então encontrar encontrar vários elementos para encontrar vários elementos você vai usar o mesmo comando A diferença é que você vai usar com find elements no plural e agora esse cara daqui não vai ser um botão assinatura ele vai ser uma lista de botões ele vai ser uma lista de botões é uma lista com todos os botões que tem essa classe rer
título se ele não encontrar nenhum essa lista vai est vazia se ele encontrar um único botão essa lista vai ter um único elemento se ele encontrar vários botões essa lista vai ter vários elementos tá então botei ela essa lista de botões aqui aqui agora Como que eu faço para clicar nesse botão eu posso percorrer essa lista eu posso fazer assim ó para cada botão na minha lista de botões eu quero fazer o quê eu quero clicar no botão cujo texto tem a palavra assinatura então eu posso fazer assim ó se botão P se a palavra
assinatura tá dentro do botão pon text então pon text é um parâmetro que você pode pegar de qualquer elemento de qualquer site todo elemento ele pode ter um texto dentro dele ou não se ele não tiver texto texto ele é vazio se ele tiver um texto ele vai dizer para você qual esse texto esse botão esse elemento que a gente selecionou aqui esse elemento aqui com header título se você abrir ele aqui você vai abrir você vai ver que ele tem o texto cursos esse outro aqui ó da assinatura se você abrir ele aqui você
Verê que ele tem o texto assinatura então eu tô procurando se o texto assinatura tá dentro do texto do botão se tiver então eu vou clicar nesse botão botão pon cque E aí eu posso inclusive interromper meu loop porque eu não preciso ficar percorrendo todos os botões eu já encontrei o botão que eu queria eu dou um Break interrompo meu loop se isso aqui funcionar agora ele tem que efetivamente clicar no botão assinatura vou ocultar aqui essas dois esses dois cliques aqui só para ele não não acabar clicando no botão assinatura na verdade vou cultar
só o clique aqui vou cultar só o clique só para ele não clicar no botão assinatura mas para vocês entenderem que ele vai clicar agora no botão assinatura por meio desse fora aqui vamos ver rodei o código aqui agora tã ó abriu o navegador maximizou o navegador clicou no botão assinatura e foi lá ab beleza que era exatamente o que eu queria mostrar para vocês então Ele clicou no botão assinatura e funcionou numa boa show de bola beleza galera agora o que eu vou fazer vou fazer o seguinte eu vou voltar aqui pro botão verde
porque tem um negócio que eu quero mostrar para vocês que o botão verde é me permitir mostrar botão verde e botão verde pon Click beleza aqui e aí o Class name que a gente vai botar aqui era botão traço verde né do botão verde era botão traço Verde vamos pegar aqui o site e repara tá vendo que eu gosto sempre de manter o site que eu quero acessar tá aberto numa janela normal que não tá sendo usada pela automação justamente porque essa janela normal que não tá sendo usada pela automação me permite ficar brincando com
ela aqui encontrando os elementos nela e tal navegando nela aqui que você tá usando na automação ela fica fechando e abrindo o tempo todo então aqui ó o botão verde é classe é botão traço Verde show de bola tá agora repara o seguinte eu vou pegar ISO aqui e vou executar esse código de novo e eu quero que você repare muito bem o que acontece quando eu clico no botão verde Olha só rodei o código Olha lá cliquei ele vai agora abrir meu navegador vai maximizar e e depois de maximizar ele vai clicar no botão
verde Olha lá ele abriu o botão verde numa outra eu quero te mostrar nesse vídeo ele abriu isso aqui numa outra aba esse comunidade pressionador ele abriu numa outra aba O que que significa isso significa que esse clique do botão aqui fez o cara abrir uma nova aba como ele fez o cara Abrir numa nova aba vocês tem que aprender a gerenciar as abas porque por exemplo esse processo que ele rodou aqui agora ele rodou na aba anterior inclusive se eu chegar aqui agora por exemplo Quero ensinar para vocês como que eu faço para quer
dizer ah não a gente já sabe como que eu faço para navegar para um site diferente imagina que eu cliquei naquele botão e depois eu quero ir para um site diferente por exemplo navegador.get e eu quero acessar por exemplo o link do curso de Python que é esse aqui ó .com bar curso Python então eu quero acessar esse site aqui beleza Olha o que que vai acontecer qual aba do meu navegador vai acessar o site curso de Python a aba que ele abriu quando eu cliquei no botão ou aba original vamos ver rodei o código
aqui ó abriu aqui o navegador presta bem atenção tá princialmente os nomz aqui em cima ó comunidade de pressionador eu quero te mostrar nesse vídeo ele tá na comunidade pressionador a aba antiga Tá no curso de Python E se eu quisesse usar a aba nova para navegar pro curso de Python como que eu faço para isso Ou então se eu quiser simplesmente voltar paraa aba antiga e usar a aba antiga eu preciso saber selecionar Abas entre si e é bem tranquilo fazer isso no celenio para isso a gente vai usar o navegador a gente vai
usar então aqui Como selecionar uma aba pra gente pegar as abas que a gente tem disponível a gente vai usar o navegador pwi handles tá tá isso aqui dá para você a lista com todas as abas no caso a gente só tem duas Abas a Abas índice zero que é a nossa primeira aba e a Abas índice um que é a nossa segunda aba então se eu quiser entrar no site de Python agora na segunda aba eu antes de fazer isso aqui antes de entrar no site de Python eu aqui vou fazer o seguinte Olha
só navegador muda para mim para uma Window nova para uma janela nova que é a janela da Abas índice um tá então muda para mim para uma janela que é a Abas índice um que é aquela primeira aba beleza aquela primeira aba não a segunda aba né porque a índice zero é a primeira a Abas índice um é a segunda Quando eu fizer isso aqui ele vai primeiro mudar para outra aba então o nave Então essa variável navegador repara Lira mas ele não tava aparecendo pra gente já aba nova sim ele mostra para você aba
nova mas a variável navegador que é o navegador que você criou Originalmente ele tá sempre interagindo com a aba original que ele tinha criado então se ele tá sempre interagindo com a aba original que que ele tinha criado se você quiser que ele interaja agora com a nova aba você tem que falar navegador para de fazer as ações na aba original e faz as ações agora nessa aba daqui que eu quero que é na aba um então ele agora vai pra aba um e na aba um vai começar a entrar no site do curso de
parto e fazer as outras coisas que a gente vai seguir a partir daqui se eu rodar esse código agora Repara bem ó entrou aqui no site vai maximizar ele vai clicar no botão queera aender entrar na comunidade aqui e depois ele vai chegar e vai me jogar agora pra tela do curso de Python tá vendo me jogou pra tela do curso de Python aqui e aqui agora a gente pode seguir o nosso código justamente ensinando o próximo passo para vocês que é cara beleza essa paba aqui tem um formulário como que eu faço para preencher
aquele formulário faço para escrever Então como que eu faço para escrever em um campo formulário alguma coisa usando o celen você essencialmente tem que fazer o mesmo processo do clique você vai encontrar um elemento e depois você vai chegar nesse elemento e usar o ponto send Keys No elemento escrevendo aqui o texto que você quer mas primeiro você precisa encontrar o elemento para fazer isso então Digamos que eu queria escrever aqui ó nessa nesse seu primeiro nome aqui nessas nesse campo de texto aqui como que a gente faz mesmo procedimento de antes botão direito em
qualquer lugar inspecionar vem na setinha marca a cara que eu quero selecionar e esse cara que eu quero selecionar é esse input aqui esse input ele tem a classe forma inscrição input então eu poderia usar essa classe aqui mas sempre que eu encontro um elemento que tem um ID tá vendo que esse cara que tem o ID ó o ID first Name sempre que eu encontro um elemento que tem o ID Eu uso o ID por quê Porque o ID ele é normalmente como o próprio nome já diz um identificador ele é um identificador único
então você não costuma ter mais um elemento numa página Pelo menos você não Dev Deia ter mais um elemento numa página com o mesmo ID porque o ID é um identificador único então se eu tenho o cara first Name aqui significa que se eu pegar o elemento first Name eu vou dar pegando esse cara com certeza então eu vou usar o ID porque é o melhor elemento para isso então eu vou pegar o navegador PF elements porque eu tô querendo encontrar um único elemento de acordo com o ID dele e qual é o ID dele
que eu vou passar o ID dele é isso que tava aqui ó first Name first Name esse cara daqui é quem Esse cara é esse campo aqui de texto a você tem duas opções você pode fazer igual a gente fez aqui em cima você pode fazer assim ó campo do nome vai ser esse cara aqui e depois fazer campon nome P sen Keys Lira Ou se você quiser se você não precisar armazenar ele numa variável para nada você pode fazer direto navegador PF elements PS para você escrever logo dentro desse cara eu quero escrever nele
o meu nome é Lira pronto se eu rodar esse código agora ele vai escrever o nome Lira lá mas vamos fazer já pros outros pro e-mail e pro telefone e e tentar clicar no botão aqui vamos ver ó vou chegar aqui agora vou selecionar o e-mail o e-mail é o id e-mail e vou selecionar o telefone o telefone tem o ID F tá vendo Então vou escrever exatamente essas coisas aqui vou pegar aqui ó esse aqui é o então primeiro é o first Name depois é o e-mail e depois é o campo de ID fone
no e-mail eu vou escrever um e-mail falso que a gente não usa para nada que só uso para testar código então não adianta mandar mensagem para ele que ninguém vai responder botei um e-mail aqui e no telefone Vou botar no telefone aleatório também 21 99999999 beleza telefone aleatório show de bola se eu rodar esse código agora ele tem que Preencher esses três caras aqui e depois disso eu quero clicar no botão quero acessar as informações do curso vamos ver o que que vai acontecer vou espionar setinha quero as informações do curso ele é um botão
verde também ah não ol aqui ó o botão ele tem o ID form submit aí repar esse ID form submit ele tem um número do formulário Sim ele é um ID Eu poderia usar ele só que eu tô imaginando aqui pô se algum dia hashtag mudar o número desse formulário aqui eu tô imaginando que esse D vai mudar e vai me ferrar vai ferrar minha automação aí você tem que pensar o que que você acha aí é feeling mesmo que que você acha ou experiência né que que você acha que é mais fácil hashtag mudar
o nome da classe ou o nome do id aqui eu acho que o nome de ID é mais difícil dar hashtag mudar tá eu acho que esse ID é mais difícil então mesmo assim eu vou usar o ID apesar de ter esse numerozinho aqui se você achasse que é a classe você pode usar a classe tá então eu vou chegar aqui e vou agora fazer o navegador pon find elements de acordo com o ID dele a gente vai passar o ID dele que é aquele botãozinho ponto clique porque eu quero clicar nele eu não quero
agora enviar os text eu quero clicar nele então da mesma forma que eu posso fazer o clique separado eu posso fazer o clique tudo na mesma linha de código vamos rodar o código e ver se funciona vamos lá rodei pelo meu tom vocês devem imaginar que vai acontecer alguma pegadinha então presta bastante atenção tá olha lá ele vai abrir o navegador vai maximizar ele vai abrir as duas janelas essa janela daqui ele vai navegar pro curso de Python vai preencher e olha lá o que aconteceu tã ele me deu uma mensagem de erro que mensagem
de erro é essa daqui se você reparar Olha lá navegador PF elements ID o nosso botão de formulário pon Click foi aqui que deu o erro Qual foi o erro que ele deu dá uma olhada aqui embaixo ó ele fala Element Click intercepted Element is not clickable ou seja o elemento que está tentando clicar então o parâmetro de clique tem que ser sempre num elemento que está dentro da tela esse elemento tem que tá visível na tela e quando ele entra no navegador dependendo do tamanho da sua tela no meu caso aqui nesse nessa tela
aqui ele tá aparecendo mas quando na automação ele tem uma barrinha extra aqui embaixo esse botão não aparece na minha tela igual por exemplo se eu mandasse ele clicar nesse botão que tá aqui embaixo quando ele entra no site ele ia dar um erro porque quando ele entra no site Ele tá aqui em cima ele não consegue clicar no botão que não tá aparecendo na tela então o que que a gente tem que fazer antes de clicar no elemento eu tenho que falar pro meu navegador navegador espera na verdade Coloca centraliza aquele elemento na tela
Coloca aquele elemento na tela Então o que eu preciso ensinar para vocês antes da gente fazer esse clique aqui é como que eu faço para dar scroll ou colocar um elemento na tela essencialmente para isso a gente vai ter que usar não tem uma função direta na verdade assim até tem uma função Direta do celenio que é a parte de action Change do celenio tá o celum ele tem uma ferramenta de action Change que é você fazer ações em Cadeia Eu quero primeiro fazer isso depois eu faço aquilo depois eu faço aquilo tá então você
poderia sim e rodar várias coisas em sequência usando Action Chains mas eu Quero ensinar para vocês um que vai até abrir mais possibilidades para vocês aqui uma outra forma de fazer tem mais uma forma de fazer várias coisas né Essa daqui uma outra forma que é a gente fazer um Execute script ou seja o Selenium permite que você tudo nos navegadores toda a parte dinâmica dos Sites ela é controlada por JavaScript pelo menos atualmente né então esse esse efeitinho que você tá vendo aqui das coisas abrindo o scroll que você dá aqui automaticamente e tal
é tudo feito com JavaScript então o cenio ele permite que você Rode um comando JavaScript lá na sua tela e aqui no Execute script eu quero executar um comando eu quero executar um comando um script eu quero falar pro celen celen dá um scroll na tela até centralizar esse elemento do botão que é o cara que eu quero clicar dá um scroll na tela até centralizar esse elemento como que eu falo isso o we Sec script ele vai pedir essencialmente um código JavaScript para ele executar então se eu botar aqui por exemplo console. log Lira
doido Toma só cuidado pelo seguinte o comando que você colocando aqui ele tem que est entre aspas então se você tiver aspas dentro dele você tem que usar aspas simples dentro dele se você usar aspas duplas do lado de fora e assim vai tá então você tem que ir adaptando isso de acordo com se você USP duplas oup simples se eu botasse isso daqui a única coisa que acontecer é que no console aqui do meu JavaScript n a invés aqui dos elementos da telinha de console aqui aqui ia aparecer Lira doidão né Lira doida Ou
leira doidão sei lá vou escrever aqui Lira doido aqui ali aqui e aparecer Lira doido mas não é isso que eu quero eu quero que ele dê um scroll aqui na tela em JavaScript Como que você manda ele dar um scroll em algum elemento específico você fala o seguinte esse elemento que eu quero dar o scroll que eu quero colocar ele na tela ponto e roda o comando scroll into View e aqui dentro do parêntese você pode simplesmente botar scroll into View E aí ele vai aparecer na tela ou você pode escolher que você quer
que ele esteja no meio da tela no centro da tela mesmo você passa aqui o parâmetro Block do P Center Ou seja você quer que esse elemento aqui o bloco onde tá esse elemento Esteja dentro da tela no centro da tela é isso aqui que você tá falando aqui pro JavaScript Beleza então esse aqui é o comando JavaScript que eu quero executar só que como que eu falo pro JavaScript isso aqui é um texto que eu tô escrevendo como que eu falo para ele que eu quero executar esse cara no elemento que é um cara
do Python uma variável do Python o elemento que eu quero que apareça na tela é esse elemento aqui é o botão então eu vou pegar esse elemento aqui eu vou separar ele aqui ó o botão eh que eu quero clicar vou chamar botão de quero clicar esse aqui é o botão que eu quero clicar esse aqui é o botão sem o ponto clique no final Esse é o botão que eu quero clicar como que eu falo para ele o JavaScript o elemento que eu quero clicar é esse botão que eu quero clicar aqui você fala
da seguinte forma essa função Execute script ela permite você passar parâmetros pro seu código JavaScript automaticamente como você pega o cara que você quer o elemento que você quer o parâmetro que você quer passar para ele e chama ele de arguments arguments índice zero arguments índice 1 arguments índice do E aqui depois você pode passar para ele quantos argumentos você quiser então por exemplo se eu passar arguments índice zero aqui para ele eu tô falando o primeiro argumento que eu passar ou seja o primeiro item que eu passar aqui como parâmetro vai ser o cara
que você vai substituir aqui então vou passar aqui para ele o botão que eu quero clicar Então esse aqui foi o primeiro elemento que eu passei para ele se eu tivesse passado aqui arguments índice um eu aqui ia ter que passar um botão e depois outro botão o botão que eu quero clicar então por exemplo eu poderia fazer isso aqui isso aqui também ia funcionar Se eu chamasse aqui arguments índice 1 e passasse para ele o botão verde e o botão quero clicar o arguments índice um Lembra as listas no Python começa a contar do
zero então o primeiro argumento que eu passei para ele é o de índice zero não é o que ele tá usando aqui o segundo argumento que eu passei para ele é o botão de índice um então ele vai clicar nesse cara daqui é só para mostrar para vocês como que você consegue Pass passar variáveis pro JavaScript aqui usando só conteúdo em Python você não precisa saber ah mas como que o JavaScript enxerga esse elemento aqui não importa se você já encontrou o elemento pelo cm você pode só passar ele pro JavaScript e executar o comando
JavaScript que você quer para ser mais direto mesmo tá então aqui eu vou como eu não preciso passar o botão verde para essa função eu vou chamar aqui de arguments índice zero e vou passar para ela como argumento como um parâmetro só o botão que eu quero clicar e aí ele automaticamente vai substituir esse elemento aqui beleza no nosso código então pronto isso daqui vai colocar vai dar um na nossa tela e vai colocar esse elemento na tela ainda assim se eu rodar esse código vai dar um erro quer ver eu vou rodar o código
aqui agora isso aqui resolve o erro Tá mas ainda assim vai dar um erro só que é um outro erro Por que que vai dar um assim é mesma mensagem de erro mas por um outro motivo por quê vamos olhar aqui ó ele vai entrar preencheu tentou rodar e deu o mesmo erro tá vendo ele ó mess Element Click intercept Ou seja quando eu rodei isso daqui ele deu Click intercept inclusive Esse comando aqui agora eu não preciso mais fazer o navegador find elements de novo eu posso só botar aqui o botão que eu quero
clicar porque o botão que quero clicar já vai est na tela mas por que que ele ainda deu esse erro porque esse scroll Esse comando JavaScript que você fez aqui ele é um comando que eh ele demora alguns segundos para executar E lembra que eu falei para você o celenio ele é inteligente ele espera os as páginas carregarem Mas as coisas dinâmicas que acontecem dentro do site ele não tem como saber que aquilo ali que você quer que ele espere carregar Então você tem duas formas de fazer ele esperar ativamente por alguma coisa carregar tá
E é exatamente isso daqui que eu quero mostrar para vocês aqui abre um mundo de possibilidades para vocês porque agora vocês já sabem preencher formulário já sabem Navegar dentro de site já sabem ir para uma página já sabem ir paraa outra já sabem percorrer elementos selecionar o que que você quer do elemento Qual informação você quer dele assim vai então já aprendeu isso tudo nessa aula que que falta você aprender assim que eu acho que dá um boa introdução global ao celeno Como que você faz para esperar um elemento que você quer aparecer na tela
aparecer ou seja como que você navega em sites dinâmicos e bom para isso o que a gente faz é que a gente tem duas opções a primeira opção então eu vou botar aqui ó opção um é você simplesmente falar cara eu quero esperar antes de clicar no botão ou seja depois do comando que eu sei que vai demorar alguns segundos antes de clicar no botão eu quero esperar 3 segundos a primeira opção é essa eu mando ele esperar 3 segundos e depois eu clico no botão quer ver ó rodar o código aqui agora e ele
vai esperar 3 segundos e eu sei Lira que 3 segundos é tempo suficiente para que ele código JavaScript rodar ali e ele carregar tudo bonitão então ele vai pegar vai rodar vai esperar 3 segundos e agora ele vai conseguir clicar aqui no botão queera acessar clicou no botão tá vendo ó tá enviando aqui o formulário clicou no botão tá enviando o formulário E aí depois que ele enviar o formulário ele se outra página e ele vai fechar meu navegador pronto funciona funcionou tá vendo não deu nenhuma mensagem de erro aqui agora ele conseguiu funcionou super
certo e deu tudo certo aqui a primeira opção é essa e é uma opção muito útil tá você a gente usa bastante isso para um script como esse daqui sendo bem sincero isso aqui não é um negócio que ele pode demorar mais do que 2 segundos para executar isso aqui é um comando assim que executa logo ele não precisa que a página carregue nada nem nada do tipo mas às vezes ele demora para carregar alguma coisa Às vezes você tá numa janela dinâmica sua internet dá uma travada no meio do caminho e Putz ele demora
para carregar uma informação Então você tem a segunda opção a segunda opção é você fazer uma espera dinâmica ou seja ao invés de você fazer uma espera direta então aqui é uma espera manual direta meio hardcoded mesmo a segunda você fazer uma espera dinâmica para você fazer uma espera dinâmica Você vai precisar importar dois caras do Cum novos tá então a gente vai precisar importar do selenium.webdriver.support.ui porque a interface visual que você tá falando você vai precisar importar o Web driver weight que é o quê para você mandar o seu navegador esperar alguma coisa esse
é o webdriver wiit e o e do celenio p webdriver webdriver p não select não desculpa Selenium P webdriver psort você vai importar o expected conditions tá o expected conditions que normalmente a gente costuma dar o apelido pro expected condition de e só para não ter que escrever expect conditions o tempo todo ou seja eu vou mandar o meu navegador esperar alguma condição que eu estou expectando com a expectativa de que ela aconteça ou seja eu vou mandar el esperar uma condição que eu quero que aconteça E aí eu vou criar então esse uso disso
aqui você usa ele sempre em duas etapas primeiro você cria essa espera esse essa ferramenta de espera Ou seja você cria esse web driver weit e fala Olha eu quero que o meu navegador Espere até 10 segundos por alguma coisa acontecer quantos segundos você quer que ele espere Depois desses 10 segundos ele vai simplesmente tentar continuar rodando o código tá ou você pode botar aqui 30 segundos pode botar o tempo que você quiser aqui eu no meu caso vou botar 10 segundos Ou seja eu vou esperar ele executar ele ou seja o que eu a
condição que eu vou procurar aqui dentro eu vou esperar ela até 10 segundos Então vou mandar navegador sempre que eu usar essa espera essa variável espera daqui espera alguma condição que eu vou te passar por até 10 segundos você pode criar várias esperas esperas de 10 segundos você pode criar uma espera de 20 segundos uma espera de 30 segundos e assim vai tá então essa aqui é a primeira coisa E aí a segunda coisa é que o quê eu quero que esse botão que eu quero clicar aqui Fique visível na minha tela então esse botão
quero clicar então eu vou virar aqui para ele e vou falar o seguinte Olha só o espera faz o seguinte para mim eu quero que você espere até ou seja antes até alguma condição específica for satisfeita Qual é a condição específica que desculpa não tem esse parêntese aqui não alguma condição específica Qual é o expected conditions dentro do expected conditions ele tem uma lista de condições que você pode esperar que eu posso esperar um alerta aparecer na tela eu posso esperar um atributo de um elemento ter alguma informação eu posso esperar um elemento localizado ter
algum est específico eu posso localizar várias coisas aqui tá vendo o que a gente quer é eu não você pode esperar a presença de um elemento ou seja um elemento existir dentro da sua página no nosso caso eu quero que o elemento seja clicável ou seja que o elemento esteja na tela e que eu consiga clicar nele que o elemento seja possível de ser clicado e existe essa condição aqui é a condição elements to be clickable tá vendo Então eu quero esperar a condição de um elemento ser clicável Ou seja eu quero esperar que algum
elemento vai ser clicável qual elemento vai ser clicável você passa aqui dentro do parênteses você passa Olha o elemento que eu quero que seja clicado seja o botão que eu quero clicar esse botão aqui que é o botão que eu quero clicar então ele vai rodar isso daqui e ele vai ficar parado nessa linha de código esperando até encontrar o elemento que pode ser clicado ou até 10 segundos o que acontecia antes Se ele demorar mais de 10 segundos para encontrar o elemento que ele quer ser clicado ele vai passar pra próxima linha de código
se ele encontrar o elemento antes de 10 segundos ele já para e vai pro próximo elemento porque não tem necessidade repar isso é melhor do que o time. slip porque se eu tivesse que botar aqui 10 segundos não tem necessidade do seu site esperar 10 segundos seria ele não precisa esperar 10 segundos Inclusive eu posso botar aqui 1000 segundos ou seja Cara espera aqui por vários minutos até isso aqui acontecer no time Point slip você tem que botar um tempo fixo então isso daqui é uma espera dinâmica e inteligente porque assim que ele encontra assim
que essa condição aqui é satisfeita ele pum passa pro próximo Então é quase como se ele tivesse num Loop Infinito infinito aqui né num loop aqui verificando de tempos em tempos se aquela condição já foi satisfeita E se ela foi satisfeita ele passa pra próxima linha de código que é clicar no nosso elemento e eu tirei aqui o Ah não aqui é o botão quero clicar tem que vir de depois disso né então a espera vem antes A condição vem antes e depois eu clico no botão que eu quero clicar vamos ver se isso aqui
vai funcionar vai funcionar e vai ser mais rápido que o time pon slip quer ver ó rodei o código aqui agora você vai ver que ele vai dar um pouquinho de scroll e já vai clicar porque quando ele der o scroll assim que o elemento for clicável ele pum já clica direto Então olha lá entrei na tela aqui agora que eu entrei na tela ele vai navegar entrou na tela clicou no botão tá vendo entrou rapidão pum clicou no botão foi ele funcionou perfeitamente tranquilo bom galera essas aqui são as principais funções idade que a
gente tem do celenio cara o celenio é um mundo tem muito mais coisa dentro do celenio mas aqui no vídeo do canal é o que dá pra gente mostrar se você quiser fazer um projeto de celenio eu vou deixar o link de um vídeo na descrição fazendo um projeto completo onde você pode aplicar isso tudo dentro desse projeto e também lembra que eu deixei um minicurso na descrição de automação para você integrar a automação que a gente faz no minicurso junto com o celenio e levar ela para um próximo nível Beleza o gabarito também tá
na descrição Então pega lá espero que vocês tenham gostado um grande abraço e até a próxima aula i