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]
