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.

watir-general@googlegroups.com
http://groups.google.com/group/watir-general
watir-general+unsubscr...@googlegroups.com
--- 
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 watir-general+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to