Search code examples
python-3.xseleniumwebdriver

Selenium- Click a button issue


enter image description here

using imports:

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.ui import Select
from selenium.webdriver.support.ui import WebDriverWait

using this def to navigate to the exact iFrame that the button is under :

def changeIframetoManagement():
    wait2 = WebDriverWait(driver, 10)
    wait2.until(EC.frame_to_be_available_and_switch_to_it((By.ID, "moduleManagement")))

my attempt to achieve that task :

changeIframetoManagement()
driver.find_element_by_css_selector("body > div.bootbox.modal.fade.show-order-info-bootbox- 
container.in > div > div > div.modal-body > button").click()

im also tried to reach by xPath like this

driver.find_element_by_xpath("//html/body/div[5]/div/div/div[1]/button").click()

that is the last i frame i was in

def changeIframetoOrders():
   wait3 = WebDriverWait(driver, 10)
   wait3.until(EC.frame_to_be_available_and_switch_to_it((By.NAME, 
   "orderInfo")))

this is the last i frame i was in


Solution

  • After switching into the iframe try this:

    driver.find_element_by_css_selector("div.modal-dialog button.bootbox-close-button").click()
    

    UPD
    According to your last comments, since you previously switched into iframe located by orderInfo name, before switching into iframe located by moduleManagement id you have yo switch to the default content, like this:

    changeIframetoOrders()
    driver.switch_to.default_content()
    changeIframetoManagement()
    wait.until(EC.visibility_of_element_located((By.CSS_SELECTOR, "div.modal-dialog button.bootbox-close-button"))).click()