Skip to content Skip to sidebar Skip to footer

Selenium-Python: Interact With System Modal Dialogs

I am running an app in the browser; and for some actions I was able to simulate actions with keystrokes; but I have a peculiar problem: some actions in my app cause system prompt t

Solution 1:

If you are talking about system dialogs, then it's not possible to interact with them using selenium.

However, for browser popups (alerts), just navigate to the popup:

driver.switch_to_alert()

Then, use the methods from the Alert class to interact with the popup. The Alert class contains methods for dismissing, accepting, inputting, and getting text from alert prompts.

Some examples:

Alert(driver).accept()
Alert(driver).dismiss()
Alert(driver).authenticate()
Alert(driver).send_keys(keys_to_send)
Alert(driver).text()

see: https://seleniumhq.github.io/selenium/docs/api/py/webdriver/selenium.webdriver.common.alert.html


Solution 2:

You could make usage of the Selenium methods to check current window and move to another one:

You can use

driver.window_handles

to find a list of window handles and after try to switch using following methods (selenium documentation).

  • driver.switch_to_alert()
  • driver.switch_to.active_element
  • driver.switch_to.default_content
  • driver.switch_to.window

Since the application you work on, seems to respond to Selenium commands here it is a working example about opening a popup window, switching selenium scope on it, extract data and close the popup. The process is repeated for all the products:

for item in driver.find_elements_by_class_name("products"):
    item.click() # clicking on item activate a popup
    driver.switch_to_alert() #switch to new window
    # Get data
    driver.find_elements_by_css_selector(".ui-dialog-titlebar-close.ui-corner-all")[0].click() #close window

Post a Comment for "Selenium-Python: Interact With System Modal Dialogs"