ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

python selenium UI自动化操作iframe及返回默认页面

2022-02-23 10:04:28  阅读:206  来源: 互联网

标签:loc python self selenium 默认页 html 切换 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()

标签:loc,python,self,selenium,默认页,html,切换,iframe,页面
来源: https://www.cnblogs.com/cuitang/p/15925972.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有