Thanks a lot Justin. Your knowledge of PageObject gem is amazing. Hats Off 
to 'cheezy' too.

I have a few clarifications.

1. Just like we do plural for div, I mean divs, isnt there plural version 
for select_list i:e select_lists? Similarly buttons?
    How do we know if there is a plural version at all. I couldn't find the 
documentation.

2. If two elements have the same attribute, for example say there are 
multiple divs and multiple select lists with class name starting with 
"dwfrm_cart_shipments" 
and if we define the object as below
  
elements(:product_line_items_in_bag, :name => /^dwfrm_cart_shipments/)

Does this identify both the divs and the select_lists.
And later we pass this to a block and filter the specific element by a 
specific attribute. (Like you identified the select_list with attribute "
data_product_id"

3. With the attribute "data_product_id", is there a reason you have used 
underscore(_) instead of hyphens (-)

4. Could you please explain the use of "map(&:text)" called on elements?

Thanks in advance

On Thursday, 12 July 2018 04:13:21 UTC+10, Justin Ko wrote:
>
> The accessors do not provide a mechanism for filtering the element 
> collection. In other words, the exception is from 
> `product_line_items_in_bag_elements(:"data-product-id" => '9350486827327')`.
>
> You can filter the elements manually using `#find`:
>
> class MyPage
>   include PageObject
>
>   elements(:product_line_items_in_bag, :name => /^dwfrm_cart_shipments/) # 
> note that you need a regex here
> end
>
> page = MyPage.new(browser)
> products = page.product_line_items_in_bag_elements
> product = products.find { |e| e.data_product_id == '9351533670743' }
> product.select('2')
>
> However, it'd be easier to skip the accessor and define a method. This 
> allows locating the select list directly, which can save execution time.
>
> class MyPage
>   include PageObject
>
>   def product_element(product_id)
>     browser.select_list(data_product_id: product_id)
>   end
> end
>
> Justin
>
>
> On Wednesday, July 11, 2018 at 6:22:20 AM UTC-4, NaviHan wrote:
>>
>> Hi Justin/Titus
>>
>> There is a correction in the html code
>>
>> <div class="row cart-product-row ">
>> ----
>> ----
>> ----
>> <select class="input-select has-value custom-input valid" 
>> id="dwfrm_cart_shipments_i0_items_i0_quantity" 
>> name="dwfrm_cart_shipments_i0_items_i0_quantity" 
>> data-product-id="9350486558733" data-item-position="1" aria-invalid="false">
>>
>>
>> <option value="2">2</option>
>>
>> <option value="3">3</option>
>>
>> <option value="4">4</option>
>>
>> <option value="5">5</option>
>>
>> <option value="6">6</option>
>>
>> <option value="7">7</option>
>>
>> <option value="8">8</option>
>>
>> <option value="9">9</option>
>>
>> <option value="10">10</option>
>>
>> <div class="row cart-product-row ">
>> ----
>> ----
>> ----
>> <select class="input-select has-value custom-input" 
>> id="dwfrm_cart_shipments_i0_items_i1_quantity" 
>> name="dwfrm_cart_shipments_i0_items_i1_quantity" 
>> data-product-id="9351533670743" data-item-position="2">
>>
>>
>> <option value="2">2</option>
>>
>> <option value="3">3</option>
>>
>> <option value="4">4</option>
>>
>> <option value="5">5</option>
>>
>> <option value="6">6</option>
>>
>> <option value="7">7</option>
>>
>> <option value="8">8</option>
>>
>> <option value="9">9</option>
>>
>> <option value="10">10</option>
>>
>> <div class="row cart-product-row ">
>> ----
>> ----
>> ----
>> <select class="input-select has-value custom-input valid" 
>> id="dwfrm_cart_shipments_i0_items_i2_quantity" 
>> name="dwfrm_cart_shipments_i0_items_i2_quantity" 
>> data-product-id="9351533671290" data-item-position="3" aria-invalid="false">
>>
>>
>> <option value="2">2</option>
>>
>> <option value="3">3</option>
>>
>> <option value="4">4</option>
>>
>> <option value="5">5</option>
>>
>> <option value="6">6</option>
>>
>> <option value="7">7</option>
>>
>> <option value="8">8</option>
>>
>> <option value="9">9</option>
>>
>> <option value="10">10</option>
>>
>>
>>
>> On Tuesday, 3 July 2018 21:48:19 UTC+10, NaviHan wrote:
>>>
>>> This is my first post here. Apologies if there is a mistake.
>>>
>>> I have a section of a page as attached in the pic.
>>>
>>>
>>> The html code for the section is as follows
>>> Enter code here...<div class="small-12 applied-evouchers">
>>> <div class="row applied-voucers-list">
>>> <div class="small-6">
>>> <span>9830318220466018</span>
>>> </div>
>>> <div class="small-6 small-text-right"> 
>>> <button type="button" class="remove-gift-cert" 
>>> data-gift-id="9830318220466018">
>>> <span class="icon icon-cross-standard-small-black"></span>
>>> <span class="underline remove-evoucher-button-text">Remove</span>
>>> </button>
>>> </div>
>>> </div>
>>> <hr>
>>> <div class="row applied-voucers-list">
>>> <div class="small-6">
>>> <span>9831228610400260</span>
>>> </div>
>>> <div class="small-6 small-text-right"> 
>>> <button type="button" class="remove-gift-cert" 
>>> data-gift-id="9831228610400260">
>>> <span class="icon icon-cross-standard-small-black"></span>
>>> <span class="underline remove-evoucher-button-text">Remove</span>
>>> </button>
>>> </div>
>>> </div>
>>> <hr>
>>> </div>
>>>
>>> I need to assert two value here
>>>
>>> 1. The vouchers applied, which are 9830318220466018 & 9831228610400260
>>> 2. The span "Remove"
>>>
>>> The issue Im facing is as these two divs are identical and 1 & 2 doesnt 
>>> have a unique identifier I cannt locate them using PageObjects.
>>>
>>> I can locate the element using the following Java script
>>> document.getElementsByClassName('applied-voucers-list')[0].innerText;
>>> This returns 
>>> Enter code here..."9830318220466018
>>> Remove
>>> "
>>>
>>> I tried to capture this with the code
>>> Enter code here...@var = 
>>> @browser.execute_script("document.getElementsByClassName('applied-voucers-list')[0].innerText;")
>>>
>>> This isnt working
>>>
>>> Any clue?
>>>
>>>

-- 
-- 
Before posting, please read 
https://github.com/watir/watir_meta/wiki/Guidelines-for-Posting-to-Watir-General-Google-Group.
 
In short: search before you ask, be nice.

[email protected]
http://groups.google.com/group/watir-general
[email protected]
--- 
You received this message because you are subscribed to the Google Groups 
"Watir General" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to