UI自动化Selenium 页面窗口window定位切换

Selenium自动化,在操作元素时,一定是基于某个窗口这个前提;我们时常在操作时会出现打开新窗口的情况;如点击新增按钮,打开了新增单据的新页面窗口,接下来要录入单据信息时,必须告诉框架切换到新窗口后,才能操作窗口内的元素;

甚至还需要在几个窗口之间来回切换,要做到这点,我们就需要提前获得各个窗口的句柄,从而判断当前在哪个窗口,接下来要去哪个窗口;

一、页面窗口切换用到的几个方法:

  1. driver.current_window_handle 获取当前窗口handle
  2. driver.window_handles 获取所有窗口的handle,返回list列表
  3. driver.switch_to.window(handle) 切换到对应的窗口
  4. driver.close() 关闭当前窗口

二、窗口切换几种形式:

  • 通过句柄lists下标切换:
# 切换到新页面
def locateNewPage(drObject):
    drObject.switch_to.window(drObject.window_handles[-1])


# 切换到首页面
def locateFirstPage(drObject):
    drObject.switch_to.window(drObject.window_handles[0])


# 切换到倒数第二页面
def locateSecondPage(drObject):
    drObject.switch_to.window(drObject.window_handles[-2])
  • 通过页面title切换:
    # 根据title切换窗口
    # 此封装原理,拿到当前所有页面的handle,然后循环根据当handle拿到页面title,和传入的title进行循环对比;
    def locateWindowTitle2(self, title):
        try:
            time.sleep(5)
            all_h = self.driver.window_handles  # 获得所有窗口句柄
            # 遍历句柄,对比句柄的title
            for i in all_h:
                tl = self.driver.title
                if tl == title:
                    break
                else:
                    self.driver.switch_to.window(i)
        except:
            raise AssertionError("页面切换失败!")
        else:
            pass

相关推荐

  1. UI自动化Selenium 页面窗口window定位切换

    2024-01-05 12:16:04       59 阅读
  2. selenium中switch_to.window切换窗口的用法

    2024-01-05 12:16:04       34 阅读
  3. Selenium 切换窗口

    2024-01-05 12:16:04       26 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-01-05 12:16:04       91 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-01-05 12:16:04       97 阅读
  3. 在Django里面运行非项目文件

    2024-01-05 12:16:04       78 阅读
  4. Python语言-面向对象

    2024-01-05 12:16:04       88 阅读

热门阅读

  1. DevOps(8)

    DevOps(8)

    2024-01-05 12:16:04      55 阅读
  2. 记一次docker中安装redis的过程

    2024-01-05 12:16:04       61 阅读
  3. SVN迁移至GitLab,并附带历史提交记录(二)

    2024-01-05 12:16:04       51 阅读
  4. 【DevOps-07-1】SonarQube介绍与安装

    2024-01-05 12:16:04       57 阅读
  5. Python常用代码大全

    2024-01-05 12:16:04       45 阅读
  6. css制作瀑布流布局

    2024-01-05 12:16:04       73 阅读
  7. pytest装饰器 @pytest.mark.parametrize 使用方法

    2024-01-05 12:16:04       43 阅读
  8. 单调栈:General

    2024-01-05 12:16:04       54 阅读
  9. Spring MVC之Handler的四种类型

    2024-01-05 12:16:04       65 阅读
  10. pytorch中的wheel文件

    2024-01-05 12:16:04       43 阅读