[Kss-devel] Selenuim tests - some (general) considerations
Simone Deponti
shywolf9982 at gmail.com
Mon Mar 31 19:32:24 CEST 2008
Hello list,
I was trying to make a good selenium test for Plone workflow changes, and I
discovered some interesting things that I would like to share.
Probably everyone of you knew these things already, but I think it is very
useful to write them somewhere (I will merge this into the tutorial Beppe
was making, too):
1. It is better to always revise the selectors that Selenium generates: this
is because sometimes it generates selectors that look like this:
//dl[@id'plone-contentmenu-workflow']/dt/a/span[2]
where something like
//dl[@id'plone-contentmenu-workflow']//a/span[@class='state-private']
would be much better as it doesn't break if someone changes the dt into a dd
or moves changes the span order.
Also, if you have an id, it is better to do something like
//$element_tag[@id=$element_id]/$all_the_rest
by keeping the id in the beginning of the xpath selector and then travel
down for things that don't have an id. Don't use two id selectors in the
same xpath, because it's stupid and will make the test break on UI changes.
2. Don't use clickAndWait if there is no page reloading, because Selenium
clearly states that that command will wait for a page reload. Use instead a
click and waitFor* command.
3. Don't just text just for element existence: assertVisible and
waitForVisible are necessary in a lot of cases.
4. If, for example, you have some code like this:
<a id="mylink"
href="some/url">
<span>My text</span>
</a>
Don't issue a click command on #mylink but issue it
on //a[@id="mylink"]/span. This is because the user will most likely link
on the text (so, the span) and not on the a element. Clicking on the a
element might masquerade bubbling issues as is the case for Plone workflow
changes.
I think that is all: if you want something to take as example you can take a
look at
https://svn.plone.org/svn/plone/plone.app.kss/branches/1.4-kss-test/plone/app/kss/demo/selenium_tests/run_as_testmanager/workflow_transition.html
Hope this information was useful :)
--
Simone Deponti (shywolf9982)
More information about the Kss-devel
mailing list