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.
4
  • how do you expect selenium to know what you did manually? Commented Mar 10, 2023 at 10:18
  • 1
    Does this answer your question? trigger python events driven by selenium controlled browser Commented Mar 10, 2023 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. Commented Mar 10, 2023 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. Commented Mar 10, 2023 at 15:37

0

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.