gpt4 book ai didi

javascript - 使用 Selenium/Protractor Javascript 切换到新窗口

转载 作者:可可西里 更新时间:2023-11-01 02:55:46 25 4
gpt4 key购买 nike

寻求一些帮助,了解我应该如何获得在我单击“登录”按钮后触发显示的新“弹出”窗口。

我可以在窗口显示时到达,但我不相信我当前用于获取窗口“句柄”的代码工作正常。我的情况有点不同,因为我在我的页面中使用了 Protractor ,但是出现的新窗口不是基于 Angular ,所以我必须在那个窗口中切换到只使用 selenium WebDriver。 (任何人都知道这种方法是否存在问题?)

您可以在下面找到我用来创建 selenium 驱动程序的代码片段,以及试图“切换到/抓取句柄”弹出的新窗口的代码片段。我知道它无法正常工作,因为我在试图在页面上查找表单的代码中不断收到“No Such Element”错误。

    // Create selenium webdriver / driver
var webdriver = require('selenium-webdriver');

var driver = new webdriver.Builder().
withCapabilities(webdriver.Capabilities.chrome()).
build();

// Now make sure that the new window is popping up and we are navigating correctly to it
var handlePromise = browser.driver.getAllWindowHandles();
handlePromise.then(function (handles) {
// parentHandle = handles[0];
var popUpHandle = handles[1];

// Change to new handle
browser.driver.switchTo().window(popUpHandle);

var popUpHandleFinal = browser.driver.getWindowHandle();
expect(popUpHandleFinal).toEqual(popUpHandle);
});

一些关于此的事情:

  1. 如果我删除“browser.driver.switchTo().window(popUpHandle)”行中的“browser”,它显示为“driver.switchTo().window(popUpHandle)”,我会收到回复并错误显示为“UnknownError: unknown error: 'name' must be a nonempty string” 在对此进行一些搜索后,这是因为驱动程序上的“switchTo()”方法不能为空。如果我只使用上面显示的代码,这个错误就被清除了。

  2. 我不是 100% 确定我是应该使用 Protractor (全局“浏览器”变量)还是使用我之前设置的直接“驱动程序”(Selenium) 作为获取窗口的方式。

谢谢你的帮助

最佳答案

从最新版本的 Protractor (v2.2) 开始,使用 Protractor 窗口句柄应该没有问题,它返回当前正在显示的窗口数组。正如 P.T 所指出的,无需调用单独的驱动程序实例,但 browser 全局变量将起作用。调用弹出窗口的数组索引为 0,弹出窗口的数组索引为 1。下面是切换到弹出窗口进行操作的示例。

browser.getAllWindowHandles().then(function(handles){
browser.switchTo().window(handles[1]).then(function(){
//do your stuff on the pop up window
});
});

希望这对您有所帮助。

关于javascript - 使用 Selenium/Protractor Javascript 切换到新窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28788106/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com