I have some issue with Module - $ function dosn't work if I use 
browser.withNewWindow method.
There is little test case.

1. Tested geb.html. It has one button, wich opens another window
<html><head>
  <meta http-equiv="content-type" content="text/html; charset=UTF-8">
  <title>Window Open Test</title>

  <script type="text/javascript">
    
function open_blank()
{
var w = window.open("about:blank", "_blank", 
"width=800,height=500,status=0,toolbar=0");
  w.document.write("<html><head></head><title>New Window</title><body><div 
id='divel'>div text</body></html>");
  w.document.close();
  w.focus();
}


</script>

</head>
<body>
  <button id="newwindow" onclick="open_blank()">
window open blank
</button>
</body></html>

2. SimplePage - doesn't use any Module

class SimplePage extends Page {
    static url = 'file:///home/ykalemi/geb.html'

    static at = { title == "Window Open Test" }

    String getDivText() {
        return browser.withNewWindow( {$('#newwindow').click()} ) {
            return $('div', id: 'divel').text()
        }
    }
}


3. ModuledPage - has two kind of modules

class ModuledPage extends Page {
    static url = 'http://localhost/geb.html'
    static at = { title == "Window Open Test" }

    static content = {
        simpleWindowModule {module SimpleModule}

        smartWindowModule {module SmartModule}
    }
}


4. SimpleModule - module with $-function.

class SimpleModule extends Module {

    String getDivText() {
        return browser.withNewWindow( {$('#newwindow').click()} ) {
            return $('div', id: 'divel').text()
        }
    }
}


5. SmartModule - module with workaround

class SmartModule extends Module {

    String getDivText() {
        return browser.withNewWindow( {$('#newwindow').click()} ) {
            return browser.navigator.find('div', id: 'divel').text()
        }
    }
}


6. And ModuleSpec

class ModuleSpec extends GebReportingSpec {


    // pass
    def 'PageInteraction'() {
        when:
        to SimplePage
        then:
        getDivText() == 'text'
    }

    // fails with NoSuchElementException: Web element reference not seen 
before: 4d4c610f-1366-4bc1-ad34-15f6326e336d
    def 'SimpleModuleInteraction'() {
        when:
        to ModuledPage
        then:
        simpleWindowModule.getDivText() == 'text'
    }

    // pass
    def 'SmartModuleInteraction'() {
        when:
        to ModuledPage
        then:
        smartWindowModule.getDivText() == 'text'
    }
}



Looks like navigator inside Module cannot survive after page reloading / 
new window opening.
Is it a bug? Or am I misuse Module in this case?

Geb: 2.2
Spock: 1.1
Selenium: 3.14.0

-- 
You received this message because you are subscribed to the Google Groups "Geb 
User Mailing List" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/geb-user/4e08e721-e895-4a4d-b2a3-73fe22e29c07%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to