大家都知道弹出框大致可以分为三种:1.警告消息框(alert)、2.确认消息框(confirm)、3.提示消息对话(prompt)
而selenium 提供switch_to_alert()方法来定位:
- switch_to_alert() #定位弹出对话
- text() #获取对话框文本值
- accept() #相当于点击"确认"
- dismiss() #相当于点击"取消"
- send_keys() # 输入值
上面的都是一般弹出框的处理方法,但是我在项目中遇到了一个DIV模拟的窗口,用以上方法都获取不到这个弹出框:
例如:
在常规方法都试过后,我想到两个解决思路:1.返回当前页面最顶层,然后获取页面值;2.定位是否有确认按钮来判断弹出框。
而在这里,我选择了第2种方法:
1 try: 2 driver.find_element_by_xpath("/html/body/div[10]/div/div[2]/button").click() 3 except: 4 print(‘抄到数据次数:‘) 5 else: 6 print(‘读取超时,刷新后重试!‘)
有时候换一种思路…事情就能够得到解决。