WebdriverIO - 处理子窗口/弹出窗口



点击链接或按钮可能会打开一个新的子窗口。WebdriverIO 默认情况下控制主浏览器窗口,为了访问子窗口中的元素,必须将 WebdriverIO 的控制权从主页面切换到子窗口。

子窗口的方法

一些处理子窗口的方法如下:

browser.getWindowHandles()

此方法以列表的形式返回所有当前打开的浏览器窗口的窗口句柄 ID。如果打开了两个窗口,列表的零索引包含父窗口的句柄 ID,第一个索引指向子窗口的窗口句柄。

语法

语法如下:

var x = browser.getWindowHandles()

browser.getWindowHandle()

此方法返回当前聚焦的浏览器窗口的窗口句柄 ID。

语法

语法如下:

let l = browser.getWindowHandle()

browser.switchToWindow('<window handle id>')

此方法用于将焦点从一个浏览器窗口切换到另一个打开的窗口,其窗口句柄 ID 作为参数传递给此方法。

语法

语法如下:

browser.switchToWindow(x)

在下图中,点击“使用 Apple 帐户登录”按钮后,会打开一个子窗口,其浏览器标题为“使用 Apple ID 登录”。让我们尝试切换到子窗口并访问其中的元素。

Child Window

首先,请按照标题为“使用 WebdriverIO 的正常流程”一章中的步骤 1 到 5 进行操作,步骤如下:

步骤 1 - 安装 NodeJS。有关如何执行此安装的详细信息,请参阅标题为“NodeJS 入门”一章。

步骤 2 - 安装 NPM。有关如何执行此安装的详细信息,请参阅标题为“NPM 安装”一章。

步骤 3 - 安装 VS Code。有关如何执行此安装的详细信息,请参阅标题为“VS Code 安装”一章。

步骤 4 - 创建配置文件。有关如何执行此安装的详细信息,请参阅标题为“配置文件生成”一章。

步骤 5 - 创建规范文件。有关如何执行此安装的详细信息,请参阅标题为“Mocha 安装”一章。

步骤 6 - 将以下代码添加到创建的 Mocha 规范文件中。

// test suite name
describe('Tutorialspoint application', function(){
   //test case
   it('Child Window', function(){    
      // launch url
      browser.url('https://secure.indeed.com/account/login')  
      //identify element then click
      $('#apple-signin-button').click()
      //get all window handle ids in list
      var l = browser.getWindowHandles()
      //switch to child window
      browser.switchToWindow(l[1])
      //get page title of child window
      console.log(browser.getTitle() + ' - Page title of child window')
      //close child window
      browser.closeWindow()
      //switch to parent window
      browser.switchToWindow(l[0])
      //get page title of parent window
      console.log(browser.getTitle() + ' - Page title of parent window')      
   });
});

使用以下命令运行配置文件 - wdio.conf.js 文件:

npx wdio run wdio.conf.js 

有关如何创建配置文件的详细信息,请参阅标题为“wdio.conf.js 文件”和“配置文件生成”的章节。

您的计算机上将显示以下屏幕:

Child Window Pop

成功执行命令后,首先会在控制台中打印子窗口的页面标题 - “使用 Apple ID 登录”,然后打印父窗口的页面标题 - “登录 | Indeed 帐户”。

广告
© . All rights reserved.