I have to say I'm struggling to understand your requirement.
If you want users to see (but not touch!) the state of play in the
execution, then you can see an example in the tutorial:
https://github.com/jbehave/jbehave-tutorial/tree/master/etsy-selenium/java-spring
When running a LocalFrameContextView will pop up to show the scenario
and the step being run.
On 10/06/2013 20:42, Jie Zhang wrote:
Hi Mauro,
Thank you for follow up.
I just resolved this by using Java reflection to get the step
string value.
But..., I have another more important issue need to figure out:
My boss asked me to develop a *"Visual" GUI style* BDD function, which
uses javascript alert/confirm popup window to prompt user what is the
exact step the running test reaches, eg:
Given I goto "www.a.com <http://www.a.com>"
When I login
So we want to add *Javascript alert window to popup during the
automation test*, the popped up window has the "OK" button, so when
user click the OK button, the test will continue to the next step, and
so on...
My issue is: I wrote a javascript func using Selenium's
*executeScript *API which invoke the pop up alert window:
*public void stepText(String step){*
* executeScript("alert('"+step+"');");*
* }*
So I expect when I click the OK button, the popped up
window will disappear and test will continue to next step... *But what
shocked me is that when I click it, the test throw exception and
crashed...*
*
*
The exception is: selenium.WebDriverException
But I found if I add the following code to make the test
automatically detect the alert window and accept it by using the
following usual selenium alert handle function:
*Alert alert=switchTo().alert();*
* alert.accept();*
This can make the test runs well, so it looks *I can NOT
manually click the alert (after I manually click, the selenium still
can NOT go back to the browser...lost connection to browser?), but the
automation alert handle code works...*
Of course, *we want to let user to manually to click
alert window to control the test execution, not the automation handle
alert*.
I really got stuck here for a while, and did a lot
googling to search, but can not find similar example online, I hope
you can shed me light on it, since you are much more guru than me on
JBehave and Selenium.
I will be much grateful if you can help me out.
Kind Regards,
Brian
On Mon, Jun 10, 2013 at 1:02 PM, Mauro Talevi
<[email protected] <mailto:[email protected]>> wrote:
Hi,
if this is the case you're better off implementing a StepMonitor.
You may want to have a look at the SeleniumStepMonitor in the
jbehave-web-selenium module, which uses a ContextView to broadcast
the step being executed.
You can adapt it to your usecase.
Cheers
On 10/06/2013 16:44, Jie Zhang wrote:
Hi Mauro,
Thanks for follow up. But my goal is not to output to the
default html/text report page, I need to get the step string (as
a var) value, then I can print it on javascript alert window.
I see the StoryReporter.successful(String step) just print
the step str on the default report page, and its return type is
void, so how can I get the step str value?
I'm not sure if I explained my stuck clearly to you, if my
understanding is wrong, pls correct me, thank you very much and
waiting for your help out.
Kind Regards,
-- Brian
On Sat, Jun 8, 2013 at 7:55 AM, Mauro Talevi
<[email protected] <mailto:[email protected]>>
wrote:
That's what the StoryReporter does.
In particular, StoryReporter.successful(String step) will
provide you the successful step that's just been executed.
Have a look at CustomHtmlOutput in the jbehave-core-example
for an example of how to setup a custom reporter.
Cheers
On 07/06/2013 21:20, Jie Zhang wrote:
Hi Mauro,
I got a mission to finish by using JBehave.
Do you know how I can get the "step" 's name (its
context/text) so I can print it. Eg:
*Given I goto 'www.google.com <http://www.google.com/>'*
So what I want is I can get the "*I goto 'www.google.com
<http://www.google.com/>'*" text value, so I can print it.
Is there a JBehave API, class, method that we can use
to do this task?
Thank you and very appreciated if you can help me out!
Brian