在新窗口中关闭确认对话框后,Geb未指向右页

问题描述 投票:0回答:1

我在geovy中使用geb进行测试自动化,处理以下场景:首先,我在父窗口,从那里打开新窗口并在那里进行一些搜索,点击搜索结果生成确认对话框并更新值父页面,使用withConfirm()绕过对话框。然后我来到父窗口,但之后没有任何执行。我认为geb在页面之间变得混乱。

In parent Page
  open new window 
  search for something  
  click on the first search result
  clicking on it opens a confirm dialog 
  click okay and close the new window 
continue with parent window

我的代码如下:

withNewWindow(close: false,wait:true,{$(button that opens new window).click()}) {
        waitFor{
            title == "title"
        }
        withConfirm(wait: true){$(cause to open confirm dialog).click()}
        }
$("input[name='button'][id='SAVE_FOOTER']").click()
}

错误:

Caught: org.openqa.selenium.NoSuchWindowException: Browsing context has been discarded
Build info: version: '3.14.0', revision: 'aacccce0', time: '2018-08-02T20:19:58.91Z'
System info: host: 'DESKTOP-NAFK3F3', ip: '10.1.10.195', os.name: 'Windows 10', os.arch: 'amd64', os.version: '10.0', java.version: '1.8.0_201'
Driver info: org.openqa.selenium.firefox.FirefoxDriver
Capabilities {acceptInsecureCerts: true, browserName: firefox, browserVersion: 65.0.2, javascriptEnabled: true, moz:accessibilityChecks: false, moz:geckodriverVersion: 0.24.0, moz:headless: false, moz:processID: 12824, moz:profile: C:\Users\Dell\AppData\Local..., moz:shutdownTimeout: 60000, moz:useNonSpecCompliantPointerOrigin: false, moz:webdriverClick: true, pageLoadStrategy: normal, platform: WINDOWS, platformName: WINDOWS, platformVersion: 10.0, rotatable: false, setWindowRect: true, strictFileInteractability: false, timeouts: {implicit: 0, pageLoad: 300000, script: 30000}, unhandledPromptBehavior: dismiss and notify}
Session ID: 2c0c768c-785f-49d4-bdff-186566e722dd
org.openqa.selenium.NoSuchWindowException: Browsing context has been discarded
Build info: version: '3.14.0', revision: 'aacccce0', time: '2018-08-02T20:19:58.91Z'
System info: host: 'DESKTOP-NAFK3F3', ip: '10.1.10.195', os.name: 'Windows 10', os.arch: 'amd64', os.version: '10.0', java.version: '1.8.0_201'
Driver info: org.openqa.selenium.firefox.FirefoxDriver
Capabilities {acceptInsecureCerts: true, browserName: firefox, browserVersion: 65.0.2, javascriptEnabled: true, moz:accessibilityChecks: false, moz:geckodriverVersion: 0.24.0, moz:headless: false, moz:processID: 12824, moz:profile: C:\Users\Dell\AppData\Local..., moz:shutdownTimeout: 60000, moz:useNonSpecCompliantPointerOrigin: false, moz:webdriverClick: true, pageLoadStrategy: normal, platform: WINDOWS, platformName: WINDOWS, platformVersion: 10.0, rotatable: false, setWindowRect: true, strictFileInteractability: false, timeouts: {implicit: 0, pageLoad: 300000, script: 30000}, unhandledPromptBehavior: dismiss and notify}
Session ID: 2c0c768c-785f-49d4-bdff-186566e722dd
    at org.openqa.selenium.remote.http.W3CHttpResponseCodec.createException(W3CHttpResponseCodec.java:187)
    at org.openqa.selenium.remote.http.W3CHttpResponseCodec.decode(W3CHttpResponseCodec.java:122)
    at geb.js.JavascriptInterface.execjs(JavascriptInterface.groovy:66)
    at geb.js.JavascriptInterface.exec(JavascriptInterface.groovy:56)
    at geb.js.DefaultAlertAndConfirmSupport.popLastDialogFunctionOnto(DefaultAlertAndConfirmSupport.groovy:114)
    at geb.js.DefaultAlertAndConfirmSupport.captureDialog(DefaultAlertAndConfirmSupport.groovy:168)
    at geb.js.DefaultAlertAndConfirmSupport.captureConfirm(DefaultAlertAndConfirmSupport.groovy:182)
    at geb.js.DefaultAlertAndConfirmSupport.withConfirm(DefaultAlertAndConfirmSupport.groovy:54)
    at geb.js.DefaultAlertAndConfirmSupport.withConfirm(DefaultAlertAndConfirmSupport.groovy)
    at geb.js.AlertAndConfirmSupport$withConfirm.call(Unknown Source)
    at geb.Page.withConfirm(Page.groovy:130)
    at geb.Browser.methodMissing(Browser.groovy:249)
    at geb.Browser.invokeMethod(Browser.groovy)
    at CRMPageExample$_run_closure1$_closure3.doCall(CRMPageExample.groovy:149)
    at CRMPageExample$_run_closure1$_closure3.doCall(CRMPageExample.groovy)
    at geb.Browser.withNewWindow(Browser.groovy:798)
    at CRMPageExample$_run_closure1.doCall(CRMPageExample.groovy:137)
    at CRMPageExample$_run_closure1.doCall(CRMPageExample.groovy)
    at geb.Browser.drive(Browser.groovy:128)
    at geb.Browser$drive$0.callStatic(Unknown Source)
    at geb.Browser.drive(Browser.groovy:98)
    at geb.Browser$drive.call(Unknown Source)
    at CRMPageExample.run(CRMPageExample.groovy:97)
1552494416789   Marionette  INFO    Stopped listening on port 52107
[Parent 12824, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 332
[Child 2628, Chrome_ChildThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 332
[Child 2628, Chrome_ChildThread] WARNING: pipe error: 109: file [Parent 12824, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 332
[Child 8068, Chrome_ChildThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 332
[Child 8068, Chrome_ChildThre
###!!! [Child][MessageChannel::SendAndWait] Error: Channel error: cannot send/recv

方法我试过但似乎没用

waitFor{
        withwindow{Parent window}){true}

    }
selenium testing groovy automated-tests geb
1个回答
0
投票

这在切换窗口时看起来像Geb警报处理中的一个重要问题。你能帮我一个忙吗?在the tracker发布这个问题,包括你提供的代码和堆栈跟踪?我会在几周后从假期回来看看。

© www.soinside.com 2019 - 2024. All rights reserved.