【发布时间】:2020-06-26 07:13:57
【问题描述】:
我是 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:名称“页面”未定义
错误位置: 单位:“WebTesting\WebTesting\Script\WebTest” 行:22 列:1。
【问题讨论】:
-
你为什么还要使用
global变量呢?正确的设计几乎总是向def添加一个参数,以允许您从不同的上下文中传递一个变量。 -
能否请您更改代码,我将尝试分析。
-
无论如何,第一个
def中的page也需要为global才能引用同一个变量。这应该可以轻松解决眼前的问题。 -
在两个函数中都添加了全局页面、浏览器时有效
标签: python testcomplete