That appears to be because your first LI doesn't have a H2 inside of it. When 
you put one LI after another, the browser will automatically close the first 
before the second opens.

>> <ul class="items">
>> <li class="item subscriptions-description">
>> <li class="item digest-options">
>> <h2>Digest Options</h2>


Fix your HTML syntax and you should be good to go.

Michael

On 2011-Nov-07, at 6:08 AM, Joe Fleck wrote:

> No worries,
> 
> here is what I got when I ran the code:
> 
> ree-1.8.7-2010.02 :024 > section_headers = $browser.div(:class,"mod simple 
> your-subscriptions").div(:class,"bd").ul(:class,"items").lis
>  => #<Watir::LICollection:0x1044bf000 @parent=#<Watir::UList:0x1044bf0f0 
> located=false selector={:class=>"items", :tag_name=>"ul"}>, 
> @selector={:tag_name=>"li"}> 
> ree-1.8.7-2010.02 :025 > section_headers.each do|sec_hdr|
> ree-1.8.7-2010.02 :026 >     puts hdr = sec_hdr.h2.text
> ree-1.8.7-2010.02 :027?>   end
> Watir::Exception::UnknownObjectException: unable to locate element, using 
> {:tag_name=>"h2"}
>       from 
> /Users/josephfleck/.rvm/gems/ree-1.8.7-2010.02/gems/watir-webdriver-0.3.4/lib/watir-webdriver/elements/element.rb:248:in
>  `assert_exists'
>       from 
> /Users/josephfleck/.rvm/gems/ree-1.8.7-2010.02/gems/watir-webdriver-0.3.4/lib/watir-webdriver/elements/element.rb:55:in
>  `text'
>       from (irb):26
>       from 
> /Users/josephfleck/.rvm/gems/ree-1.8.7-2010.02/gems/watir-webdriver-0.3.4/lib/watir-webdriver/element_collection.rb:21:in
>  `each'
>       from 
> /Users/josephfleck/.rvm/gems/ree-1.8.7-2010.02/gems/watir-webdriver-0.3.4/lib/watir-webdriver/element_collection.rb:21:in
>  `each'
>       from (irb):25
>       from 
> /Users/josephfleck/.rvm/rubies/ree-1.8.7-2010.02/lib/ruby/site_ruby/1.8/rubygems.rb:406
> 
> If I do it this way:
> 
> ree-1.8.7-2010.02 :034 > section_headers.each do|sec_hdr|
> ree-1.8.7-2010.02 :035 >     puts hdr = sec_hdr.text
> ree-1.8.7-2010.02 :036?>   end
> 
> I get this output which at a level to high
> 
> Association CDK Sandbox provides you with all updates from the community that 
> you subscribe to in a single email, delivered weekly or daily. You can 
> customize the content of your digest and how often you want to receive it. To 
> stop receiving the digest, just set the frequency of updates to never.
> * Digest Options
> Frequency of digest:
> Weekly
> Daily
> Never
> Format of digest:
> HTML Format (images)
> Text Only
> * Community Features
> Guided Discussions
> * Member Discussion Topics
> Select the topics you're interested in to receive activity updates in those 
> areas.
> Engineering
> UX
> QA
> 
> I have starred those headers I need.
> 
> 
> 
> On Sun, Nov 6, 2011 at 9:45 PM, Michael <[email protected]> wrote:
> A second looks at your code made me think you should be using ul (singular 
> because you only have one), and append lis on the end to get all the li's 
> contained within the ul.
> 
>> My Code:section_headers = $browser.div(:class,"bd").ul(:class,"items").lis
> 
> 
> Sorry about the first response, please disregard it.
> 
> Michael
> 
> On 2011-Nov-06, at 7:40 PM, Michael wrote:
> 
>> You probably intended to use uls which will return a list of ul's instead of 
>> ul which only returns the first matching ul.
>> 
>> Try:
>>> My Code:section_headers = $browser.div(:class,"bd").uls(:class,"items")
>> 
>> 
>> Michael
>> 
>> On 2011-Nov-06, at 7:09 PM, Joe Fleck wrote:
>> 
>>> Hi Chuck,
>>> 
>>> I am still having a bit of trouble with getting a group of h2 from a page.
>>> 
>>> My Code:section_headers = $browser.div(:class,"bd").ul(:class,"items")
>>> section_headers.each do|sec_hdr|
>>> puts hdr = sec_hdr.h2.text
>>> end
>>> 
>>> I get the following error message.
>>> NoMethodError: undefined method `each' for #<Watir::UList:0x10aa117f0>
>>>     from 
>>> /Users/josephfleck/.rvm/gems/ree-1.8.7-2010.02/gems/watir-webdriver-0.3.4/lib/watir-webdriver/elements/element.rb:295:in
>>>  `method_missing'
>>>     from (irb):10
>>>     from 
>>> /Users/josephfleck/.rvm/rubies/ree-1.8.7-2010.02/lib/ruby/site_ruby/1.8/rubygems/deprecate.rb:58
>>> 
>>> 
>>> The HTML Code:
>>> <div class="mod simple your-subscriptions">
>>> <div class="inner">
>>> <div class="hd">
>>> <div class="bd">
>>> <ul class="items">
>>> <li class="item subscriptions-description">
>>> <li class="item digest-options">
>>> <h2>Digest Options</h2>
>>> <div class="line form">
>>> <div class="unit size2of5">
>>> <div class="line lastUnit size3of5">
>>> <label class="wide-label" for="digest_setting_email_format">Format of 
>>> digest:</label>
>>> <select id="digest_setting_email_format" 
>>> name="digest_setting[email_format]" data-method="put" 
>>> data-href="/digest_settings/488" data-command="change">
>>> </div>
>>> </div>
>>> </li>
>>> <li class="item community-features">
>>> <h2>Community Features</h2>
>>> <div class="line form">
>>> <input id="109" class="unit content-feed-subscribe checkbox mrm" 
>>> type="checkbox" value="content-feed-109" name="content_feed_Guided 
>>> Discussions" 
>>> data-subscription-url="/content_feeds/109/subscribe?channel_id=57" 
>>> data-content-feed-id="109">
>>> <label class="unit label-for-checkbox" for="109">Guided Discussions</label>
>>> </div>
>>> </li>
>>> <li class="item member-discussions">
>>> <h2>Member Discussion Topics</h2>
>>> <p>Select the topics you're interested in to receive activity updates in 
>>> those areas.</p>
>>> <div class="line form">
>>> <div class="unit size1of2">
>>> <div class="line checkbox-row">
>>> <input id="107" class="unit content-feed-subscribe checkbox mrm" 
>>> type="checkbox" value="content-feed-" name="content_feed_Engineering" 
>>> data-subscription-url="/content_feeds/107/subscribe?channel_id=57" 
>>> data-content-feed-id="107">
>>> <label class="unit label-for-checkbox" for="107">Engineering</label>
>>> </div>
>>> <div class="line checkbox-row">
>>> <input id="108" class="unit content-feed-subscribe checkbox mrm" 
>>> type="checkbox" value="content-feed-" name="content_feed_UX" 
>>> data-subscription-url="/content_feeds/108/subscribe?channel_id=57" 
>>> data-content-feed-id="108">
>>> <label class="unit label-for-checkbox" for="108">UX</label>
>>> </div>
>>> </div>
>>> <div class="unit size1of2 lastUnit">
>>> <div class="line checkbox-row">
>>> <input id="110" class="unit content-feed-subscribe checkbox mrm" 
>>> type="checkbox" value="content-feed-" name="content_feed_QA" 
>>> data-subscription-url="/content_feeds/110/subscribe?channel_id=57" 
>>> data-content-feed-id="110">
>>> <label class="unit label-for-checkbox" for="110">QA</label>
>>> </div>
>>> </div>
>>> </div>
>>> </li>
>>> </ul>
>>> 
>>> I just want the h2 header.
>>> 
>>> On Fri, Oct 21, 2011 at 5:07 PM, Chuck van der Linden <[email protected]> 
>>> wrote:
>>> 
>>> 
>>> On Oct 21, 10:41 am, Joe Fl <[email protected]> wrote:
>>> > Hi,
>>> >
>>> > I need to retrieve multiple discusion titles from a page. I just want
>>> > the titles only and there can be 5 to 13 on a page with other links
>>> > listed under them.  I have tried the following and it will only return
>>> > the first discussion title or all links:
>>> >
>>> > subject_lines =
>>> > $browser.div(:class,'one_col_select').div(:id,'naph').div(:id,'discussion-
>>> > board').span(:class,'discussion-title').links
>>> >
>>> > subject_lines.each do|link|
>>> >     puts title_name = link.text
>>> > end
>>> >
>>> 
>>> Your problem is that you are telling it to get all the links from
>>> within a single span.  I think what you need to do is get all the
>>> spans which contain those links, and then pull the link text, OR if
>>> the only links on the page are those of the class theme are the ones
>>> you want, then just go for the links directly
>>> 
>>> If you can go after the links, then
>>> 
>>>  subject_links = $browser.links(:class, 'theme')
>>> 
>>>  subject_links.each do|link|
>>>    puts  link.text
>>>  end
>>> 
>>> If the links are not unique enough on their own, then unless there are
>>> other spans on the page with the discussion_title class that you don't
>>> want, you need to do something more along these lines
>>> 
>>>  subjects = $browser.spans(:class,'discussion-title')
>>> 
>>>  subjects.each do|subject|
>>>    puts subject.link.text    #presumes we want first link inside the
>>> span
>>>  end
>>> 
>>> --
>>> 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]
>>> 
>>> 
>>> -- 
>>> 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]
>> 
>> 
>> -- 
>> 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]
> 
> 
> -- 
> 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]
> 
> 
> -- 
> 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]

-- 
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