我使用Test complete进行自动化。我创建了课程:" Common"代码:
function Read_Excel_Login(){
var Driver1 = DDT.ExcelDriver("C:/Users/NVA/Downloads/leave.xls","login",true);
}
function Login()
{
if( Driver1.Value(3)==2)
{
page = Aliases.browser.pageHrmtestSpsSymfonyWebIndexPhp2;
page.Wait(5000);
}
else
{
page= Aliases.browser.pageHrmtestSpsSymfonyWebIndexPhp;
page.Wait(5000);
}
page.contentDocument.Script.$("#txtUsername").val(Driver1.Value(0)).change();
page.contentDocument.Script.$("#txtPassword").val(Driver1.Value(1)).change();
page.contentDocument.Script.$("#btnLogin").click();
}
我创建了其他课程:" Main"登录用户和通话类:"普通"代码:
var Common = require("Common");
function Main()
{
Common.Read_Excel_Login();
while(!Driver1.EOF())
{
Common.Login();
Driver1.Next();
}
}
运行后出现错误:
的ReferenceError
未定义Driver1
如何解决这个问题?感谢。
答案 0 :(得分:0)
如果您在代码的开头放置一个断点并逐步执行它,它可能会帮助您找到问题。
问题是您已在函数Driver1
中声明Read_Excel_Login()
,然后该函数超出范围,并在函数Driver1
中引用Login()
它未定义的地方。
我会在Driver1
中定义Main()
,然后让Read_Excel_Login()
返回一个驱动程序实例。然后,您可以将Driver1
传递给可以使用的Login()
。
function Read_Excel_Login()
{
return DDT.ExcelDriver("C:/Users/NVA/Downloads/leave.xls", "login", true);
}
function Main()
{
var ExcelDriver = Common.Read_Excel_Login();
while(!ExcelDriver.EOF())
{
Common.Login(ExcelDriver);
ExcelDriver.Next();
}
}
function Login(ExcelDriver) { ... }
我还将驱动程序的名称更改为更具体,ExcelDriver
而不是Driver1
。
自从我使用TestComplete做了一些事情以来已经很长时间了,所以我认为这种语法大多是正确的。