File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -633,11 +633,17 @@ public virtual void Submit()
633633 }
634634 else
635635 {
636- IWebElement form = this . FindElement ( By . XPath ( "./ancestor-or-self::form" ) ) ;
637- this . driver . ExecuteScript (
638- "var e = arguments[0].ownerDocument.createEvent('Event');" +
639- "e.initEvent('submit', true, true);" +
640- "if (arguments[0].dispatchEvent(e)) { arguments[0].submit(); }" , form ) ;
636+ String script = "var form = arguments[0];\n " +
637+ "while (form.nodeName != \" FORM\" && form.parentNode) {\n " +
638+ " form = form.parentNode;\n " +
639+ "}\n " +
640+ "if (!form) { throw Error('Unable to find containing form element'); }\n " +
641+ "if (!form.ownerDocument) { throw Error('Unable to find owning document'); }\n " +
642+ "var e = form.ownerDocument.createEvent('Event');\n " +
643+ "e.initEvent('submit', true, true);\n " +
644+ "if (form.dispatchEvent(e)) { HTMLFormElement.prototype.submit.call(form) }\n " ;
645+
646+ this . driver . ExecuteScript ( script , this ) ;
641647 }
642648 }
643649
Original file line number Diff line number Diff line change @@ -60,10 +60,28 @@ public void ShouldSubmitAFormWhenAnyElementWithinThatFormIsSubmitted()
6060 }
6161
6262 [ Test ]
63- public void ShouldNotBeAbleToSubmitAFormThatDoesNotExist ( )
63+ public void ShouldSubmitAFormWithIdSubmit ( )
6464 {
6565 driver . Url = formsPage ;
66- Assert . That ( ( ) => driver . FindElement ( By . Name ( "SearchableText" ) ) . Submit ( ) , Throws . InstanceOf < NoSuchElementException > ( ) ) ;
66+ driver . FindElement ( By . Id ( "submit" ) ) . Submit ( ) ;
67+ WaitFor ( TitleToBe ( "We Arrive Here" ) , "Browser title is not 'We Arrive Here'" ) ;
68+ Assert . AreEqual ( driver . Title , "We Arrive Here" ) ;
69+ }
70+
71+ [ Test ]
72+ public void ShouldSubmitAFormWithNameSubmit ( )
73+ {
74+ driver . Url = formsPage ;
75+ driver . FindElement ( By . Name ( "submit" ) ) . Submit ( ) ;
76+ WaitFor ( TitleToBe ( "We Arrive Here" ) , "Browser title is not 'We Arrive Here'" ) ;
77+ Assert . AreEqual ( driver . Title , "We Arrive Here" ) ;
78+ }
79+
80+ [ Test ]
81+ public void ShouldNotBeAbleToSubmitAnInputOutsideAForm ( )
82+ {
83+ driver . Url = formsPage ;
84+ Assert . That ( ( ) => driver . FindElement ( By . Name ( "SearchableText" ) ) . Submit ( ) , Throws . InstanceOf < WebDriverException > ( ) ) ;
6785 }
6886
6987 [ Test ]
You can’t perform that action at this time.
0 commit comments