Selênio automatizando navegadores da web

Selênio automatizando navegadores da web

O selênio é usado para automatizar tarefas chatas; Ele automatiza os navegadores. Desde a navegação na Web até o login automaticamente em contas até a criação de bots para várias tarefas, pode ser alcançado usando o Selenium.

Primeiro de tudo, vamos instalar as dependências:

PIP Instale o selênio
PIP Install WebDriver-manager

Navegando pela web

Nós importamos as dependências:

do selênio importar webdriver
de webdriver_manager.Chrome Import ChromedriverManager
Em seguida, inicializamos o webdriver:
driver = webdriver.Chrome (ChromedriverManager ().instalar())

Em primeira instância, vamos tentar navegar em uma página da web usando o Método Get (). O Método Get () abrirá a página da web ou o URL que foi inserido; Observe que o link completo deve ser fornecido para que isso funcione.

motorista.Get ("https: // DuckDuckgo.com/")

Suponha que você quisesse maximizar a janela usando o maximize_window () método e não tem python executado pelo restante do código; Você então usaria o implícita_wait () método para pausar.

motorista.maximize_window ()
motorista.implícita_wait (4)

Se você quiser informações no site, pode usar o método do título para obter o nome ou o título do site, o método curt_url para obter o URL e o Page_source para obter o código HTML da página.

Imprimir (driver.título)
Imprimir (driver.current_url)
Imprimir (driver.fonte da página)

Para inserir um texto na barra de pesquisa, devemos primeiro tentar identificar a barra de pesquisa usando o “inspecionar”Button (clique com o botão direito do mouse -> inspecionar).

Para Duckduckgo.com, há um ID disponível, mas você também pode obter outros atributos. O próximo método que usamos é o método find_element_by_id (). O objetivo deste método é selecionar o elemento de preocupação.

Search_bar = Driver.find_element_by_id ("Search_form_input_homePage")

No entanto, você pode substituir isso por qualquer um dos outros atributos. Por exemplo, se você tiver o nome disponível, use o find_elements_by_name () método. Não tivemos que usar o ID; Poderíamos ter usado outra coisa se quiséssemos. Por exemplo, poderíamos ter usado o nome da seguinte maneira:

Search_bar = Driver.find_element_by_name ("q")

Como localizamos a barra de pesquisa, agora podemos inserir um pedaço de texto usando o send_keys () método.

Barra de pesquisa.send_keys ("Seleniumhq")

Teoricamente, o que faríamos é clicar no botão Next. Então, o que fazemos? Sim, você adivinhou! Metamos os elementos e encontramos o ID ou outro atributo do próximo botão. Em seguida, usamos o método click () para clicar no botão que selecionamos usando um atributo (como id).

botão = driver.find_element_by_id ("Search_button_homepage")
botão.clique()

Neste ponto, você recebe uma lista de sites; É como digitar o seleniumhq na barra de pesquisa do DuckDuckgo.com site e pressionando o próximo botão. Agora, vamos tentar clicar na primeira página que obtemos. Aqui, vou usar o XPath, mas você pode usar qualquer um dos atributos. Observe que, ao usar o XPath, as aspas internas são solteiras e externas são duplas (“//*[@id = 'r1-0']/div/h2/a [1]”).

página = driver.find_element_by_xpath ("//*[@id = 'r1-0']/div/h2/a [1]")
página.clique()

Faça login em uma conta de e -mail

Agora, vamos supor que queremos fazer login em uma conta de e -mail. Como sempre, começamos a importar os módulos necessários e inicializá -los como fizemos para navegar em uma página da web. Aqui, vamos importar tempo também.

do selênio importar webdriver
de webdriver_manager.Chrome Import ChromedriverManager
tempo de importação
driver = webdriver.Chrome (ChromedriverManager ().instalar())
motorista.Get ("https: // www.Gmail.com/")
motorista.maximize_window ()
motorista.implícita_wait (4)
usuário = driver.find_element_by_xpath ("//*[@id = 'identifierid']")
do utilizador.send_keys ("[email protected] ")
próximo = driver.find_element_by_xpath ("//*[@id = 'identifierNext']/div/button/div [2]")
próximo.clique()

Em seguida, vamos usar o tempo.dormir() Método para evitar erros de sincronização (às vezes, leva mais tempo para carregar uma página e, enquanto carrega, o restante do script é executado e um erro relatado). Na tentativa de evitar erros de sincronização, daremos tempo para carregar tudo.

tempo.sono (3)
senha = driver.find_element_by_xpath ("//*[@id = 'senha']/div [1]/div/div [1]/input")
senha.send_keys ("senha1.")
Next2 = Driver.find_element_by_xpath ("//*[@id = 'senhanext']/div/button/div [2]")
Next2.clique()

Enviando e -mails usando selênio

Para enviar e -mails, precisamos de duas partes: como fazer login no Gmail a partir da seção anterior e como enviar e -mails desta seção. Enviar um e -mail é tão fácil quanto navegar na web ou até mesmo fazer login no Gmail. Mais uma vez, escolhemos o método find_element_by_xpath () ou um que seja semelhante a find_element_by_id () ou outro para encontrar cada componente da mensagem a ser enviado - o botão de composição, a barra de entrada de destino, a barra de entrada do sujeito, o corpo , e o botão Enviar. Devemos localizá -los, preencher -os com texto quando necessário e clicar nos botões. Simples o suficiente. Então, vamos tentar:

Primeiro, vamos encontrar o botão de composição usando o XPath e depois clique nele:

tempo.sono (1)
composição_button = driver.find_element_by_xpath ("//*[@id = ': 2p']/div/div")
composição_button.clique()

Em seguida, vamos adicionar um endereço de destino na barra de entrada do endereço de destino:

tempo.sono (2)
to_input_bar = driver.find_element_by_id (': 8c')
to_input_bar.send_keys ("[email protected] ")

Agora adicionamos um assunto, um corpo e clique no botão Enviar:

sujeito = driver.find_element_by_id (': 7u')
assunto.send_keys ("email de teste")
corpo = driver.find_element_by_xpath ("//*[@id = ': 8z']")
corpo.send_keys ("Esta é uma mensagem automatizada enviada usando o Selenium.")
send_button = driver.find_element_by_xpath ("//*[@id = ': 7k']")
send_button.clique()

Ok, então, fazer um programa simples para fazer login e enviar e -mails agora é muito fácil? Não precisamos parar por aí; Podemos criar todos os tipos de bots.

Ações do mouse

A próxima coisa a aprender é lidar com as ações do mouse - de pairar a arquivos de arrastar e soltar.

Devemos primeiro especificar as guias; Nesse caso, especificarei três guias - a guia Home, a guia Eletrônica e a guia do telefone celular (o telefone celular é aninhado dentro de eletrônicos). Ok, então para este exemplo, eu escolhi o eBay.ca. No Ebay.CA, existem muitas guias - uma para casa e outra para eletrônica. Normalmente começamos na guia Home. Aqui, digamos que eu gostaria de navegar na guia Eletrônica e depois a guia do telefone celular e dos acessórios nela e clique nela. Poderíamos usar ações do mouse para realizar o seguinte.

Começamos importando o eBay necessário e abrindo.ca.

Do selênio importar webdriver
de selênio.WebDriver Import ActionChains
de webdriver_manager.Chrome Import ChromedriverManager
tempo de importação
driver = webdriver.Chrome (ChromedriverManager ().instalar())
motorista.Get ("https: // www.eBay.ca/")

Em seguida, precisamos adicionar os elementos com os quais estamos preocupados. Nesse caso, eu tenho as três caixas vermelhas na foto anterior.

Home = Driver.find_element_by_xpath ("//*[@id = 'mainContent']/div [1]/ul/li [1]/span")
Electronics = Driver.find_element_by_xpath ("//*[@id = 'mainContent']/div [1]/ul/li [5]/a")
Cell_Phone = Driver.find_element_by_xpath ("//*[@id = 'mainContent']/div [1]/ul/li [5]/div [2]/div [1]/Nav [1]/ul/li [1]/a ")

Nós então inicializamos o ActionChains e use o move_to_element () Método para passar de casa para eletrônicos e telefones celulares. Uma vez na guia Celular e acessórios, clicamos nela. Para que tudo isso funcione, devemos adicionar o método perform () no final, ou nada acontecerá.

Ações = ActionChains (driver)
next_step = ações.move_to_element (casa).move_to_element (eletrônica)
Próxima Etapa.move_to_element (Cell_phone).clique()
Próxima Etapa.executar()

No entanto, você pode executar várias ações com o mouse - de clicar com o botão direito do mouse a arrastar e cair. Vamos dar um exemplo em que você pode clicar com o botão direito do mouse. Para clicar com o botão direito do mouse, você precisa do método context_Click (); Passe nele aquilo que você deseja clicar. Nesse caso, desejamos primeiro clicar com o botão direito do mouse no botão, então dizemos o driver.Context_Click (Button) - Clique com o botão direito do mouse no botão. Então, quando o clique com o botão direito do mouse nos mostra um menu de seleção com opções, solicitamos que ele clique em uma das opções exibidas - clique (cópia), que clicará na guia Copiar.

do selênio importar webdriver
de selênio.WebDriver Import ActionChains
de webdriver_manager.Chrome Import ChromedriverManager
driver = webdriver.Chrome (ChromedriverManager ().instalar())
motorista.Get ("https: // swisnl.Github.io/jQuery-ContextMenu/Demo/Menu.html ")
botão = driver.find_element_by_xpath ("/html/corpo/div/seção/div/div/div/p/span [1]")
cópia = driver.FIND_ELEMENT_BY_XPATH ("/html/body/ul [1]/li [3]")
Ações = ActionChains (driver)
ações.context_click (botão).Clique em (cópia)
ações.executar()

Você pode fazer muitas coisas com selênio, mas também vamos dar uma olhada no arrasto e soltar. Existem duas maneiras de arrastar e soltar um item para o destino de destino. Um está usando o método drag_and_drop (), e o outro está usando uma técnica mais complicada:

do selênio importar webdriver
de selênio.WebDriver Import ActionChains
de webdriver_manager.Chrome Import ChromedriverManager
tempo de importação
driver = webdriver.Chrome (ChromedriverManager ().instalar())
motorista.Get ("http: // www.dhtmlgoodies.com/scripts/drag-drop-nodes/drag-drop-nodes-deMo3.html ")
motorista.implícita_wait (1)
motorista.maximize_window ()
# Selecione a imagem de origem na página para arrastar
fonte = driver.find_element_by_id ("node2")
# Selecione o alvo onde você deseja que ele caiu
Target = Driver.find_element_by_xpath ("//*[@id = 'box1']")
tempo.sono (5)
# Inicialize os ActionChains
action_chains = ActionChains (driver)
# Mova a fonte para o alvo
ação = ação_chains.click_and_hold (origem) \
.move_to_element (Target) \
.Release (Target) \
.Clique em (Target) \
.executar()

O selênio é uma ferramenta muito poderosa para fazer muitas coisas. Neste tutorial, cobrimos algumas das coisas que o selênio pode fazer; No entanto, depois de se familiarizar com isso, você pode criar todos os tipos de bots para automatizar o navegador.

Codificação feliz!