先交代一下场景,页面上会有一个列表,然后下面有两个元素,一个是全选的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 : 对话框的提示内容}
请问这个问题怎么解决?