TestComplete with Python - Python runtime error. NameError: name 'page' is not defined
TestComplete with Python - Python runtime error. NameError: name 'page' is not defined
我是 python 的新手,测试完成只是想自动化一个示例网页,但遇到以下错误。
我已经搜索并知道我在定义变量时肯定会犯错误。
已经记录了下面的脚本,如果我保留它一个函数它运行良好但是当我将它保留在单独的函数中时(登录页面将代码保留在 Login() 函数中并在 Test1() 中调用它)它失败但登录进入页面。
global browser,page
def Login():
Browsers.Item[btChrome].Navigate("http://secure.smartbearsoftware.com/samples/testcomplete11/WebOrders/login.aspx")
browser=Aliases.browser
page = browser.pageWebOrdersLogin
form = page.formAspnetform
form.textboxUsername.Keys("[Enter]")
page.Wait()
textbox = form.textboxUsername2
textbox.SetText("Tester")
textbox.Keys("[Tab]")
passwordBox = form.passwordboxPassword
passwordBox.SetText(Project.Variables.Password1)
passwordBox.Keys("[Enter]")
page = browser.pageDefault
page.Wait()
def Test1():
global page
Login()
page.formAspnetform.link.Click()
page = browser.pageProcess
page.Wait()
form = page.formAspnetform
form.selectProduct.ClickItem("FamilyAlbum")
textbox = form.textboxQuantity
textbox.SetText("40")
form.submitbuttonCalculate.ClickButton()
textbox = form.textboxCustomerName
textbox.SetText("nitin")
textbox.Keys("[Tab]")
textbox = form.textboxStreet
textbox.SetText("marvel")
textbox.Keys("[Tab]")
textbox = form.textboxCity
textbox.SetText("pune")
textbox.Keys("[Tab]")
textbox = form.textboxState
textbox.SetText("maharashta")
textbox.Keys("[Tab]")
form.textboxZip.SetText("411014")
cell = form.cell
cell.radiobuttonVisa.ClickButton()
textbox = form.textboxCardNr
textbox.SetText("411882781991")
textbox = form.textboxExpireDateMmYy
textbox.SetText("01/23")
form.linkInsertbutton.Click()
page.Wait()
textNode = page.textnode
aqObject.CheckProperty(textNode, "contentText", cmpEqual, "New order has been successfully added.")
page.link.Click()
browser.pageDefault2.Wait()
错误:
Python 运行时错误。
NameError: 名称 'page' 未定义
错误位置:
单位:“WebTesting\WebTesting\Script\WebTest”
行:22 列:1.
page
的 global
声明需要在 def Login
中重复;但更好的设计是在这些函数之间传递非全局变量。要么
def login():
browser = ...
page = ...
...
return browser, page
def test1():
browser, page = login()
...
或者反过来让调用者定义并传递这些;
def login(browser, page):
...
def test1()
browser = ...
page = ...
login(browser, page)
...
您当前的设计要求前者,但这两种模式都很常见,而第二种模式可能更合乎逻辑。通常,尝试在将要使用它们的上下文中定义变量,然后根据需要将它们传递给其他函数。根据经验,尽量使您的变量的范围尽可能窄且寿命短。
另请注意,在 Python.
中,我们通常不将函数名称大写
我是 python 的新手,测试完成只是想自动化一个示例网页,但遇到以下错误。 我已经搜索并知道我在定义变量时肯定会犯错误。 已经记录了下面的脚本,如果我保留它一个函数它运行良好但是当我将它保留在单独的函数中时(登录页面将代码保留在 Login() 函数中并在 Test1() 中调用它)它失败但登录进入页面。
global browser,page
def Login():
Browsers.Item[btChrome].Navigate("http://secure.smartbearsoftware.com/samples/testcomplete11/WebOrders/login.aspx")
browser=Aliases.browser
page = browser.pageWebOrdersLogin
form = page.formAspnetform
form.textboxUsername.Keys("[Enter]")
page.Wait()
textbox = form.textboxUsername2
textbox.SetText("Tester")
textbox.Keys("[Tab]")
passwordBox = form.passwordboxPassword
passwordBox.SetText(Project.Variables.Password1)
passwordBox.Keys("[Enter]")
page = browser.pageDefault
page.Wait()
def Test1():
global page
Login()
page.formAspnetform.link.Click()
page = browser.pageProcess
page.Wait()
form = page.formAspnetform
form.selectProduct.ClickItem("FamilyAlbum")
textbox = form.textboxQuantity
textbox.SetText("40")
form.submitbuttonCalculate.ClickButton()
textbox = form.textboxCustomerName
textbox.SetText("nitin")
textbox.Keys("[Tab]")
textbox = form.textboxStreet
textbox.SetText("marvel")
textbox.Keys("[Tab]")
textbox = form.textboxCity
textbox.SetText("pune")
textbox.Keys("[Tab]")
textbox = form.textboxState
textbox.SetText("maharashta")
textbox.Keys("[Tab]")
form.textboxZip.SetText("411014")
cell = form.cell
cell.radiobuttonVisa.ClickButton()
textbox = form.textboxCardNr
textbox.SetText("411882781991")
textbox = form.textboxExpireDateMmYy
textbox.SetText("01/23")
form.linkInsertbutton.Click()
page.Wait()
textNode = page.textnode
aqObject.CheckProperty(textNode, "contentText", cmpEqual, "New order has been successfully added.")
page.link.Click()
browser.pageDefault2.Wait()
错误: Python 运行时错误。
NameError: 名称 'page' 未定义
错误位置: 单位:“WebTesting\WebTesting\Script\WebTest” 行:22 列:1.
page
的 global
声明需要在 def Login
中重复;但更好的设计是在这些函数之间传递非全局变量。要么
def login():
browser = ...
page = ...
...
return browser, page
def test1():
browser, page = login()
...
或者反过来让调用者定义并传递这些;
def login(browser, page):
...
def test1()
browser = ...
page = ...
login(browser, page)
...
您当前的设计要求前者,但这两种模式都很常见,而第二种模式可能更合乎逻辑。通常,尝试在将要使用它们的上下文中定义变量,然后根据需要将它们传递给其他函数。根据经验,尽量使您的变量的范围尽可能窄且寿命短。
另请注意,在 Python.
中,我们通常不将函数名称大写