def driver(request): # wd = webdriver.Chrome() wd = EventFiringWebDriver(webdriver.Chrome(), MyListener()) # wd.implicitly_wait(10) request.addfinalizer(wd.quit) return wd
def test_using_kwargs(driver, pages): ef_driver = EventFiringWebDriver(driver, AbstractEventListener()) ef_driver.get(pages.url("javascriptPage.html")) ef_driver.get_cookie(name="cookie_name") element = ef_driver.find_element_by_id("plainButton") element.get_attribute(name="id")
from page.google.news import NewsGooglePage from selenium.webdriver.support.events import EventFiringWebDriver from webdriverwrapper.driver import WebDriver from _corpus.retrieval.webdriverwrapper.listener import WebDriverEventListener sys.path.append('.') desired_capabilities = {'browserName': 'chrome'} command_executor = "http://127.0.0.1:4444/wd/hub" news_us = "https://news.google.com/?ned=us" # ned=us for us edition news_pe = "https://news.google.com/?ned=es_pe" remote_webdriver = WebDriver(desired_capabilities=desired_capabilities, command_executor=command_executor) driver = EventFiringWebDriver(remote_webdriver, WebDriverEventListener()) google = NewsGooglePage(driver) update = False words = [ "chambear", "bamba", "jama", "chancar", "chela", "papayita", "jatear", "jato", "tombo", "tranca", "huasca", "choborra", "cacharro", "chongo", "chupodromo", "fercho", "huachimán", "latear", "lompa", "mitra", "jeta", "moquear", "ni michi", "ñanga", "ñoba", "telo", "panudo" ] for word in words: file = "pkz/" + word + ".pkz" if not os.path.exists(file) or update: google.open(news_pe) links = google.get_results_links(word, 1, 2, True) print("links:", len(links), "word:", "'" + word + "'")
# Протоколирование действий Selenium from selenium.webdriver.support.events import EventFiringWebDriver, AbstractEventListener class MyListener(AbstractEventListener): def before_find(self, by, value, driver): print(by, value) def after_find(self, by, value, driver): print(by, value, "found") def on_exception(self, exception, driver): print(exception) wd = EventFiringWebDriver(webdriver.Chrome(), MyListener()) # Снятие скриншотов driver.get_screenshot_as_file('screen.png') # Доступ к логам браузера for l in driver.get_log("browser"): print(l) # Перехват трафика driver = webdriver.Chrome(desired_capabilities={ "proxy": { "proxyType": "MANUAL", "httpProxy": "localhost:8888" } })
def driver(request): logger = logging.getLogger('BrowserLogger') browser = request.config.getoption("--browser") version = request.config.getoption("--bversion") executor = request.config.getoption("--executor") vnc = request.config.getoption("--vnc") logs = request.config.getoption("--logs") videos = request.config.getoption("--videos") executor_url = f"http://{executor}:4444/wd/hub" mobile = request.config.getoption("--mobile") is_remote = request.config.getoption("--is_remote") caps = { "browserName": browser, "browserVersion": version, "screenResolution": "1280x720", "name": "Tester", "selenoid:options": { "enableVNC": vnc, "enableVideo": videos, "enableLog": logs, }, 'acceptSslCerts': True, 'acceptInsecureCerts': True, 'timeZone': 'Europe/Moscow', 'goog:chromeOptions': { 'args': [] } } mobile_emulation = {"deviceName": "iPhone 5/SE"} if is_remote: if browser == "chrome" and mobile: caps["goog:chromeOptions"]["mobileEmulation"] = mobile_emulation driver = wd.Remote( command_executor=executor_url, desired_capabilities=caps ) else: if browser == "firefox": firefox_options = FirefoxOptions() firefox_options.headless = True driver = wd.Firefox(options=firefox_options) elif browser == "opera": opera_options = OperaOptions() opera_options.add_argument("headless") driver = wd.Opera(options=opera_options) elif browser == "chrome": chrome_options = ChromeOptions() # chrome_options.add_argument("headless") if mobile: chrome_options.add_experimental_option("mobileEmulation", mobile_emulation) driver = wd.Chrome(options=chrome_options) else: raise ValueError(f"{browser} browser not supported") if not mobile: driver.maximize_window() logger.info(f"Browser {browser} started.") driver = EventFiringWebDriver(driver, MyListener()) # Attach browser data allure.attach( name=driver.session_id, body=json.dumps(driver.desired_capabilities), attachment_type=allure.attachment_type.JSON) # Add environment info to allure-report with open("allure-report/environment.xml", "w+") as file: file.write(f"""<environment> <parameter> <key>Browser</key> <value>{browser}</value> </parameter> <parameter> <key>Browser.Version</key> <value>{version}</value> </parameter> <parameter> <key>Executor</key> <value>{executor}</value> </parameter> </environment> """) def teardown(): driver.quit() logger.info(f"Browser {browser} closed") request.addfinalizer(teardown) return driver
components = driver.find_elements_by_tag_name('label') print_components(components) def after_navigate_to(self, url, driver): print(url) def before_click(self, element, driver): print(f'Elemento selecionado {element.tag_name}') def before_quit(self, driver): sleep(3) browser = Firefox() browser.implicitly_wait(30) wrapper_browser = EventFiringWebDriver(browser, Escuta()) url = { 1: 'http://selenium.dunossauro.live/exercicio_07.html', 2: 'http://selenium.dunossauro.live/exercicio_03.html' } """ Exercicio 7: pegar as mudanças nas label atraves dos eventos """ wrapper_browser.get(f'{url[1]}') nome = wrapper_browser.find_element_by_id('nome') email = wrapper_browser.find_element_by_id('email') senha = wrapper_browser.find_element_by_id('senha') btn = wrapper_browser.find_element_by_id('btn')
from selenium import webdriver from selenium.webdriver.support.events import EventFiringWebDriver, AbstractEventListener class MyTestListenner(AbstractEventListener): def before_navigate_to(self, url, driver): print("前面一个执行地址 %s" % url) def after_navigate_to(self, url, driver): print("后面一个执行地址是 %s" % url) def on_exception(self,exception, driver): driver = webdriver.Firefox() el_driver = EventFiringWebDriver(driver, MyTestListenner()) el_driver.get('http://www.baidu.com') element = driver.find_element_by_id('kw') element.send_keys('1233455') sorcheElement = driver.find_element_by_id('su') sorcheElement.click() el_driver.back()
print("after_navigate_forward") def before_navigate_forward(self, driver): print("before_navigate_forward") def after_navigate_back(self, driver): print("after_navigate_back") def before_navigate_back(self, driver): print("before_navigate_back") def before_change_value_of(self, element, driver): print("before_change_value_of") d = EventFiringWebDriver(b, EventListeners()) d.get('https://www.cnn.com') d.implicitly_wait(20) d.get('https://www.google.de') d.implicitly_wait(20) d.back() def on_click(x, y, button, pressed): if pressed: print('Mouse clicked') time.sleep(2) print("Navigation to: %s " % b.current_url)
def driver(request): wd = EventFiringWebDriver(webdriver.Chrome(), MyListener()) request.addfinalizer(wd.quit) return wd
def before_click(self, elemento, webdriver): if elemento.tag_name == 'input': print(webdriver.find_element_by_tag_name('span').text) print(f'Antes do click {elemento.tag_name}') def after_click(self, elemento, webdriver): if elemento.tag_name == 'input': print(webdriver.find_element_by_tag_name('span').text) print(webdriver.find_element_by_tag_name('span').text) print(f'depois do click {elemento.tag_name}') browser = Firefox(executable_path="./geckodriver") # Wrapper do WebDriver rapidez = EventFiringWebDriver(browser, Escuta()) rapidez.get('https://selenium.dunossauro.live/aula_07_d.html') input_texto = rapidez.find_element_by_tag_name('input') span = rapidez.find_element_by_tag_name('span') p = rapidez.find_element_by_tag_name('p') input_texto.click() rapidez.get('https://selenium.dunossauro.live/aula_07_c.html') rapidez.back()
def driver(request): driver = EventFiringWebDriver(webdriver.Chrome(), MyListener()) yield driver request.addfinalizer(driver.quit)
'password': '******' } nav = Firefox() nav.get('https://selenium.dunossauro.live/exercicio_07') class Escuta(AbstractEventListener): def before_click(self, elem, browser): print(elem.find_element_by_tag_name('label').text) def after_click(self, elem, browser): print(elem.find_element_by_tag_name('label').text) listen_nav = EventFiringWebDriver(nav, Escuta()) time.sleep(3) fields = listen_nav.find_elements_by_css_selector('.form-group') for ele in fields: field = ele.find_element_by_tag_name('input').wrapped_element intype = field.get_attribute('type') if intype == 'submit': field.click() else: ele.click() field.send_keys(dict_types[intype])
def driver(request): wd = EventFiringWebDriver(webdriver.Chrome(), MyListener()) wd.implicitly_wait(DEFAULT_TIMEOUT) request.addfinalizer(wd.quit) return wd
def setUp(self): # self.driver = webdriver.Chrome() self.driver = EventFiringWebDriver(webdriver.Chrome(desired_capabilities={"chromeOptions": {"args": ['--start-fullscreen']}}),MyListener()) self.driver.get("http://localhost/litecart/admin") self.wait = WebDriverWait(self.driver,10)
def setUp(self): self.driver = webdriver.Firefox() # Set Firefox browser self.driver3 = EventFiringWebDriver(self.driver, ScreenshotListener()) self.driver.maximize_window() # Maximize window time.sleep(0.30) # Wait 30 seconds
from walmart_bot import WalmartBot # chromedriver that avoids triggering bot detection: import undetected_chromedriver as uc # Since undetected_chromedriver requires Chromium 87: from selenium.webdriver.chrome.options import Options from selenium.webdriver.support.events import EventFiringWebDriver # Contains login credentials, credit card info, and such: import personal_info # Listener class from event_listeners import BotListener options = Options() # I have the latest build of Chromium in my selenium bot's directory: options.binary_location = "./chrome-linux/chrome" # Get the latest chromium build for Linux here: # https://chromium.woolyss.com/#linux if __name__ == "__main__": # Create instance of webdriver bot_driver = uc.Chrome(chrome_options=options) bot_driver.implicitly_wait(10) event_driver = EventFiringWebDriver(bot_driver, BotListener()) # Create instance of bot bot = WalmartBot(event_driver, personal_info.walmart_profile) # Run bot on product page: bot.run( "https://www.walmart.com/ip/For-Raspberry-Pi-4-B-Touch-Screen-with-Case-EEEkit-3-5-inch-Touchscreen-Support-320x480-Monitor-TFT-LCD-Game-Display-for-Raspberry-Pi-4-B/430357329" )
def setUpClass(self): driver = webdriver.Chrome( executable_path=r'C:\Users\andrejew\PycharmProjects\chromedriver') self.base_url = 'https://autodemo.testoneo.com/en/' self.xpath_search_box = '//*[@class = "ui-autocomplete-input"]' self.ef_driver = EventFiringWebDriver(driver, ScreenshotListener())
def setUpClass(cls): edriver = webdriver.Chrome( executable_path=TestData.CHROME_EXECUTABLE_PATH) cls.driver = EventFiringWebDriver(edriver, ScreenshotListener()) cls.driver.maximize_window() cls.driver.implicitly_wait(20)
from selenium.webdriver import Firefox from selenium.webdriver.support.events import EventFiringWebDriver, AbstractEventListener import time from selenium import webdriver from selenium.webdriver.common.action_chains import ActionChains from selenium.webdriver.common.keys import Keys class MyListener(AbstractEventListener): def before_navigate_to(self, url, driver): print("Before navigate to %s" % url) def after_navigate_to(self, url, driver): print("After navigate to %s" % url) driver = Firefox() ef_driver = EventFiringWebDriver(driver, MyListener()) ef_driver.get("https://zoom.earth/#-4.810966,32.244757,19z,sat") try: browser.get(url) browser.get_screenshot_as_file(filename) finally: browser.quit()
def setUp(self): self.driver = super().run_driver() self.driver = EventFiringWebDriver( self.driver, ScreenshotListener(self._testMethodName)) LoginPage(self.driver).login_as_super_admin()
def after_close(self, driver): print "Depois de fechar a pagina" def on_exception(self, exeception, driver): print "Ocorreu um erro" if __name__ == '__main__': # instancia do navegador firefox = webdriver.Firefox() # instancia do listener listener = MyListener() # instancia do navegador com os eventos monitorados ef_firefox = EventFiringWebDriver(firefox, listener) # abrir página da python club ef_firefox.get('http://pythonclub.com.br/') try: """ Propositalmente irá gerar uma exception pois a classe não existe. O evento "on_exception" deve ser chamado """ post = ef_firefox.find_element_by_class_name('post-tile') except: pass # localizamos o primeiro post post = ef_firefox.find_element_by_class_name('post-title')
def setUp(self): self.driver = EventFiringWebDriver(webdriver.Chrome(), MyListener()) driver = self.driver run = nf.setUp_func(driver, server)
def add_event_listener( self, listener: AbstractEventListener) -> SeleniumDriverType: self.driver = EventFiringWebDriver(self.driver, listener) return self
def setUp(self): self.driver = super().run_driver() self.driver = EventFiringWebDriver( self.driver, ScreenshotListener(self._testMethodName))
def _wrap_event_firing_webdriver(self, driver): if not self.ctx.event_firing_webdriver: return driver self.debug('Wrapping driver to event_firing_webdriver.') return EventFiringWebDriver(driver, self.ctx.event_firing_webdriver())
def after_click(self, element, webdriver): nome = webdriver.find_element_by_id("lnome").text email = webdriver.find_element_by_id("lemail").text senha = webdriver.find_element_by_id("lsenha").text if nome != "nome:": nome_text.append(nome) if email != "email:": email_text.append(email) if senha != "senha:": senha_text.append(senha) wraperBroswer = EventFiringWebDriver(driver, Escutando()) wraperBroswer.get(url) sleep(4) nome = wraperBroswer.find_element_by_id("nome") nome.send_keys("Alison") nome.click() email = wraperBroswer.find_element_by_id("email") email.send_keys("*****@*****.**") email.click() senha = wraperBroswer.find_element_by_id("senha") senha.send_keys("123456") senha.click()
def chrome_browser(request): options = webdriver.ChromeOptions() options.add_argument("start-maximized") wd = EventFiringWebDriver(webdriver.Chrome(), MyListener()) request.addfinalizer(wd.quit) return wd
from selenium import webdriver from selenium.webdriver.support.events import EventFiringWebDriver from mylistener import MyListener chrome = webdriver.Chrome() listener = MyListener() ef_chrome = EventFiringWebDriver(chrome, listener) ef_chrome.get('http://pythonclub.com.br') try: """ Propositalmente ira gerar uma exception pois a classe nao existe. O evento "on_exception" deve ser chamado """ post = ef_chrome.find_element_by_class_name('post-title') except: pass post = ef_chrome.find_element_by_class_name('post-tile') post.click() ef_chrome.close()