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





Reply via email to