I used jQuery to fill these radios at one point:
$("input[type=radio]").attr("checked", "checked") :)

But the problem was in the end that you clicked on the "li", but you had to
click on the link inside of the li. This code works for me:

require "watir"
b = Watir::Browser.attach :url, //
b.link(:id => "launchIndustry").click
b.li(:id => "industry_Basic_Materials").when_present.a.click

Jarmo

On Mon, Aug 29, 2011 at 8:51 PM, M <[email protected]> wrote:

> Sorry for the long registration...  :) , I normally just tab and enter to
> fill the personality radios...sorry
> all the ul and li are dynamically generated by the server (jquery). so they
> will not be there until the user clicks on the first link, and then the next
> list will appear and the user will choose from it and so on. I'll try to add
> the timing issue and see what happens.
>
> I'll keep you posted.
>
> Thanks
>
>
> On Mon, Aug 29, 2011 at 10:42 AM, Jarmo <[email protected]> wrote:
>
>> The registration process was too tedious :(
>>
>> By looking at you html then indeed, the ul is empty. As long as it's empty
>> then you can't find the li :) Are you sure that the li should be there?
>> Maybe it's a timing issue. Try something like this:
>> # do something to trigger the popup
>> wait_until {div(:id => "industry").ul.lis.size > 0}
>>
>> What happens? Can you see that the list is filled and does it still
>> timeout? Anyway, i suspect it is a timing issue - just find out some nice
>> way to say to Watir that "wait as long as this condition is met meaning that
>> the list is loaded properly". As long as the ul is empty and there should be
>> li-s in there, Watir can't find the li's. Also, remember that Watir does
>> most of the things a lot faster than you can do manually and having
>> JavaScript in the game means that there could be some race conditions.
>>
>> Good luck!
>>
>> Jarmo
>>
>> On Mon, Aug 29, 2011 at 7:46 PM, M <[email protected]> wrote:
>>
>>> I am attaching the page.html.
>>> I replaced the click_no_wait with click. ie.wait_until
>>> {container.present?} means that I am waiting for the view of the screenshot
>>> to be visible.
>>> Also if you want to see a real example, you can go to:
>>> http://qa.jobsync.com/
>>> and sign up for a new account. During the registration process you'll
>>> have to go through that page. "Experience section"
>>>
>>>
>>> Thanks for the help
>>>
>>>
>>> On Mon, Aug 29, 2011 at 9:27 AM, Jarmo <[email protected]> wrote:
>>>
>>>> I'm not sure that #click_no_wait is needed. Send me the actual html code
>>>> instead. Do it somehow like this:
>>>> ie.link(:id, "launchIndustry").click_no_wait # this bottom is to launch
>>>> the form - attached
>>>> container = ie.div(:id, "industry")
>>>> ie.wait_until {container.present?} # does this mean that the view on the
>>>> screenshot is visible now?
>>>> File.open("page.html", "w") {|f| f.puts ie.html}
>>>>
>>>> Now, send us the "page.html" :)
>>>>
>>>> Jarmo
>>>>
>>>>
>>>> On Mon, Aug 29, 2011 at 7:18 PM, M <[email protected]> wrote:
>>>>
>>>>> Thanks Jarmo,
>>>>>
>>>>> I tried to use your solutions with no luck - i still can't locate the
>>>>> elements. Here is my code and the HTML code, I also attached a screen shot
>>>>> of the page so you know the type of pop up that I am dealing with. any 
>>>>> help
>>>>> is appreciated
>>>>>
>>>>> ie.link(:id, "launchIndustry").click_no_wait # this bottom is to launch
>>>>> the form - attached
>>>>> container = ie.div(:id, "industry")
>>>>> ie.wait_until {container.present?}
>>>>> ie.li(:id => "industry_Technology_&_Internet").when_present.click
>>>>> ie.li(:id => "supersector_Technology_&_Internet").when_present.click
>>>>> ie.li(:id => "sector_Software_&_Computer_Services").when_present.click
>>>>> ie.li(:id => "subsector_Computer_&_IT_Services").when_present.click
>>>>> ie.button(:src, /btn_continueHover.png/).click
>>>>> puts 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX DONE page1
>>>>> X1XXXXXXXXXXXXXXXXXXXXXXXXXXXX'
>>>>> ie.li(:id => "busiArea_IT_/_Engineering").when_present.click
>>>>> ie.li(:id => "funcArea_Information_Technology").when_present.click
>>>>> ie.li(:id => "specFunction_Software_Engineering").when_present.click
>>>>> ie.button(:src, /btn_continueHover.png/).click
>>>>> puts 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX DONE page2
>>>>> X1XXXXXXXXXXXXXXXXXXXXXXXXXXXX'
>>>>>
>>>>>
>>>>> HTML Code: Notice that the UL and IL are empty.
>>>>>
>>>>> <div id="overlay" class="hidden">
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>   <div id="industry" class="modal hidden">
>>>>>
>>>>>           <form action="#" method="post" class="active" 
>>>>> id="industryModalForm">
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>                   <div class="page1 clearfix">
>>>>>                   <h2 style="background: 
>>>>> url(/static/images/blue_gradient.png) repeat-x;font-size: 
>>>>> 1.5em;margin-bottom: 0;padding-top: 9px;padding-bottom: 0px;"><a href="#" 
>>>>> class="industryModalClose" style="float: right;padding-right: 10px;"><a 
>>>>> href="#" class="industryModalClose" style="float: right;padding-right: 
>>>>> 10px;"><img src="/static/images/icon_modal_close.png" 
>>>>> alt="close"/></a>Select Industry<span>Page 1 of 2</span></h2>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>                           <p class="heading">Please specify the industry 
>>>>> and sector for <strong class="company"></strong> by making a selection in 
>>>>> <em>all four boxes</em>. A company's sector is determined by its source 
>>>>> of revenue or where it generates most of its revenue.</p>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>                           <dl class="first" id="primary_list" 
>>>>> style="padding-left: 15px;">
>>>>>
>>>>>                                   <dt>Primary Industry</dt>
>>>>>                                   <dd>
>>>>>                                           <ul>
>>>>>                                           </ul>
>>>>>
>>>>>                                   </dd>
>>>>>                           </dl>
>>>>>                           <dl id="supersector_list">
>>>>>
>>>>>                                   <dt>Supersector</dt>
>>>>>                                   <dd>
>>>>>                                           <ul>
>>>>>
>>>>>                                           </ul>
>>>>>                                   </dd>
>>>>>                           </dl>
>>>>>                           <dl id="sector_list">
>>>>>
>>>>>                                   <dt>Sector</dt>
>>>>>
>>>>>                                   <dd>
>>>>>                                           <ul>
>>>>>
>>>>>                                           </ul>
>>>>>                                   </dd>
>>>>>                           </dl>
>>>>>                           <dl id="subsector_list">
>>>>>
>>>>>                                   <dt>Subsector</dt>
>>>>>                                   <dd>
>>>>>
>>>>>                                           <ul>
>>>>>
>>>>>                                           </ul>
>>>>>                                   </dd>
>>>>>                           </dl>
>>>>>                           <div class="buttons" style="margin: 0px 0px 
>>>>> 10px;padding-left: 20px;width: 100%;">
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>                                   <input type="image" 
>>>>> src="/static/images/btn_continueDisabled.png" alt="Continue" height="39" 
>>>>> width="113" disabled>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>                                   <a href="#" class="goback" style="left: 
>>>>> 170px;top: -8px;">Cancel</a>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>                           </div>
>>>>>
>>>>>                   </div>
>>>>>                   <div class="page2 hidden clearfix">
>>>>>
>>>>>                   <h2 style="background: 
>>>>> url(/static/images/blue_gradient.png) repeat-x;font-size: 
>>>>> 1.5em;margin-bottom: 0;padding-top: 9px;padding-bottom: 0px;"><a href="#" 
>>>>> class="industryModalClose" style="float: right;padding-right: 10px;"><img 
>>>>> src="/static/images/icon_modal_close.png" alt="close"/></a>Select 
>>>>> Function<span>Page 2 of 2</span></h2>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>                           <p class="heading">Please specify the function 
>>>>> of the <strong class="title"></strong> position by making a selection in 
>>>>> <em>all three boxes</em>.</p>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>                           <dl class="first" id="busiArea_list" 
>>>>> style="padding-left: 20px;">
>>>>>
>>>>>                                   <dt>Broad Area</dt>
>>>>>                                   <dd>
>>>>>                                           <ul>
>>>>>
>>>>>                                           </ul>
>>>>>                                   </dd>
>>>>>                           </dl>
>>>>>                           <dl id="funcArea_list">
>>>>>
>>>>>                                   <dt>Specific Area</dt>
>>>>>
>>>>>                                   <dd>
>>>>>                                           <ul>
>>>>>
>>>>>                                           </ul>
>>>>>                                   </dd>
>>>>>                           </dl>
>>>>>                           <dl id="specFunction_list">
>>>>>
>>>>>                                   <dt>Specific Function</dt>
>>>>>                                   <dd>
>>>>>
>>>>>                                           <ul>
>>>>>
>>>>>                                           </ul>
>>>>>                                   </dd>
>>>>>                           </dl>
>>>>>                           <div class="buttons" style="margin: 0px 0px 
>>>>> 10px;padding-left: 20px;width: 100%;">
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>                                   <input type="image" 
>>>>> src="/static/images/btn_continueDisabled.png" alt="Save" height="39" 
>>>>> width="183" disabled id="finishModal">
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>                                   <a href="#" class="goback" style="left: 
>>>>> 170px;top: -8px;">Cancel</a>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>                           </div>
>>>>>
>>>>>                   </div>
>>>>>                   <input type="hidden" name="key" 
>>>>> value="4e57f6bb8264ee1de0000000">
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>           </form>
>>>>>   </div>
>>>>> </div>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>> Thanks
>>>>>
>>>>>
>>>>>
>>>>> On Sun, Aug 28, 2011 at 1:39 AM, Jarmo <[email protected]> wrote:
>>>>>
>>>>>> It seems to me that you're trying to locate "li" inside wrong
>>>>>> container. Of course i can't see the whole html code, but at first you're
>>>>>> checking that the container exists like this:
>>>>>> ie.div.dl(:id, "container_dl").exists?
>>>>>>
>>>>>> And then you're doing like this:
>>>>>> ie.div.li(:id, "firstLink").exists?
>>>>>>
>>>>>> I'm not sure that the problem is in this line, but what if you'd try
>>>>>> to do something like this instead:
>>>>>> container = ie.div.dl(:id, "container_dl")
>>>>>> ie.wait_until {container.exists?} # or maybe use #present? instead of
>>>>>> #exists? to make sure that the container is also visible if it should 
>>>>>> be...
>>>>>>
>>>>>> container.li(:id, "firstLink").when_present.click
>>>>>>
>>>>>> If that line fails then try to access that li directly, since "id"
>>>>>> attribute *should* be unique within the page anyway:
>>>>>> ie.li(:id, "firstLink").when_present.click
>>>>>>
>>>>>> If that fails too then you have frames on the page or the li doesn't
>>>>>> have that id... use something like this for debugging:
>>>>>> puts ie.div(id, "industry").ul.html
>>>>>>
>>>>>> Sorry, can't help any more if you don't provide the whole html code
>>>>>> and your Watir code too.
>>>>>>
>>>>>> Jarmo
>>>>>>
>>>>>>
>>>>>> On Sat, Aug 27, 2011 at 6:10 PM, M <[email protected]> wrote:
>>>>>>
>>>>>>> Sorry to email you about this issue, I asked the question in Watir
>>>>>>> discussion group but with no help or replies at all.
>>>>>>>
>>>>>>> how do I select li link with id from a jquery dynamic list. Can this
>>>>>>> be done in watir??
>>>>>>> Using Watir 2.0, Ruby 1.8.7:
>>>>>>>
>>>>>>> require "rubygems"
>>>>>>> require "watir"
>>>>>>> require "firewatir"
>>>>>>> ie=Watir::IE.new
>>>>>>>
>>>>>>> I have a dynamic Div that contains
>>>>>>> <div id="industry" class="modal">
>>>>>>> <dl id="SomeID" class="first">
>>>>>>> <dt>someText</dt>
>>>>>>> <dd>
>>>>>>> <ul>
>>>>>>> <li id="someID1">
>>>>>>> <a href="#" class="selected">someText</a>
>>>>>>> <li id="someID2">
>>>>>>> <a href="#">SomeText</a>
>>>>>>>
>>>>>>> This list is in a modal "jquery pop up form". So I want to click on
>>>>>>> any <li>. and after I click on the link, another set of <li>'s will
>>>>>>> appear, that I need to select from as well. So my problem is how to
>>>>>>> select the li even though they are not in the page, because they are
>>>>>>> dynamically generated by the server based on the user click. Also do
>>>>>>> I
>>>>>>> need to wait for it to load. I am a Watir newbie so please the more
>>>>>>> detail the better.
>>>>>>>
>>>>>>> Here is my current code:
>>>>>>>
>>>>>>> #this will launch the jquery form successfully
>>>>>>> ie.link(:id, "launchIndustry").click_no_wait
>>>>>>>
>>>>>>> #this is the <dl> that contain all the <li>'s
>>>>>>> ie.wait_until {ie.div.dl(:id, "container_dl").exists? }
>>>>>>> puts ie.div.dl(:id, 'container_dl').exists? # good up to here
>>>>>>>
>>>>>>> ie.wait_until {ie.div.li(:id, "firstLink").exists? }
>>>>>>> ie.div(:id => "industry").li(:id => "firstLink").click
>>>>>>>
>>>>>>> The error that I get is:
>>>>>>>
>>>>>>> timed out after 60 seconds, which means that the script can't the
>>>>>>> first li element. Please help, because I have to select these options
>>>>>>>
>>>>>>> before I can move forward as it's a required field.
>>>>>>>
>>>>>>> Any help is appreciated.
>>>>>>>
>>>>>>> Thanks
>>>>>>>
>>>>>>>
>>>>>>
>>>>>
>>>>
>>>
>>
>

-- 
Before posting, please read http://watir.com/support. In short: search before 
you ask, be nice.

[email protected]
http://groups.google.com/group/watir-general
[email protected]

Reply via email to