Hi Titus and Justin
"wait_for_ajax" did the job :-) I used it only at places where the spinner
loading caused problem. Im curios where to put the code blok Titus provided
in the hooks.rb file
My hooks look like this.
@Justin, Im curios to know why you asked if Im sure that the timing issue
was resolved using the jQuery statement. Are these kind of issues caused by
something else?
require 'rubygems'
require 'page-object'
require 'watir'
require 'page-object/page_factory'
require 'log4r'
require 'cucumber'
require 'selenium-webdriver'
require 'fig_newton'
Before do|scenario|
case ENV["TEST_ENV"]
when 'dev'
begin
ENV['HTTP_PROXY'] = ENV['http_proxy'] = nil
@browser = Watir::Browser.new :chrome
@browser.window.maximize
@browser.driver.manage.timeouts.implicit_wait = 300
@browser.cookies.clear
@browser.driver.manage.window.maximize
PageObject.default_element_wait=(10)
FigNewton.load( "#{ENV["TEST_ENV"]}" + ".yml")
PageObject.javascript_framework = :jquery
end
when 'dev04'
begin
ENV['HTTP_PROXY'] = ENV['http_proxy'] = nil
@browser = Watir::Browser.new :chrome
@browser.window.maximize
@browser.driver.manage.timeouts.implicit_wait = 300
@browser.cookies.clear
@browser.driver.manage.window.maximize
PageObject.default_element_wait=(10)
FigNewton.load( "#{ENV["TEST_ENV"]}" + ".yml")
PageObject.javascript_framework = :jquery
end
else
ENV['HTTP_PROXY'] = ENV['http_proxy'] = nil
@browser = Watir::Browser.new :chrome
@browser.window.maximize
@browser.driver.manage.timeouts.implicit_wait = 300
@browser.cookies.clear
@browser.driver.manage.window.maximize
PageObject.default_element_wait=(10)
FigNewton.load( "dev04.yml")
PageObject.javascript_framework = :jquery
end
end #before scenario
# "after all"
After do |scenario|
@browser.driver.quit
if (scenario.passed?)
puts 'Scenario Passed !'
else
puts 'Scenario Failed !'
end
end
AfterStep('@screen') do
filename = DateTime.now.strftime("%d%b%Y%H%M%S")
@browser.screenshot.save
("C:/Users/lohit.kotian/Documents/Automation/screenshots-cucumber/#{filename}.png")
#@browser.screenshot.save
("C:/Jenkins/workspace/screenshots-cucumber/#{filename}.png")
end
Around('@multipletimes') do |scenario, block|
$counter = 0
$total_times_to_run = 6
while $counter < $total_times_to_run do
block.call
puts("Total times scripts were repeated = #$counter" )
$counter +=1
end
end
After do |scenario|
take_screenshot(@browser, scenario)
end
# need to check this code for the full page screenshots as a part of the
enhancement
def take_screenshot(browser, scenario)
time = Time.now.strftime("%Y-%m-%d_%H%M")
if scenario.failed?
scenario_name = scenario.name.gsub(/[^\w\-]/, ' ')
screenshot_path = "#{scenario_name}" + "_failure_" + time
@browser.screenshot.save("./screenshots/#{screenshot_path}.png")
end
end
I would require your help to clear my doubts about "wait while" and "wait
until". I see this is something extensively used in out project but no one
has a clear answer.A grep gave me this
./features/support/pages/Frontend/COG/Checkout_Page.rb: Watir::Wait.while
{order_summ_content_element.visible?}
./features/support/pages/Frontend/COG/Paypal_Page.rb: Watir::Wait.while {
paypal_logo_element.visible?}
./features/support/pages/Frontend/COG/Paypal_Page.rb: Watir::Wait.while {
paypal_spinner_element.visible?}
./features/support/pages/Frontend/COG/Pdp_Page.rb: if Watir::Wait.while {
olapped_sm_window_element.visible?}
./features/support/pages/Frontend/COG/Pdp_Page.rb: # Watir::Wait.while
{stores_elements[9].visible?}
./features/support/pages/Frontend/COG/Pdp_Page.rb: Watir::Wait.while {
stores_elements[9].visible?}
./features/support/pages/Frontend/COG/Thankyou_Page.rb: return Watir::
Wait.while {@browser.text.include?('Did you enjoy your shopping experience
today')}
And Wait.until is used everywhere and the list is huge
./features/support/pages/Frontend/COG/Pdp_Page.rb: #
Watir::Wait.until {check_stores_element}.click
./features/support/pages/Frontend/COG/Pdp_Page.rb: #return
Watir::Wait.until {el}.parent(:index => 1).attribute('class') if
el.text.include? "#{size}"
./features/support/pages/Frontend/COG/Pdp_Page.rb: #return
Watir::Wait.until {el}.parent.attribute('class') if
el.span_element.text.include? "#{size}"
./features/support/pages/Frontend/COG/Pdp_Page.rb: #return
Watir::Wait.until {search_string_element}.attribute('value')
./features/support/pages/Frontend/COG/Pdp_Page.rb: #return
Watir::Wait.until {search_string_element}.attribute('value')
./features/support/pages/Frontend/COG/Pdp_Page.rb: @succ_txt = Watir
::Wait.until {pdp_success_msg_block_element}.text
./features/support/pages/Frontend/COG/Pdp_Page.rb: Watir::Wait.until(
timeout: 30){add_to_bag_element.enabled?}
./features/support/pages/Frontend/COG/Search_Page.rb: Watir::Wait.
until {search_field_element}.when_present.clear
./features/support/pages/Frontend/COG/Search_Page.rb: Watir::Wait.
until {search_field_element}.when_present.click
./features/support/pages/Frontend/COG/Search_Page.rb: Watir::Wait.
until {search_field_element}.when_present.set(arg)
On Friday, 3 August 2018 15:12:45 UTC+10, NaviHan wrote:
>
> I have a functionality where I click an a link from an email a voucher
> gets added to the shopping cart and a pop up appears with a message. Im
> trying to assert the text in the popup
> I have defined the element as
>
> div(:cta_description, :css => '.homepage-clicktoactiavte-description')
>
> Tried to use a mix of Watir and Pageobejct to read the text. The below
> code works 5 out of 10 times.
>
> @rewards_popup_txt = Watir::Wait.until{cta_description_element}.text
> @rewards_popup_txt = @rewards_popup_txt.gsub(/[^$,.A-Za-z0-9]/," ")
> return @rewards_popup_txt
>
>
> Tried using, which doesnt even set the @reward_popup_txt and shows error
>
>
> if (Watir::Wait.while {cta_description_element.visible?})
> @rewards_popup_txt = cta_description_element.text
> end
> @rewards_popup_txt = @rewards_popup_txt.gsub(/[^$,.A-Za-z0-9]/," ")
> return @rewards_popup_txt
>
> Error
> NoMethodError: undefined method `gsub' for nil:NilClass
> ./features/support/pages/Frontend/Cotton_On/Loyalty_Page.rb:22:in `
> rewards_popup_description'
>
> Any stable way to do the job?
>
--
--
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.