Galeria de mapas mentais Mapa mental de selênio
Este é um mapa mental sobre o Selenium. Selenium é uma ferramenta para testes de aplicativos da web. Este mapa mental inclui o primeiro script de automação, estrutura de teste unittest, etc. Espero que isto ajude!
Editado em 2023-11-03 10:47:21Il s'agit d'une carte mentale sur les anévrismes intracrâniens, avec le contenu principal, notamment: le congé, l'évaluation d'admission, les mesures infirmières, les mesures de traitement, les examens auxiliaires, les manifestations cliniques et les définitions.
Il s'agit d'une carte mentale sur l'entretien de comptabilité des coûts, le principal contenu comprend: 5. Liste des questions d'entrevue recommandées, 4. Compétences de base pour améliorer le taux de réussite, 3. Questions professionnelles, 2. Questions et réponses de simulation de scénarios, 1. Questions et réponses de capacité professionnelle.
Il s'agit d'une carte mentale sur les méthodes de recherche de la littérature, et son contenu principal comprend: 5. Méthode complète, 4. Méthode de traçabilité, 3. Méthode de vérification des points, 2. Méthode de recherche inversée, 1. Méthode de recherche durable.
Il s'agit d'une carte mentale sur les anévrismes intracrâniens, avec le contenu principal, notamment: le congé, l'évaluation d'admission, les mesures infirmières, les mesures de traitement, les examens auxiliaires, les manifestations cliniques et les définitions.
Il s'agit d'une carte mentale sur l'entretien de comptabilité des coûts, le principal contenu comprend: 5. Liste des questions d'entrevue recommandées, 4. Compétences de base pour améliorer le taux de réussite, 3. Questions professionnelles, 2. Questions et réponses de simulation de scénarios, 1. Questions et réponses de capacité professionnelle.
Il s'agit d'une carte mentale sur les méthodes de recherche de la littérature, et son contenu principal comprend: 5. Méthode complète, 4. Méthode de traçabilité, 3. Méthode de vérification des points, 2. Méthode de recherche inversée, 1. Méthode de recherche durable.
Selênio
1. Primeiro script de automação
do webdriver de importação de selênio do tempo importar sono navegador = webdriver.Chrome() navegador.get('http://127.0.0.1/upload/forum.php') dormir (5) navegador.quit()
#espera implícita navegador.implicitamente_wait(5)
2. API WebDriver
posição
elemento posicionado
1. posicionamento de identificação
HTML estipula que o atributo id deve ser exclusivo em um documento HTML
navegador.find_element_by_id('ls_password').send_keys('123456')
2. posicionamento de nome
navegador.find_element_by_name('nome de usuário').send_keys('admin')
3. posicionamento de classe
navegador.find_element_by_class_name('pn').click( )
4. posicionamento do nome da tag
navegador.find_element_by_tag_name('input').send_keys('123456')
5. posicionamento de link
Usado especificamente para localizar links de texto
browser.find_element_by_link_text('Seção padrão').click( )
6. posicionamento parcial do link
O posicionamento parcial do link é um complemento ao elemento do link. Às vezes, o link de texto é relativamente longo.
navegador.find_element_by_partial_link_text('default').click( )
7. posicionamento xpath
//Indica o caminho relativo
[@id=‘ls_username’] significa que o id do elemento é igual a ‘ls_username’
navegador.find_element_by_xpath('//input[@name="senha"]').send_keys('123456')
navegador.find_element_by_xpath('//button[@class="pn vm"]').click( )
Atributos combinados com posicionamento hierárquico
text Obtém o texto do elemento <start tag>texto (texto)</end tag>
a = navegador.find_element_by_xpath('//button[@class="pn vm"]/em').text print(a)
navegador.find_element_by_xpath("//div/a[@class='xi2 xw1']").click( )
Posicionamento difuso
função texto()
browser.find_element_by_xpath('//a[text()="Sair"]').click( )
função contém()
browser.find_element_by_xpath('//a[contains(@href,"logout")]').click()
função começa com()
navegador.find_element_by_xpath('//a[inicia-com(@href,"member.php?mod=l")]').click( )
8. Posicionamento do seletor CSS
Use # para identificação
navegador.find_element_by_css_selector('#ls_password').send_keys('123456')
navegador.find_element_by_css_selector('#ls_username').send_keys('admin')
Use "." para aula
navegador.find_element_by_css_selector('.pn.vm').click( )
9. XPath x CSS
Posicione um grupo de elementos
Localize um conjunto de elementos e retorne uma lista
ao controle
Controlar navegador
1. Controlar o tamanho da janela do navegador
set_window_size()
driver.set_window_size(480.800)
navegador.set_window_size(480.600)
2. maximizar o navegador
maximizar_janela()
driver.maximize_window()
navegador.maximize_window()
3. Controle o progresso do navegador
voltar( )
driver.back()
navegador.back()
prefácio ( )
motorista.forward()
navegador.forward()
4. Simular atualização do navegador
atualizar ( )
driver.refresh()
navegador.refresh()
Operações de elementos simples
do webdriver de importação de selênio do tempo importar sono navegador = webdriver.Chrome() navegador.get('http://127.0.0.1/upload/forum.php') dormir (2) #Localize a caixa de entrada do nome de usuário nome de usuário=navegador.find_element_by_id('ls_username') nome de usuário.send_keys('admin') dormir (1) #Texto claro nome de usuário.clear() #Obtenha outros atributos print('nome',nomedeusuário.get_attribute('nome')) print('class',nomedeusuário.get_attribute('class')) print('tabindex',nomedeusuário.get_attribute('tabindex')) #is_displayed() Retorna se o resultado do elemento está visível. Se estiver visível, retorna True, caso contrário retorna False. #Registre-se agora ao lado de Login True print(browser.find_element_by_xpath("//td/a[@class='xi2 xw1']").is_displayed( )) #Registre-se agora em navegação rápida, Falso print(browser.find_element_by_xpath("//div/a[@class='xi2 xw1']").is_displayed( )) dormir (5) navegador.quit()
Operações de lista suspensa
de selenium.webdriver.support.select importar Selecione #As operações da lista suspensa são encapsuladas na classe Select #Gere um objeto Select, o parâmetro é a lista suspensa a ser selecionada #Importação automática, coloque o cursor na classe Selecionar e pressione Alt Enter, selecione a classe Selecionar para importar s = Selecione(browser.find_element_by_id('educação'))
método de chamada
Selecione com base no índice
s.select_by_index(2) #Selecionar Médico
Selecione com base no valor, o valor do atributo value em HTML
s.select_by_value("2") #Selecionar universidade
Selecione com base no texto visível, itens de lista visíveis
s.select_by_visible_text("Médico")
Operação do mouse
Os métodos para operações de mouse no WebDriver são encapsulados na classe ActionChains
executar a ação
executar( )
clique com o botão direito
contexto_clique()
Duplo click
Duplo click( )
flutuar
move_to_element()
arrastar
arrastar e soltar (fonte, destino)
Operação do teclado
WebDriver usa a classe Keys() para operar todas as teclas do teclado O método send_keys() pode ser usado para simular teclas de entrada no teclado.
Chave de exclusão (BackSpace)
send_keys(Chaves.BACK_SPACE)
Barra de espaço (Espaço)
send_keys(Chaves.SPACE)
Tecla Enter
send_keys(Chaves.ENTER)
Tecla de tabulação
send_keys(Chaves.TAB)
Selecionar tudo (Ctrl A)
send_keys(Chaves.CONTROL,'a')
Copiar (Ctrl C)
send_keys(Chaves.CONTROL,'c')
Colar (Ctrl V)
send_keys(Chaves.CONTROL,'v')
Troca de quadros
Em aplicativos da web, frequentemente encontramos aplicativos com páginas aninhadas de frame/iframe.
WebDriver fornece o método switch_to.frame para mudar o assunto atualmente posicionado para a página incorporada de frame/iframe.
O método switch_to.default_content() salta do quadro atual
Troca de janela
WebDriver fornece o método switch_to.window() para alternar entre diferentes janelas.
current_window_handle: obtém o identificador da janela atual
window_handles: Retorna os identificadores de todas as janelas que existem na lista
Operação de caixa pop-up
Mudar para pop-up
switch_to.alert
Botão de confirmação
aceitar()
Botão cancelar
liberar()
Executar JS
WebDriver não fornece um método de operação da barra de rolagem do navegador. Nesse caso, você pode usar JavaScript para controlar a barra de rolagem.
WebDriver fornece o método execute_script() para executar código JS
window.scrollTo(x,y) é usado em JavaScript para definir as posições horizontal e vertical da barra de rolagem do navegador. O primeiro parâmetro representa o espaçamento horizontal à esquerda e o primeiro parâmetro representa a margem superior vertical.
3. estrutura de teste unittest
efeito
Organização e gerenciamento de casos de uso de automação
Execução automatizada de casos de uso
Estatísticas de resultados de teste e geração de relatórios de teste
Unittest é uma estrutura de teste unitário para Python. Não é adequado apenas para testes unitários, mas também para o desenvolvimento e execução de casos de teste automatizados WEB.
Unittest pode organizar e executar casos de teste e fornecer uma variedade de métodos de asserção para determinar se o caso de teste foi aprovado e, finalmente, gerar resultados de teste.
Caso de teste
Uma instância de TestCase é um caso de teste. Isso inclui configurar o ambiente de preparação antes do teste (setUp), executar o código de teste (run) e restaurar o ambiente após o teste (tearDown). Um caso de teste é uma unidade de teste completa. Ao executar esta unidade de teste, um determinado problema pode ser verificado.
Suíte de teste
Vários casos de teste são reunidos para formar TestSuite
TestRunner
Usado para executar casos de teste, executar conjunto de testes/caso de teste através do método run() fornecido pela classe TestRunner
TestLoader
Carregar casos de teste
4. prática
Inscreva-se agora
do webdriver de importação de selênio do tempo importar sono importar aleatoriamente hora de importação navegador = webdriver.Chrome() navegador.get('http://127.0.0.1/upload/forum.php') # eu = aleatório.randint(1,1000000000) eu = tempo.tempo() nome de usuário = 'teste' str(int(i)) imprimir(nome de usuário) #LocationRegistre-se agora browser.find_element_by_link_text('Registre-se agora').click( ) #Entre com seu nome de usuário navegador.find_element_by_id('Zp0luO').send_keys(nome de usuário) #digite a senha navegador.find_element_by_id('g033gz').send_keys('123456') #Confirme sua senha navegador.find_element_by_id('w9kNs1').send_keys('123456') #e-mail navegador.find_element_by_id('7uxU99').send_keys(nome de usuário '@qq.com') dormir (5) #Clique para enviar navegador.find_element_by_id('registerformsubmit').click( ) dormir (5) navegador.quit()
test_login.py
importar teste unitário do webdriver de importação de selênio do tempo importar sono classe LoginTestCase(unittest.TestCase): #Equivalente às condições predefinidas, executadas antes do caso de uso def configuração(self): #self atributo variável global self.browser = webdriver.Chrome() self.browser.maximize_window() self.browser.implicitly_wait(5) self.browser.get('http://127.0.0.1/upload/forum.php') #Equivalente para executar, use admin para fazer login, equivalente a 1 caso de teste def test_login_admin(self): #Atribuição simplificada navegador = self.browser navegador.find_element_by_id('ls_username').send_keys('admin') navegador.find_element_by_id('ls_password').send_keys('123456') navegador.find_element_by_css_selector('button.pn.vm').click() dormir (3) #Obter nome de usuário nome de usuário = navegador.find_element_by_css_selector('a[title="Visite meu espaço"]').text self.assertEqual('admin', nome de usuário) #Faça login usando test1, o segundo caso de teste def test_login_test1(self): # Simplifique a atribuição navegador = self.browser navegador.find_element_by_id('ls_username').send_keys('test1') navegador.find_element_by_id('ls_password').send_keys('123456') navegador.find_element_by_css_selector('button.pn.vm').click() dormir (3) #Obter nome de usuário nome de usuário = navegador.find_element_by_css_selector('a[title="Visite meu espaço"]').text self.assertEqual('test1', nome de usuário) #Ações de limpeza após a execução do caso de uso def tearDown(self): dormir (3) self.browser.quit() se __nome__ == '__principal__': unittest.main()
test_post.py
importar teste unitário do webdriver de importação de selênio do tempo importar sono, tempo de selenium.webdriver importar ActionChains classe PostTestCase (unittest.TestCase): def configuração(self): self.browser = webdriver.Chrome() self.browser.maximize_window() self.browser.implicitly_wait(5) self.browser.get('http://127.0.0.1/upload/forum.php') #Os casos de teste devem começar com teste #Postar rapidamente def test_post1(self): #Conecte-se navegador = self.browser navegador.find_element_by_id('ls_username').send_keys('admin') navegador.find_element_by_id('ls_password').send_keys('123456') navegador.find_element_by_css_selector('button.pn.vm').click() #pausa dormir (1) # Clique na seção padrão browser.find_element_by_link_text('Seção padrão').click() #Insira o título título = 'teste' str(int(tempo())) navegador.find_element_by_id('assunto').send_keys(título) # Conteúdo de entrada navegador.find_element_by_id('fastpostmessage').send_keys(título) # Clique para publicar navegador.find_element_by_id('fastpostsubmit').click() #Obter título da postagem assunto = navegador.find_element_by_id('thread_subject').texto self.assertEqual(assunto,título) #Post depois de clicar no botão postar def test_post2(self): # Conecte-se navegador = self.browser navegador.find_element_by_id('ls_username').send_keys('admin') navegador.find_element_by_id('ls_password').send_keys('123456') navegador.find_element_by_css_selector('button.pn.vm').click() # pausa dormir (1) # Clique na seção padrão browser.find_element_by_link_text('Seção padrão').click() #Mova o mouse até o botão de postagem post_button = navegador.find_element_by_id('newspecial') post_link = navegador.find_element_by_css_selector('ul#newspecial_menu>li>a') ActionChains(navegador).move_to_element(post_button).click(post_link).perform() #Insira o título título = 'teste' str(int(tempo())) navegador.find_element_by_id('assunto').send_keys(título) # Trocar quadro navegador.switch_to.frame('e_iframe') # Conteúdo de entrada navegador.find_element_by_tag_name('corpo').send_keys(título) #Saia da caixa navegador.switch_to.default_content() # Clique para postar navegador.find_element_by_id('postsubmit').click() #Obter título # Obtenha o título da postagem assunto = navegador.find_element_by_id('thread_subject').texto self.assertEqual(assunto, título) def tearDown(self): self.browser.quit()