Hi~ Chuck

Thank you for your advice. That is good for me.
I already add the ie.close in the while loop.
And I change the code a little bit. Is this seems ok?
I don't know ruby and network develop much, so I may made some mistakes.
require 'watir'
require 'win32ole'
require 'thwait'

inputfile = "C:\\codework\\watir\\Qian\\in.txt"
logfile = "C:\\codework\\watir\\Qian\\logfile.txt"
testcasefile = "C:\\codework\\watir\\Qian\\Book1.xls"



#def getTestCases(testCaseFile)
  testcase = Array.new # testCase - the array [i1, i2, answer]
  testcases = Array.new # array of testCases
  xl=WIN32OLE.new('Excel.Application')
  xl.Workbooks.Open(testcasefile)

  data = false
  testcasenumber = 0
  i = 1
  while (true)

          if (xl.Cells(i,1).value == "End data")
            break
          end
          if (xl.Cells(i,1).value == "Start data")
            data = true
            i+=1
          end

          if (data)
            ans = xl.Cells(i,3).value
            ansstr = ans.to_s
              if /(^.*)\.0$/ =~ ansstr
                ansstr = Regexp.last_match(1)
              end
            testcase = [xl.Cells(i,1).value,ansstr]
            testcases[testcasenumber] = testcase
            testcasenumber += 1
          end
    i += 1
  end

  xl.Workbooks.Close

#end

k =testcasenumber

filehandle = File.open(logfile,"w")
infile = File.new(inputfile, "r")
filehandle << "Test result are:\n\n"
folderlocation = "http://localhost:81/Homework/";

infile.each do |i|
  thislocation = [folderlocation, i]
  print  thislocation
  print '\n'
  k =testcasenumber
  while k !=0
    ie = Watir::IE.new
    ie.goto(thislocation.to_s)
    tcase= testcases[k-1]
    arg1= tcase[0]
    ans = tcase[1]
    puts tcase[0].to_s+"......"+tcase[1].to_s;
    ie.text_field(:name, "fahrenheit").set(arg1.to_s)
    ie.button(:type, "submit").click
    if ie.contains_text(ans.to_s)
      filehandle << ":::Passed\n\n"
    else
      filehandle << ":::failed\n\n"
    end
    #testCases = getTestCases(testCaseFile)
    k-=1
    ie.close;
  end
end

filehandle.close

However this code still does not work.
It still says
`assert_exists': Unable to locate element, using :name, "fahrenheit"
(Watir::Exception::UnknownObjectException)
I got so confused

Thank you
Allen
 On Mon, Apr 13, 2009 at 2:15 PM, Chuck van der Linden <sqa...@gmail.com>wrote:

>
> I worry about a one thing however.
>
> In each loop iteration I see you open a new browser instance, but I
> never see you close a browser.. so expect you are going to open a lot
> of browsers and potentially you could have quite a mess on your hands
> (or run the system out of memory), if the test runs for a good number
> of iterations..  You may want to consider adding a command to close
> the browser at the end of the same loop where it is opened, or else
> move creating (and later closing) the IE instance outside of your
> loop.
>
> 2) minor style thing, but I see most ruby coders express loops like
> are doing without the curley braces, and just use the form
>
>  variable.each do |i|
>   code
>   code
>  end
>
> the preference seems to be to use the curley brace notation only for
> single line stuff such as
>
> variable.each { |i| codeusing i }
>
> Also for variable names, the most common thing I've seen is
>
>  variable = all_lowercase
>  constant = ALL_UPPERCASE
>  classes = CamelCase
>
> you're free to code anyway that works of course, but it might be
> slightly less confusing to others (when you have code reviewed or ask
> for assistance) to be slightly more 'mainstream'.   I've always
> figured that the easier it was for other folks to read my code the
> better when it came time to ask for help.  Also that means less
> chances for non-answers where say someone thinks 'testCase' is a class
> and responds accordingly.
>
>
>
> On Apr 12, 1:15 pm, Chai Taolun <ctco...@gmail.com> wrote:
> > Hi~
> >
> > Thank you alex!
> > I got it. thank you so much.
> >
> > allen
> > On Sun, Apr 12, 2009 at 9:00 AM, Alex Collins <a.j.collins...@gmail.com
> >wrote:
> >
> >
> >
> >
> >
> > > I believe that the issue is that you are passing in an Array into goto,
> > > when it expects a string:http://wtr.rubyforge.org/rdoc/- look at the
> > > Watir::IE class' goto method.
> >
> > > You create an array on the following line:
> > > thisLocation = folderLocation, i
> >
> > > Explicitly stated, you can read this as:
> > > thisLocation = [folderLocation, i]
> >
> > > thisLocation is therefore an Array. To convert this to a string, simply
> > > call the "to_s" method on the array. For example:
> >
> > > [1, 2].to_s => "12"
> >
> > > ["c:\\file\\", "foo.bar"].to_s => "c:\\file\\foo.bar"
> >
> > > You therefore need to amend your script so that you call:
> > > ie.goto(thisLocation.to_s)
> >
> > > However, if you are looking to join file names to directory paths, I
> > > suggest you look at Ruby's File and Dir classes. They have many useful
> > > helpers, for example, File.join does exactly what we are doing above,
> but in
> > > a platform-safe manner.
> >
> > > Alex
> >
> > > On 12 Apr 2009, at 02:57, Chai Taolun wrote:
> >
> > > Hi~
> > > Sorry, this is not like that, I want to visit some webpage using the
> name I
> > > store in the text file.
> > > I need to find a way to do this.
> > > Thank you
> >
> > > allen
> >
> > > On Sat, Apr 11, 2009 at 1:22 PM, kiran <gki...@gmail.com> wrote:
> >
> > >> Hi,
> > >> I think problem with folder path.
> > >> suppose if we want open a file located in D:\watir
> > >> The statement for watir
> > >> ie.goto("D:\\watir")
> >
> > >> it would help you.
> >
> > >> On Apr 11, 12:15 pm, Chai Taolun <ctco...@gmail.com> wrote:
> > >> > Hi~
> >
> > >> > Ruby is new to me and I got this problem in this code. Could you
> give me
> > >> > some help? Thank you
> >
> > >> > infile.each{
> > >> >   |i|
> > >> >   thisLocation = folderLocation, i
> > >> >   print thisLocation
> > >> >   k =testCaseNumber
> > >> >   while k !=0
> > >> >     ie = Watir::IE.new
> > >> >     ie.goto(thisLocation)
> >
> > >> > and here is the error
> > >> >
> c:/ruby/lib/ruby/gems/1.8/gems/watir-1.6.2/lib/watir/ie-class.rb:358:in
> > >> > `method_missing': navigate (WIN32OLERuntimeError)
> > >> >     OLE error code:0 in <Unknown>
> > >> >       <No Description>
> > >> >     HRESULT error code:0x80020005
> > >> >       Type mismatch.    from
> > >> >
> c:/ruby/lib/ruby/gems/1.8/gems/watir-1.6.2/lib/watir/ie-class.rb:358:in
> > >> > `goto'
> > >> >     from awat.rb:61
> > >> >     from awat.rb:54:in `each'
> > >> >     from awat.rb:54http://localhost:81/Homework/HswitchS.php>Exit
> code:
> > >> 1
> >
> > >> > Thank you so much and looking forward your help ^_^
> >
> > >> > Allen
> > >> > --
> > >> > There are some things in this world will never change and some
> things do
> > >> > change.
> >
> > > --
> > > There are some things in this world will never change and some things
> do
> > > change.
> >
> > --
> > There are some things in this world will never change and some things do
> > change.- Hide quoted text -
> >
> > - Show quoted text -
> >
>


-- 
There are some things in this world will never change and some things do
change.

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Watir General" group.
To post to this group, send email to watir-general@googlegroups.com
Before posting, please read the following guidelines: 
http://wiki.openqa.org/display/WTR/Support
To unsubscribe from this group, send email to 
watir-general-unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/watir-general
-~----------~----~----~----~------~----~------~--~---

Reply via email to