python selenium UI自动化操作iframe及返回默认页面
2022/2/23 11:22:26
本文主要是介绍python selenium UI自动化操作iframe及返回默认页面,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
页面操作的场景:进到到页面A,选择页面A里面的记录,点击签约, 弹出一个弹窗B,弹窗B的内容是协议及同意按钮或其他非同意的提示信息,主要的操作,打开页面A,点击签约,点击同意,操作完成
分析页面的组成,弹窗B在页面A里面,不过弹窗B是iframe,即嵌套在html页面里面的html,如果不做iframe切换,无法操作弹窗B里面的同意按钮,提示找不到元素,所以操作弹窗B里面的同意按钮前,要先切换到iframe,大致关系如下图:
切换到iframe的代码,EC.frame_to_be_available_and_switch_to_it(loc) 等待iframe出现,并切换到iframe
def switch_iframe(self, loc, model): ''' # html再嵌套了html,就需要先切换到iframe,才能对里面的元素进行操作 :param loc: 即iframe的元素属性 :param model: :return: ''' mylog.info("切换到模块{0}的_{1}iframe".format(model, loc)) WebDriverWait(self.driver, timeout=10).until(EC.frame_to_be_available_and_switch_to_it(loc))
完整的页面操作代码
def sign(self, shopname): ''' 【签约操作】判断通联协议是否出现,已出现进入签约操作,签约操作是放在iframe里面,要切换到iframe,进行操作 签完一家店铺后,关闭弹窗,切换回,默认的html页面,进行下一次的签约操作 ''' # 同意通联协议的操作 res = self.wait_eleVisibility(loc=sf.xiey_tap, timeout=8, poll_frequency=0.2) if res: # 要切换到iframe进到这个页面进行操作 self.switch_iframe(loc=sf.agree_ifarme, model="切换到签约iframe") try: WebDriverWait(self.driver, timeout=8, poll_frequency=0.2).until(EC.visibility_of_element_located(sf.agreed_input)) self.scroll_into_view_and_click(loc=sf.agreed_input, model="点击同意协议") mylog.info("{0}_点击同意协议".format(shopname)) except Exception as e: # 过滤已经提交了签约记录的店铺,并记录店铺和具体的错误信息 flase_txt = self.get_element_text(loc=sf.user_not_exist, model="获取失败的提示") mylog.exception("{0}_{1}_签约失败".format(shopname, flase_txt)) time.sleep(1) # 切换回主界面 self.switch_default_content() self.scroll_into_view_and_click(loc=sf.xiey_tap, model="移动到签约页面顶部") self.scroll_into_view_and_click(loc=sf.close_alert, model="关闭通联弹框") else: mylog.exception("签约页面未出现")
切换回默认的html页面
def switch_default_content(self): ''' # 操作完iframe后,切换回默认的html页面,如果现在那一层的iframe,只需要执行一次,就可以返回到默认的html页面 :return: ''' mylog.info("切换到默认的html页面") self.driver.switch_to_default_content()
这篇关于python selenium UI自动化操作iframe及返回默认页面的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-24Python编程基础详解
- 2024-11-21Python编程基础教程
- 2024-11-20Python编程基础与实践
- 2024-11-20Python编程基础与高级应用
- 2024-11-19Python 基础编程教程
- 2024-11-19Python基础入门教程
- 2024-11-17在FastAPI项目中添加一个生产级别的数据库——本地环境搭建指南
- 2024-11-16`PyMuPDF4LLM`:提取PDF数据的神器
- 2024-11-16四种数据科学Web界面框架快速对比:Rio、Reflex、Streamlit和Plotly Dash
- 2024-11-14获取参数学习:Python编程入门教程