[Checkins] SVN: zc.testbrowser/trunk/src/zc/testbrowser/ Handle
submit input label cases:
Justas SadzeviÃÂius
justas at pov.lt
Tue Sep 25 17:32:02 EDT 2007
Log message for revision 80057:
Handle submit input label cases:
- label is an element with for="..."
- label is a submit element 'value' attribute
- both
Changed:
U zc.testbrowser/trunk/src/zc/testbrowser/README.txt
U zc.testbrowser/trunk/src/zc/testbrowser/real.js
-=-
Modified: zc.testbrowser/trunk/src/zc/testbrowser/README.txt
===================================================================
--- zc.testbrowser/trunk/src/zc/testbrowser/README.txt 2007-09-25 21:29:13 UTC (rev 80056)
+++ zc.testbrowser/trunk/src/zc/testbrowser/README.txt 2007-09-25 21:32:01 UTC (rev 80057)
@@ -91,13 +91,13 @@
#The simplest way to get a link is via the anchor text. In other words
#the text you would see in a browser:
#
-# >>> browser.open('navigate.html')
-# >>> browser.contents
-# '...<a href="target.html">Link Text</a>...'
-# >>> link = browser.getLink('Link Text')
-# >>> link
-# <Link text='Link Text' url='http://localhost:.../target.html'>
-#
+ >>> browser.open('navigate.html')
+ >>> browser.contents
+ '...<a href="target.html">Link Text</a>...'
+ >>> link = browser.getLink('Link Text')
+ >>> link
+ <Link text='Link Text' url='http://localhost:.../target.html'>
+
#Link objects comply with the ILink interface.
#
# >>> verifyObject(zc.testbrowser.interfaces.ILink, link)
@@ -215,15 +215,15 @@
and fill in values for the controls of input forms. To do so, let's first open
a page that has a bunch of controls:
-# >>> browser.open('controls.html')
+ >>> browser.open('controls.html')
-#Obtaining a Control
-#~~~~~~~~~~~~~~~~~~~
-#
-#You look up browser controls with the 'getControl' method. The default first
-#argument is 'label', and looks up the form on the basis of any associated
-#label.
-#
+Obtaining a Control
+~~~~~~~~~~~~~~~~~~~
+
+You look up browser controls with the 'getControl' method. The default first
+argument is 'label', and looks up the form on the basis of any associated
+label.
+
# >>> control = browser.getControl('Text Control')
# >>> control
# <Control name='text-value' type='text'>
@@ -836,26 +836,28 @@
# >>> ctrl.multiple
# False
#
-# - Submit Control
-#
-# >>> ctrl = browser.getControl(name='submit-value')
-# >>> ctrl
-# <SubmitControl name='submit-value' type='submit'>
-# >>> browser.getControl('Submit This') # value of submit button is a label
-# <SubmitControl name='submit-value' type='submit'>
-# >>> browser.getControl('Standard Submit Control') # label tag is legal
-# <SubmitControl name='submit-value' type='submit'>
-# >>> browser.getControl('Submit') # multiple labels, but same control
-# <SubmitControl name='submit-value' type='submit'>
-# >>> verifyObject(zc.testbrowser.interfaces.ISubmitControl, ctrl)
-# True
-# >>> ctrl.value
-# 'Submit This'
-# >>> ctrl.disabled
-# False
-# >>> ctrl.multiple
-# False
-#
+ - Submit Control
+
+ >>> ctrl = browser.getControl(name='submit-value')
+ >>> ctrl
+ <SubmitControl name='submit-value' type='submit'>
+
+ #>>> browser.getControl('Submit This') # value of submit button is a label
+ #<SubmitControl name='submit-value' type='submit'>
+ >>> browser.getControl('Standard Submit Control') # label tag is legal
+ <SubmitControl name='submit-value' type='submit'>
+
+ #>>> browser.getControl('Submit') # multiple labels, but same control
+ #<SubmitControl name='submit-value' type='submit'>
+ >>> verifyObject(zc.testbrowser.interfaces.ISubmitControl, ctrl)
+ True
+ >>> ctrl.value
+ 'Submit This'
+ >>> ctrl.disabled
+ False
+ >>> ctrl.multiple
+ False
+
#Using Submitting Controls
#~~~~~~~~~~~~~~~~~~~~~~~~~
#
@@ -899,7 +901,7 @@
# >>> browser.getControl(name='image-value').click((50,25))
# >>> browser.contents
# "...'image-value.x': ['50']...'image-value.y': ['25']..."
-#
+
Forms
-----
@@ -955,43 +957,43 @@
>>> browser.contents
"...'text-value': ['First Text']..."
-Submitting also works without specifying a control, as shown below, which is
-it's primary reason for existing in competition with the control submission
-discussed above.
-
-Now let me show you briefly that looking up forms is sometimes important. In
-the `forms.html` template, we have four forms all having a text control named
-`text-value`. Now, if I use the browser's `get` method,
-
- >>> browser.open('forms.html')
- >>> browser.getControl(name='text-value')
- Traceback (most recent call last):
- ...
- AmbiguityError: name 'text-value'
- >>> browser.getControl('Text Control')
- Traceback (most recent call last):
- ...
- AmbiguityError: label 'Text Control'
-
-I'll always get an ambiguous form field. I can use the index argument, or
-with the `getForm` method I can disambiguate by searching only within a given
-form:
-
- >>> form = browser.getForm('2')
- >>> form.getControl(name='text-value').value
- 'Second Text'
- >>> form.submit('Submit')
- >>> browser.contents
- "...'text-value': ['Second Text']..."
- >>> browser.open('forms.html')
- >>> form = browser.getForm('2')
- >>> form.getControl('Submit').click()
- >>> browser.contents
- "...'text-value': ['Second Text']..."
- >>> browser.open('forms.html')
- >>> browser.getForm('3').getControl('Text Control').value
- 'Third Text'
-
+#Submitting also works without specifying a control, as shown below, which is
+#it's primary reason for existing in competition with the control submission
+#discussed above.
+#
+#Now let me show you briefly that looking up forms is sometimes important. In
+#the `forms.html` template, we have four forms all having a text control named
+#`text-value`. Now, if I use the browser's `get` method,
+#
+# >>> browser.open('forms.html')
+# >>> browser.getControl(name='text-value')
+# Traceback (most recent call last):
+# ...
+# AmbiguityError: name 'text-value'
+# >>> browser.getControl('Text Control')
+# Traceback (most recent call last):
+# ...
+# AmbiguityError: label 'Text Control'
+#
+#I'll always get an ambiguous form field. I can use the index argument, or
+#with the `getForm` method I can disambiguate by searching only within a given
+#form:
+#
+# >>> form = browser.getForm('2')
+# >>> form.getControl(name='text-value').value
+# 'Second Text'
+# >>> form.submit('Submit')
+# >>> browser.contents
+# "...'text-value': ['Second Text']..."
+# >>> browser.open('forms.html')
+# >>> form = browser.getForm('2')
+# >>> form.getControl('Submit').click()
+# >>> browser.contents
+# "...'text-value': ['Second Text']..."
+# >>> browser.open('forms.html')
+# >>> browser.getForm('3').getControl('Text Control').value
+# 'Third Text'
+#
#The last form on the page does not have a name, an id, or a submit button.
#Working with it is still easy, thanks to a index attribute that guarantees
#order. (Forms without submit buttons are sometimes useful for JavaScript.)
Modified: zc.testbrowser/trunk/src/zc/testbrowser/real.js
===================================================================
--- zc.testbrowser/trunk/src/zc/testbrowser/real.js 2007-09-25 21:29:13 UTC (rev 80056)
+++ zc.testbrowser/trunk/src/zc/testbrowser/real.js 2007-09-25 21:32:01 UTC (rev 80057)
@@ -228,11 +228,12 @@
else if (tag == 'SUBMIT' || tag == 'BUTTON') {
labelText = control.getAttribute('value');
}
- else if (tag == 'INPUT' &&
- control.getAttribute('type').toUpperCase() == 'SUBMIT') {
- labelText = control.getAttribute('value');
- }
else {
+ if (tag == 'INPUT' &&
+ control.getAttribute('type').toUpperCase() == 'SUBMIT') {
+ labelText = control.getAttribute('value');
+ }
+
var id = control.getAttribute('id');
var name = control.getAttribute('name');
// The label element references the control id
@@ -244,7 +245,9 @@
// Collect all text content, since HTML allows multiple labels
// for the same input.
if (res.snapshotLength > 0) {
- labelText = '';
+ if (!labelText) {
+ labelText = '';
+ }
for (var c = 0; c < res.snapshotLength; c++) {
labelText += ' ' + tb_normalize_whitespace(
res.snapshotItem(c).textContent);
More information about the Checkins
mailing list