-1

我是 Ruby-Watir 的新手 ..并且正在检查一个应用程序的登录功能,该应用程序有多个值,如(无效的用户和密码,有效的用户名和密码)来自 Excel 表。

reqire'watir-webdriver'
require 'win32ole'
require 'roo'

b = Watir::Browser.new

b.goto 'http://tech/mellingcarsweb/Admin/Login.aspx'

xl = WIN32OLE.new('excel.application')

wrkbook= xl.Workbooks.Open("C:\\Excel\\cars.xlsx")

wrksheet= wrkbook.Worksheets(1)

wrksheet.select

$username= wrksheet.Range("A1").Value

$password= wrksheet.Range("B1").Value

b.text_field(:id, "MainContent_txtUsername").set($username)


b.text_field(:id, "MainContent_txtPassword").set($password)


b.button(:id, "MainContent_btnLogin").click

b.alert.ok

$username1= wrksheet.Range("A2").Value

$password1= wrksheet.Range("B2").Value

b.text_field(:id, "MainContent_txtUsername").set($username1)


b.text_field(:id, "MainContent_txtPassword").set($password1)


b.button(:id, "MainContent_btnLogin").click

puts "Authorised Entry"

这段代码运行良好。我需要的是..使用循环语句我需要执行多次。

我不知道如何在 Excel 中使用循环条件。我已经看过很多示例,但没有一个是清楚的。对不起,我无法理解。有人能以正确的方式解释我在 Excel ruby​​ 中使用循环条件的正确方式吗?

谢谢

4

2 回答 2

1

鉴于您正在测试有效和无效的登录,我不确定编写循环是否最有意义。循环的问题在于,每次迭代都需要知道预期的结果是什么。您可能需要在电子表格中包含该信息。您最好为每个有效和无效场景创建特定的单独测试(即每个测试一个断言)。

要回答您的问题,您可以将 excel 范围转换为二维数组,然后遍历每一行数据。获取二维数组:

require 'win32ole'

#Open the spreadsheet
xl = WIN32OLE.new('excel.application')
wrkbook= xl.Workbooks.Open('C:\Users\Someone\Desktop\Logins.xlsx')
wrksheet= wrkbook.Worksheets(1)

#Convert the range of cells to a 2D array
login_data = wrksheet.range("A1:B2").value

#Output of the 2D array
p login_data
#=> [["jsmith", "password1"], ["jdoe", "password2"]]

二维数组的每个元素都是一行 excel 数据。您可以使用该each方法对其进行迭代。

#Start your browser
b = Watir::Browser.new    

#Loop through the login data
login_data.each do |data|

    #Determine the user id and password for the row of data
    user = data[0]
    password = data[1]

    #Go to the login page
    b.goto 'http://tech/mellingcarsweb/Admin/Login.aspx'

    #Input the fields and submit
    b.text_field(:id, "MainContent_txtUsername").set(user)
    b.text_field(:id, "MainContent_txtPassword").set(password)
    b.button(:id, "MainContent_btnLogin").click

    #Do something to validate the result
end
于 2013-04-02T02:41:32.203 回答
0

谷歌为ruby loops. 这看起来是一个很好的介绍:http ://www.tutorialspoint.com/ruby/ruby_loops.htm

于 2013-03-23T07:53:07.397 回答