Below are all the moving parts...
implementation:
require 'rubygems'
require_relative 'WatirToolbox'
# Create a new WatirToolbox object
toolbox = WatirToolbox.new
# Initialize the browser using the toolbox
browser = toolbox.init
# Tell the toolbox to navigate to "prod"
browser = toolbox.navigateTo(browser, "prod")
# Tell the toolbox to login as inputUsernameHere and click the contributor
site
browser = toolbox.loginAs(browser, "inputUsernameHere",
"inputPasswordHere", "Contributor")
# Tell the toolbox to create new content of the type Article
browser = toolbox.createNewContent(browser, "Article")
# Tell the toolbox to check in the asset with a comment of 'Test Publish'
#browser = toolbox.checkinAsset(browser, 'Test Publish') # *fails on this
line*
Definitions:
def init()
browser = Watir::Browser.new
return browser
end
def navigateTo(browser, env)
case env.upcase
when "PROD"
browser.goto "test.com"
else
puts "You passed in #{env} -- I have no idea what to do with that."
puts "Valid parameters are:"
puts "Prod; Rest to be determined"
end
return browser
end
def loginAs(browser, username, password, appID)
browser.text_field(:name => 'username').set username
sleep 1
browser.text_field(:name => 'password').set password
sleep 1
browser.form(:id, 'fm1').submit
sleep 1
browser.text_field(:class => 'dijitInputInner').wait_until_present
browser.text_field(:class => 'dijitInputInner').set "News\n"
sleep 1
begin
browser.div(:xpath, '//*[@id="appBar"]').when_present.focus
browser.div(:xpath, '//*[@id="appBar"]').div.div.link(:title,
appID).when_present.fire_event("onmousedown")
browser.div(:xpath, '//*[@id="appBar"]').div.div.link(:title,
appID).when_present.fire_event("onmouseup")
rescue => e
p e.message
p e.backtrace
puts "appID #{appID} may not be a valid input. Please review WatirToolbox
documentation for valid input for this field."
end
return browser
end
def createNewContent(browser, type)
sleep 5
#Click on Content
until browser.frame(:src,
'../../ContentServer?pagename=fatwire/wem/integration/processWemRequest&application=uc1').frame(:id,
'contentPane_view-3').text_field(:name => 'flexassets:name').present?
browser.frame(:src,
'../../ContentServer?pagename=fatwire/wem/integration/processWemRequest&application=uc1').div(:text,
'Content').wait_until_present
browser.frame(:src,
'../../ContentServer?pagename=fatwire/wem/integration/processWemRequest&application=uc1').div(:text,
'Content').hover
sleep 1
#Click on New
if browser.frame(:src,
'../../ContentServer?pagename=fatwire/wem/integration/processWemRequest&application=uc1').td(:text,
'New').present?
browser.frame(:src,
'../../ContentServer?pagename=fatwire/wem/integration/processWemRequest&application=uc1').td(:text,
'New').hover
browser.frame(:src,
'../../ContentServer?pagename=fatwire/wem/integration/processWemRequest&application=uc1').td(:text,
'New').click
sleep 1
end
#Click on New #{type} where type is a valid WCM Asset type
begin
if browser.frame(:src,
'../../ContentServer?pagename=fatwire/wem/integration/processWemRequest&application=uc1').td(:text,
"New #{type}").present?
browser.frame(:src,
'../../ContentServer?pagename=fatwire/wem/integration/processWemRequest&application=uc1').td(:text,
"New #{type}").hover
browser.frame(:src,
'../../ContentServer?pagename=fatwire/wem/integration/processWemRequest&application=uc1').td(:text,
"New #{type}").click
end
rescue => e
p e.message
p e.backtrace
puts "type #{type} may not be a valid input. Please review WatirToolbox
documentation for valid input for this field."
end
end
if browser.frame(:src,
'../../ContentServer?pagename=fatwire/wem/integration/processWemRequest&application=uc1').frame(:id,
'contentPane_view-3').text_field(:name => 'flexassets:name').present?
return browser
else
createNewContent(browser, type)
end
end
def checkinAsset(browser, comment)
sleep 10
#Wait for the frame containing the checkin button to load
browser.frame(:src,
'../../ContentServer?pagename=fatwire/wem/integration/processWemRequest&application=uc1').wait_until_present
#*Fails here*
browser.frame(:src,
'../../ContentServer?pagename=fatwire/wem/integration/processWemRequest&application=uc1').div(:id,
'edit').wait_until_present
#Click checkin icon
checkin = browser.frame(:src,
'../../ContentServer?pagename=fatwire/wem/integration/processWemRequest&application=uc1').span(:xpath,
"//div[@id='edit']/span[position()=7]")
checkin.click
end
On Wednesday, January 15, 2014 11:05:10 AM UTC-5, Dan wrote:
>
> Can you show some of that code?
>
> On Wednesday, January 15, 2014 9:33:10 AM UTC-5, Matt Caldwell wrote:
>>
>> I suppose that is ambiguous -- sorry about that. It is a Watir::Browser
>> object, it has been instantiated and has been used in lines preceding that
>> line that are also referencing frames.
>>
>> On Wednesday, January 15, 2014 9:25:03 AM UTC-5, Dan wrote:
>>>
>>> What are you passing into the method?
>>>
>>> On Wednesday, January 15, 2014 7:57:35 AM UTC-5, Matt Caldwell wrote:
>>>>
>>>> Update/clarification. I am using Firefox 17 as my base for this and
>>>> Watir 1.9.3.
>>>>
>>>> On Tuesday, January 14, 2014 2:27:05 PM UTC-5, Matt Caldwell wrote:
>>>>>
>>>>> Hello all,
>>>>>
>>>>> I have been struggling with this issue and was hoping to get some
>>>>> insight. I have a method in a helper class that I wrote that is using
>>>>> code
>>>>> that has worked in the past that is no longer working.
>>>>>
>>>>> def checkinAndApproveAsset(browser, comment)
>>>>> browser.frame(:src, '../../pageSourcePath').wait_until_present # This
>>>>> line throws "Undefined Method 'frame' for []:Array (NoMethodError)"
>>>>> #.
>>>>> #. additional irrelevant code
>>>>> #.
>>>>> return browser
>>>>> end
>>>>>
>>>>> The method is called by the following method.
>>>>> browser = toolbox.checkinAndApproveAsset(browser, 'comment')
>>>>>
>>>>> Any insights? Thanks in advance.
>>>>>
>>>>
--
--
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]
---
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/groups/opt_out.