【问题标题】:How to click on a button within a pop-up window with python selenium?python - 如何使用python selenium单击弹出窗口中的按钮?
【发布时间】:2018-03-26 08:33:34
【问题描述】:

我对弹出窗口上的单击按钮有疑问。图形用户界面如下: GUI

HTML 内容如下: HTML

我正在尝试使用 python selenium 以多种方式单击“确定”按钮: 例如:

driver.switch_to_alert()
driver.find_element_by_id("YesBtn").click()

driver.switch_to_alert()
driver.find_element_by_xpath("//div[@id='YesBtn']").click()

driver.switch_to_alert()
driver.find_element_by_xpath("//input[@id='YesBtn']/html/body/div/div/div/div/div[3]").click()

但我总是收到如下错误消息:

Unable to locate element: {"method":"id","selector":"YesBtn"}

有人可以帮我更正代码吗?非常感谢。

【问题讨论】:

  • 您不应该使用driver.switch_to_alert(),因为它根本不是警报。请注意,driver.switch_to_alert() 可能应用于由 JavaScript alert() 函数触发的对象,并且它没有 HTML 源代码。检查alertpopupDiv是否位于iframe

标签: python selenium selenium-webdriver xpath


【解决方案1】:

根据您分享的HTML,它不是警报,而是模态对话框。要单击文本为 OK 的元素,您必须将WebDriverWaitexpected_conditions 子句设置为element_to_be_clickable 结合使用,如下所示:

WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.XPATH, "//input[@class='btn btn-primary' and @id='YesBtn']"))).click()

【讨论】:

    【解决方案2】:
    alert = driver.switch_to_alert()
    alert.accept()
    

    这将返回当前打开的警报对象。有了这个对象,您现在可以接受、关闭、阅读其内容,甚至可以输入提示。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-11-07
      • 1970-01-01
      相关资源
      最近更新 更多