[Checkins] SVN: zc.testbrowser/trunk/src/zc/testbrowser/real. More
checkbox functionality.
Rocky Burt
rocky at serverzen.com
Wed Sep 26 09:17:29 EDT 2007
Log message for revision 80101:
More checkbox functionality.
(Rocky, Justas)
Changed:
U zc.testbrowser/trunk/src/zc/testbrowser/real.js
U zc.testbrowser/trunk/src/zc/testbrowser/real.py
-=-
Modified: zc.testbrowser/trunk/src/zc/testbrowser/real.js
===================================================================
--- zc.testbrowser/trunk/src/zc/testbrowser/real.js 2007-09-26 11:47:33 UTC (rev 80100)
+++ zc.testbrowser/trunk/src/zc/testbrowser/real.js 2007-09-26 13:17:29 UTC (rev 80101)
@@ -283,6 +283,18 @@
for (var c = 0; c < res.snapshotLength; c++) {
options.push(res.snapshotItem(c).getAttribute('value'));
}
+ } else if (tagName == 'INPUT') {
+ var elemName = elem.getAttribute('name');
+ var typeName = elem.getAttribute('type');
+ var res = tb_xpath("//input[@name='" + elemName +
+ "'][@type='"+typeName+"']", elem);
+ for (var c = 0; c < res.snapshotLength; c++) {
+ var item = res.snapshotItem(c);
+ if (!item.hasAttribute('value'))
+ options.push(true);
+ else
+ options.push(item.getAttribute('value'));
+ }
}
return options.toSource();
}
@@ -294,20 +306,36 @@
if (tagName == 'SELECT') {
var res = tb_xpath('child::option', elem)
for (var c = 0; c < res.snapshotLength; c++) {
- item = res.snapshotItem(c)
+ var item = res.snapshotItem(c)
if (item.hasAttribute('label'))
options.push(item.getAttribute('label'))
else
options.push(item.textContent);
}
+ } else if (tagName == 'INPUT') {
+ var res = tb_xpath("//label[@for='" + elem.id + "']", elem);
+ for (var c = 0; c < res.snapshotLength; c++) {
+ var item = res.snapshotItem(c);
+ options.push(item.textContent);
+ }
}
+
return options.toSource();
}
+function tb_listcontrol_has_multiple(token, name, typeName) {
+ var elem = tb_tokens[token];
+ var res = tb_xpath("//input[@name='" + name +
+ "'][@type='"+typeName+"']", elem);
+ return res.snapshotLength > 0;
+}
+
function tb_get_listcontrol_value(token) {
var elem = tb_tokens[token];
var tagName = elem.tagName;
+ var values
var values = new Array();
+
if (tagName == 'SELECT') {
var res = tb_xpath('child::option', elem)
for (var c = 0; c < res.snapshotLength; c++) {
@@ -317,13 +345,16 @@
}
} else if (tagName == 'INPUT') {
var elemName = elem.getAttribute('name');
- var res = tb_xpath('//input[@name="' +
- elemName +
- '"][@type="radio"]', elem);
+ var typeName = elem.getAttribute('type');
+ var res = tb_xpath("//input[@name='" + elemName +
+ "'][@type='"+typeName+"']", elem);
for (var c = 0; c < res.snapshotLength; c++) {
var item = res.snapshotItem(c);
if (item.checked) {
- values.push(item.getAttribute('value'));
+ if (!item.hasAttribute('value'))
+ values.push(true);
+ else
+ values.push(item.getAttribute('value'));
}
}
}
Modified: zc.testbrowser/trunk/src/zc/testbrowser/real.py
===================================================================
--- zc.testbrowser/trunk/src/zc/testbrowser/real.py 2007-09-26 11:47:33 UTC (rev 80100)
+++ zc.testbrowser/trunk/src/zc/testbrowser/real.py 2007-09-26 13:17:29 UTC (rev 80101)
@@ -444,6 +444,21 @@
return super(ListControl, self).type
return tagName
+ @property
+ def multiple(self):
+ return True
+
+ @property
+ def really_multiple(self):
+ tagName = self.browser.execute(
+ 'tb_tokens[%s].tagName' % self.token)
+ typeName = self.browser.execute(
+ 'tb_tokens[%s].getAttribute("type")' % self.token)
+ v = self.browser.execute( \
+ 'tb_listcontrol_has_multiple(%s, %r, %r)'
+ % (self.token, tagName, typeName))
+ return simplejson.loads(v)
+
@apply
def displayValue():
# not implemented for anything other than select;
@@ -467,8 +482,12 @@
def fget(self):
options = self.browser.execute(
'tb_get_listcontrol_value(%r)' % self.token)
- return [str(option) for option in simplejson.loads(options)]
+ v = [option for option in simplejson.loads(options)]
+ if not self.really_multiple:
+ v = v[0]
+ return v
+
def fset(self, value):
if self._browser_counter != self.browser._counter:
raise zc.testbrowser.interfaces.ExpiredError
@@ -487,7 +506,7 @@
def options(self):
options = self.browser.execute(
'tb_get_listcontrol_options(%r)' % self.token)
- return [str(option) for option in simplejson.loads(options)]
+ return [option for option in simplejson.loads(options)]
@property
def controls(self):
@@ -590,9 +609,14 @@
@property
def optionValue(self):
- return self.browser.execute(
+ v = self.browser.execute(
'tb_tokens[%s].getAttribute("value")' % self.token)
+ if not v and self.selected:
+ v = 'on'
+
+ return v
+
def click(self):
if self._browser_counter != self.browser._counter:
raise zc.testbrowser.interfaces.ExpiredError
More information about the Checkins
mailing list