Selenium-单击按钮问题

Selenium- Click a button issue

使用进口:

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

使用此 def 导航到按钮所在的确切 iFrame :

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

我为完成该任务所做的尝试:

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

我也试过像这样通过 xPath 到达

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

那是我所在的最后一帧

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

切换到 iframe 后试试这个:

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

UPD
根据您最后的评论,由于您之前切换到位于 orderInfo 名称的 iframe,在切换到位于 moduleManagement id 的 iframe 之前,您必须切换到默认内容,如下所示:

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

看看这个 xpath 是否有效:-

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

x 按钮在 moduleManagement iframe 中。

目标是使用 Selenium 单击它。

根据OP

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

看起来他在另一个 iframe 中 orderInfo

所以我建议您在完成任何 iframe 内容时,始终将控件切换回默认内容,如下所示:

driver.switch_to.default_content()

现在您必须再次切换到 moduleManagement iframe,如下所示:

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

然后像这样单击 x 按钮:

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