getWindowHandle()Selenium Webdriver Javascript

bfr*_*ich 2 javascript selenium coffeescript

在工程技术的帮助下进行了一些更改。这是我用来获取新窗口句柄的最终代码:

localdriver = @driver
@driver.getAllWindowHandles()
.then (handles) ->
    localdriver.switchTo().window(handles[1])
Run Code Online (Sandbox Code Playgroud)

我当前正在运行一个使用Selenium Webdriver,Mocha,Chai和Grunt的自动化堆栈。我正在用Coffeescript创建脚本,但是用Javascript回答我的问题就可以了。

我正在尝试做的是:

  • 在浏览器主窗口上单击按钮
  • 将驱动程序切换到单击按钮后打开的第二个窗口
  • 在第二个窗口中执行操作
  • 关闭第二个窗口并返回到第一个窗口。

我搜寻了互联网,寻找有关如何执行此操作的答案。几个月前才刚刚开始学习所有这些东西,而我仍然在尝试创建东西。我看到了很多Java和C +示例,但在Javascript方面却很少。谁能提供使用Selenium Webdriver和Javascript为上述场景设置代码的示例?

Roh*_*ams 8

var parent = driver.getWindowHandle();
var windows = driver.getAllWindowHandles();

driver.switchTo().window(windows[1]);

// do some stuff

driver.close();
driver.switchTo().window(parent);
Run Code Online (Sandbox Code Playgroud)

  • 您正在查看Java文档。在JavaScript中,正确的方法是`driver.getAllWindowHandles()`。 (4认同)
  • driver.getWindowHandles() 不是函数 (2认同)

Jer*_*itz 5

你想要的是 driver.getAllWindowHandles(),但是因为这会返回一个承诺,所以请确保然后使用then函数内部的句柄

// select the newly opened window
driver.getAllWindowHandles().then(function gotWindowHandles(allhandles) {
    driver.switchTo().window(allhandles[allhandles.length - 1]);
});
Run Code Online (Sandbox Code Playgroud)