Created
June 20, 2020 21:16
-
-
Save ocvs/ffb2cee09addb683ecba44a2b54238db to your computer and use it in GitHub Desktop.
Exercicio_07
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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