1

I would like to log the manually user actions on browser startet with selenium / webdriver. My following Script works so far with the automated actions, but is not logging / printing the actions i do manually in the browser. What i am doing wrong? Here is my script so far:

from selenium import webdriver
import logging
from selenium.webdriver.common.by import By
from selenium.webdriver.support.events import EventFiringWebDriver
from selenium.webdriver.support.events import AbstractEventListener

logging.basicConfig(filename='app.log', level=logging.INFO, format='%(asctime)s:%(levelname)s:%(message)s')

class MyListener(AbstractEventListener):
    def __init__(self, logger):
        super().__init__()
        self.logger = logger

    def before_navigate_to(self, url, driver):
        self.logger.info(f"Laden der Seite: {url}")

    def before_find(self, by, value, driver):
        self.logger.info(f"Suche nach {by} mit dem Wert {value}.")

    def after_find(self, by, value, driver):
        self.logger.info(f"Element gefunden: {by} mit dem Wert {value}.")

    def before_click(self, element, driver):
        print(f"Klick auf {element}.")
        self.logger.info(f"Klick auf {element}.")

    def after_click(self, element, driver):
        print(f"Klick auf {element} beendet.")
        self.logger.info(f"Klick auf {element} beendet.")

    def before_change_value_of(self, element, driver):
        print(f"Eingabe in {element}.")
        self.logger.info(f"Eingabe in {element}.")

    def after_change_value_of(self, element, driver):
        print(f"Eingabe in {element} beendet.")
        self.logger.info(f"Eingabe in {element} beendet.")

chrome_options = webdriver.ChromeOptions()
chrome_options.add_experimental_option('excludeSwitches', ['enable-logging'])
chrome_options.add_experimental_option("detach", True)

driver = webdriver.Chrome(options=chrome_options)   
driver = EventFiringWebDriver(driver, MyListener(logging))

driver.get("https://www.google.com/")


nutzungsb = driver.find_element(By.ID,"W0wltc")
nutzungsb.click()

search_box = driver.find_element(By.NAME,"q")
search_box.send_keys("user_input")
search_box.submit()

app.log:

2023-03-10 10:39:32,961:INFO:Laden der Seite: https://www.google.com/
2023-03-10 10:39:34,720:INFO:Suche nach id mit dem Wert W0wltc.
2023-03-10 10:39:34,753:INFO:Element gefunden: id mit dem Wert W0wltc.
2023-03-10 10:39:34,753:INFO:Klick auf <selenium.webdriver.remote.webelement.WebElement (session="ba492d8265b7d98601d6c58daafd1d81", element="4e348086-9653-461c-bf8e-6dfc8129c608")>.
2023-03-10 10:39:34,843:INFO:Klick auf <selenium.webdriver.remote.webelement.WebElement (session="ba492d8265b7d98601d6c58daafd1d81", element="4e348086-9653-461c-bf8e-6dfc8129c608")> beendet.
2023-03-10 10:39:34,843:INFO:Suche nach name mit dem Wert q.
2023-03-10 10:39:34,862:INFO:Element gefunden: name mit dem Wert q.
2023-03-10 10:39:34,862:INFO:Eingabe in <selenium.webdriver.remote.webelement.WebElement (session="ba492d8265b7d98601d6c58daafd1d81", element="9174f201-0095-4c9b-9344-ee2fa54bb56b")>.
2023-03-10 10:39:34,937:INFO:Eingabe in <selenium.webdriver.remote.webelement.WebElement (session="ba492d8265b7d98601d6c58daafd1d81", element="9174f201-0095-4c9b-9344-ee2fa54bb56b")> beendet.
vvvvv
  • 25,404
  • 19
  • 49
  • 81
Malta
  • 117
  • 1
  • 7
  • how do you expect selenium to know what you did manually? – Rolandas Ulevicius Mar 10 '23 at 10:18
  • 1
    Does this answer your question? [trigger python events driven by selenium controlled browser](https://stackoverflow.com/questions/57532775/trigger-python-events-driven-by-selenium-controlled-browser) – kaliiiiiiiii Mar 10 '23 at 12:55
  • Labas @RolandasUlevicius .. its not important, to differ manual or automated actions. Its important to log all actions - the manually andthe automated actions. – Malta Mar 10 '23 at 13:25
  • Labas :) Seems like @kaliiiiiiiii answer would be the best bet. Automated actions can be easily logged, as you already demonstrated. But manual actions are pretty much end-point tracking. Check out that thread in his comment. – Rolandas Ulevicius Mar 10 '23 at 15:37

0 Answers0