Skip to content

Instantly share code, notes, and snippets.

@ocvs
Created June 20, 2020 21:16
Show Gist options
  • Save ocvs/ffb2cee09addb683ecba44a2b54238db to your computer and use it in GitHub Desktop.
Save ocvs/ffb2cee09addb683ecba44a2b54238db to your computer and use it in GitHub Desktop.
Exercicio_07
from selenium.webdriver import Firefox
from time import sleep
from urllib.parse import urlparse, parse_qsl
from selenium.webdriver.support.events import (
AbstractEventListener, EventFiringWebDriver
)
import json
class Escuta(AbstractEventListener):
def __init__(self):
self.id = ''
def after_find(self, by, value, driver):
element = driver.find_element_by_id(value)
tag_name = element.tag_name
if tag_name == 'input':
print(f'\nNo input {value}:')
print(f'Sem click, o texto/valor é: {element.get_attribute("value")}')
self.id = value
elif tag_name == 'label':
print(f'\nNo label {value}:')
print(f'Sem click, o texto é: {element.text}')
self.id = value[1:]
else:
print('Não achou nada')
def before_navigate_to(self, url, driver):
print(url)
def after_navigate_to(self, url, driver):
print('after', url)
def before_click(self, element, driver):
if element.tag_name == 'label':
print(f' Antes do Click na label {self.id}')
print(f' O texto do label {self.id} era: ', driver.find_element_by_id('l' + self.id).text)
print(f' O texto do input {self.id} era: ', driver.find_element_by_id(self.id).get_attribute('value'))
if element.tag_name == 'input':
print(f' Antes do Click no input {self.id}')
print(f' O texto do label {self.id} era: ', driver.find_element_by_id('l' + self.id).text)
print(f' O texto do input {self.id} era: ', driver.find_element_by_id(self.id).get_attribute('value'))
def after_click(self, element, driver):
if element.tag_name == 'label':
print(f' Depois do Click na label {self.id}')
print(f' O texto do label {self.id} passou a ser: ', driver.find_element_by_id('l' + self.id).text)
print(f' O texto do input {self.id} passou a ser: ',
driver.find_element_by_id(self.id).get_attribute('value'))
if element.tag_name == 'input':
print(f' Depois do Click no input {self.id}')
print(f' O texto do label {self.id} passou a ser: ', driver.find_element_by_id('l' + self.id).text)
print(f' O texto do input {self.id} passou para: ',
driver.find_element_by_id(self.id).get_attribute('value'))
def after_change_value_of(self, element, driver):
if element.tag_name == 'input':
print(f' Depois de sendkeys no input {self.id}')
print(f' O texto do label {self.id} passou a ser: ', driver.find_element_by_id('l' + self.id).text)
print(f' O texto do input {self.id} passou para: ',
driver.find_element_by_id(self.id).get_attribute('value'))
browser = Firefox()
browser.set_window_rect(0, 0, 840, 1050)
url = 'https://selenium.dunossauro.live/exercicio_07.html'
newBrowser = EventFiringWebDriver(browser, Escuta())
newBrowser.get(url)
sleep(3)
campos = {'nome': 'Octavio', 'email': 'oc@oc.com', 'senha': 'xpto'}
for k, v in campos.items():
lable_do_campo = newBrowser.find_element_by_id('l' + k)
lable_do_campo.click()
for k, v in campos.items():
campo_input = newBrowser.find_element_by_id(k)
campo_input.click()
campo_input.send_keys(v)
botao = browser.find_element_by_id('btn').click()
sleep(4)
print(f'\nDepois do submit do form')
for k, v in campos.items():
lable_do_campo = newBrowser.find_element_by_id('l' + k)
campo_input = newBrowser.find_element_by_id(k)
query_string = dict(parse_qsl(urlparse(browser.current_url).query))
resultado = json.loads(browser.find_element_by_tag_name('textarea').text.replace("'", "\""))
if resultado == campos:
print(f'\nO resultado do submit {resultado} corresponde aos nomes inseridos {campos}')
else:
print('Ocorreu erro ')
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment