我遇到了一个问题,试图使用Selenium和Python点击我的Web应用程序上的特定按钮。该按钮显示在按下另一个按钮后可用的对话框上。
例如,我的表单包含以下部分:
按下“保存答案”按钮后,会在其上方的对话框中显示“确定”按钮。
我正在尝试点击此确定按钮,但它现在不能正常工作。 当我在Chrome上检查此元素时,我会收到以下内容:
<div class="bootbox modal fade my-modal in" tabindex="-1" role="dialog" style="display: block;">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-body">
<div class="bootbox-body">Your answers have been saved.</div>
</div>
<div class="modal-footer">
<button data-bb-handler="cancel" type="button" class="btn btn btn-primary">OK</button>
</div></div></div></div>
<button data-bb-handler="cancel" type="button" class="btn btn btn-primary">OK</button>
是我要点击的按钮。
我正在使用以下Python代码来尝试:
driver.find_element_by_id("saveQuestionsSection").click() #click Save Answer
driver.find_element_by_xpath("//button[@type='button']").click() #click OK
但它不起作用。我尝试使用Selenium IDE复制此步骤,它在那里工作,命令如下所示:
命令:点击
目标:xpath=(//button[@type='button'])[26]
但我不知道如何将其转换为Python代码。
有什么想法吗?
答案 0 :(得分:2)
使用CSS选择器。
find_element_by_css_selector(".btn").click()
答案 1 :(得分:1)
尝试等到模态窗口出现OK按钮:
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
driver.find_element_by_id("saveQuestionsSection").click()
WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.XPATH, "//button[text()='OK']"))).click()
答案 2 :(得分:1)
试试这个:
driver.find_element_by_id("saveQuestionsSection").click() #click Save Answer
element = WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.XPATH, "button[text()='OK']"))
element.click()
OR
driver.find_element_by_id("saveQuestionsSection").click() #click Save Answer
element = WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.XPATH, "(//button[@type='button'])[26]"))
element.click()
答案 3 :(得分:0)
根据您提供的HTML,点击按钮,文字为确定,您可以使用以下代码行:
//imports
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
// other lines of code
driver.find_element_by_id("saveQuestionsSection").click()
WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.XPATH, "//div[@class='bootbox modal fade my-modal in']//div[@class='modal-footer']/button[@class='btn btn btn-primary' and contains(.,'OK')]"))).click()