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.