关于selenium弹出alert点击确定的问题

先交代一下场景,页面上会有一个列表,然后下面有两个元素,一个是全选的check,一个是接收的div,正常的人工操作是点击全选,然后点击接收,然后弹出alert(),点击确定接收完,后自动关闭窗口。
现用selenium自动化这个操作,这两个元素onclick都可运行js脚本

onclick=checkedalldoc();#check
onclick=responseclick();#div 

利用basepage分别封装了几个相关的方法:

# 点击元素
    def click(self, *selector):
        el = self.find_element(*selector)
        try:
            el.click()
            logger.info('元素'%s' 已被点击.' % el.text)
        except NameError as e:
            logger.error('Failed to click the element with %s' % e)
#运行js脚本
    def run_script(self, js):
        try:
            self.driver.execute_script(js)
            logger.info('成功运行脚本,脚本内容为:%s.' % js)
        except BaseException:
            logger.error('js脚本运行错误.')
#切换至弹窗并点击确定
   def accept_alert(self):
        try:
            WebDriverWait(self.driver, 20).until(EC.alert_is_present())
            alert = self.driver.switch_to.alert
            alert.accept()
            logger.info('获得弹出框并选择确认.')
        except BaseException:
            logger.error('弹出框失败.')

逻辑操作上方法是这样写的:

def receive_all_docs(self):
     self.click(*self.chkall_checkbox)
     self.click(*self.response_btn)
     self.accept_alert()

可运行时,却提示以下错误,并且也没有完成功能:

selenium.common.exceptions.UnexpectedAlertPresentException: Alert Text: None
Message: unexpected alert open: {Alert text : 对话框的提示内容}

请问这个问题怎么解决?

阅读 2k
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进