Ben Cohen
Ben Cohen

Reputation: 89

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

Upvotes: 0

Views: 219

Answers (3)

cruisepandey
cruisepandey

Reputation: 29362

The x button is in moduleManagement iframe.

and the goal is to click on it using Selenium.

as per OP

wait3.until(EC.frame_to_be_available_and_switch_to_it((By.NAME, 
   "orderInfo")))

looks like he was in a different iframe orderInfo.

So I would suggest whenever you are done with any iframe stuff, always switch the control back to default content like below :

driver.switch_to.default_content()

Now again you will have to switch to moduleManagement iframe like below :

wait = WebDriverWait(driver, 10)
wait.until(EC.frame_to_be_available_and_switch_to_it((By.ID, "moduleManagement")))

and click on x button like this :

wait.until(EC.element_to_be_clickable((By.XPATH, "//button[contains(@class, ''bootbox-close-button) and text()='x']"))).click()

Upvotes: 1

Prophet
Prophet

Reputation: 33361

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()

Upvotes: 1

itronic1990
itronic1990

Reputation: 1441

See if this xpath works:-

driver.find_element_by_xpath(".//button[contains(@class,'close-button')]").click()

Upvotes: 1

Related Questions