see idebugsettings.setoutputcomponentpath, this will add
wicket:path='component's page relative path' attribute which is stable
as long as you do not change the hierarchy and can be used for writing
selenium tests.

-igor

On Thu, Oct 15, 2009 at 4:14 AM, Per Lundholm <per.lundh...@gmail.com> wrote:
> Looks like a patch to make it easier to use Selenium to test your
> webapplication.
>
> Selenium is very fond of id in tags.
>
> /Per
>
> On Thu, Oct 15, 2009 at 9:58 AM, Daniel Frisk <dan...@jalbum.net> wrote:
>> Ok, I'm lazy and couldn't decipher that code at a glance. What does it do?
>>
>> // Daniel
>> jalbum.net
>>
>>
>>
>> On 2009-10-15, at 03:09, Douglas Ferguson wrote:
>>
>>> Has anybody seen this:
>>>
>>> http://www.onehippo.org/cms7/integration_testing.html
>>>
>>> Seems like a nice alternative vs. having to set markupIds on all
>>> components.
>>>
>>> Thoughts?
>>>
>>> ............
>>>
>>> They have a patch for wicket:
>>>
>>>> Index: jdk-1.4/wicket/src/main/java/org/apache/wicket/Session.java
>>>> ===================================================================
>>>> *** jdk-1.4/wicket/src/main/java/org/apache/wicket/Session.java
>>>> (revision 724306)
>>>> --- jdk-1.4/wicket/src/main/java/org/apache/wicket/Session.java
>>>> (working copy)
>>>> ***************
>>>> *** 1475,1478 ****
>>>> --- 1475,1489 ----
>>>>        {
>>>>                return sequence++;
>>>>        }
>>>> +
>>>> +       /**
>>>> +        * Retrieves the next available session-unique value for the
>>>> supplied Component
>>>> +        *
>>>> +        * @param component
>>>> +        *            the component which requests the generation of a
>>>> markup identifier
>>>> +        * @return session-unique value
>>>> +        */
>>>> +       public Object getMarkupId(Component component) {
>>>> +               return new Integer(nextSequenceValue());
>>>> +       }
>>>>  }
>>>> Index: jdk-1.4/wicket/src/main/java/org/apache/wicket/Component.java
>>>> ===================================================================
>>>> *** jdk-1.4/wicket/src/main/java/org/apache/wicket/Component.java
>>>> (revision 724306)
>>>> --- jdk-1.4/wicket/src/main/java/org/apache/wicket/Component.java
>>>> (working copy)
>>>> ***************
>>>> *** 1426,1437 ****
>>>>                        return null;
>>>>                }
>>>>
>>>> !               final int generatedMarkupId = storedMarkupId instanceof
>>>> Integer
>>>> !                       ? ((Integer)storedMarkupId).intValue() :
>>>> Session.get
>>>> ().nextSequenceValue();
>>>> !
>>>> !               if (storedMarkupId == null)
>>>> !               {
>>>> !                       setMarkupIdImpl(new Integer(generatedMarkupId));
>>>>                }
>>>>
>>>>                // try to read from markup
>>>> --- 1426,1445 ----
>>>>                        return null;
>>>>                }
>>>>
>>>> !               String markupIdPostfix;
>>>> !               if (!(storedMarkupId instanceof Integer)) {
>>>> !                       Object markupIdFromSession =
>>>> Session.get().getMarkupId(this);
>>>> !                       if (storedMarkupId == null && markupIdFromSession
>>>> != null) {
>>>> !                               setMarkupIdImpl(markupIdFromSession);
>>>> !                       }
>>>> !                       storedMarkupId = markupIdFromSession;
>>>> !               }
>>>> !               if (storedMarkupId instanceof Integer) {
>>>> !                       markupIdPostfix = Integer.toHexString(((Integer)
>>>> storedMarkupId).intValue()).toLowerCase();
>>>> !               } else if (storedMarkupId instanceof String) {
>>>> !                       return (String) storedMarkupId;
>>>> !               } else {
>>>> !                       markupIdPostfix = storedMarkupId.toString();
>>>>                }
>>>>
>>>>                // try to read from markup
>>>> ***************
>>>> *** 1449,1455 ****
>>>>                        markupIdPrefix = getId();
>>>>                }
>>>>
>>>> -               String markupIdPostfix = Integer.toHexString
>>>> (generatedMarkupId).toLowerCase();
>>>>                markupIdPostfix = RequestContext.get().encodeMarkupId
>>>> (markupIdPostfix);
>>>>
>>>>                String markupId = markupIdPrefix + markupIdPostfix;
>>>> --- 1457,1462 ----
>>>
>>>
>>> Then in their session, they return stable ids
>>>
>>>>   private Map<String,Integer> pluginComponentCounters = new
>>>> HashMap<String,Integer>();
>>>>
>>>>   // Do not add the @Override annotation on this
>>>>   public Object getMarkupId(Component component) {
>>>>       String markupId = null;
>>>>       for (Component ancestor=component.getParent(); ancestor!
>>>> =null && markupId==null; ancestor=ancestor.getParent()) {
>>>>           if (ancestor instanceof IPlugin || ancestor instanceof
>>>> Home) {
>>>>               markupId = ancestor.getMarkupId(true);
>>>>               break;
>>>>           }
>>>>       }
>>>>       if (markupId == null) {
>>>>           return "root";
>>>>       }
>>>>       int componentNum = 0;
>>>>       if (pluginComponentCounters.containsKey(markupId)) {
>>>>           componentNum = pluginComponentCounters.get
>>>> (markupId).intValue();
>>>>       }
>>>>       ++componentNum;
>>>>       pluginComponentCounters.put(markupId, new Integer
>>>> (componentNum));
>>>>       return markupId + "_" + componentNum;
>>>>   }
>>>> }
>>>
>>>
>>> ---------------------------------------------------------------------
>>> To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org
>>> For additional commands, e-mail: users-h...@wicket.apache.org
>>>
>>
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org
>> For additional commands, e-mail: users-h...@wicket.apache.org
>>
>>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org
> For additional commands, e-mail: users-h...@wicket.apache.org
>
>

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org
For additional commands, e-mail: users-h...@wicket.apache.org

Reply via email to