Геб не указывает на правую страницу после закрытия диалогового окна подтверждения в новом окне - PullRequest
0 голосов
/ 13 марта 2019

Я делаю автоматизацию тестирования с помощью geb in groovy, в настоящее время имея дело со сценарием, таким как: во-первых, я нахожусь в родительском окне, оттуда я открываю новое окно и выполняю там какой-то поиск; при нажатии на результат поиска генерируется диалог подтверждения и обновлениязначение в родительской странице, минуя диалог с withConfirm ().затем я захожу в родительское окно, но после этого ничего не выполняется.Я думаю, что геб запутывается между страницами.

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}

    }

1 Ответ

0 голосов
/ 14 марта 2019

Это похоже на потенциальную проблему в обработке предупреждений Geb при переключении окон. Не могли бы вы сделать мне одолжение и опубликовать это как проблему в трекере , включая код и трассировки стека, которые вы предоставили? Я посмотрю, когда через пару недель вернусь из отпуска.

...