我只是继承了一些使我感到不安的代码:有一个测试库,其中充满了与我们网站上的网页相对应的类,并且每个网页类都有使该页面上的功能自动化的方法。
有一些方法可以单击页面之间的链接,这将返回链接页面的类。这是一个简化的示例:
文件homePageLib.py:
class HomePage(object):
def clickCalendarLink(self):
# Click page2 link which navigates browswer to page2
print "Click Calendar link"
# Then returns the page2 object
from calendarLib import CalendarPage
return CalendarPage()
文件calendarLib.py:
class CalendarPage(object):
def clickHomePageLink(self):
# Click page1 link which navigates browswer to page1
print "Click Home Page link"
# Then return the page2 object
from homePageLib import HomePage
return HomePage()
然后,这允许脚本文件单击页面,并从该方法获取对象作为返回值,这意味着脚本作者在站点中导航时不必继续实例化新页面。(我觉得这是一个奇怪的设计,但是我无法确切地说明为什么,除了拥有一个名为“
clickSomeLink”的方法并返回结果页面的对象似乎很奇怪。)
以下脚本说明了脚本如何在站点中导航:(我插入该示例是print page
为了显示页面对象的更改)
脚本文件:
from homePageLib import HomePage
page = HomePage()
print page
page = page.clickCalendarLink()
print page
page = page.clickHomePageLink()
print page
产生以下输出:
<homePageLib.HomePage object at 0x00B57570>
Click Calendar link
<calendarLib.CalendarPage object at 0x00B576F0>
Click Home Page link
<homePageLib.HomePage object at 0x00B57570>
因此,我特别不满意的部分是from ____ import ____
所有的结局。这些原因使我感到很糟糕,原因如下:
from foo import bar
文件的多个位置产生同一行代码。 问题是,如果将这些导入语句放在页面顶部,则会出现导入错误,因为(按照此示例),HomePage导入CalendarPage,反之亦然:
文件homePageLib.py
from calendarLib import CalendarPage
class HomePage(object):
def clickCalendarLink(self):
# Click page2 link which navigates browswer to page2
print "Click Calendar link"
# Then returns the page2 object
return CalendarPage()
文件calendarLib.py
from homePageLib import HomePage
class CalendarPage(object):
def clickHomePageLink(self):
# Click page1 link which navigates browswer to page1
print "Click Home Page link"
# Then return the page2 object
return HomePage()
这将导致以下错误:
>>> from homePageLib import HomePage
Traceback (most recent call last):
File "c:\temp\script.py", line 1, in ?
#Script
File "c:\temp\homePageLib.py", line 2, in ?
from calendarLib import CalendarPage
File "c:\temp\calendarLib.py", line 2, in ?
from homePageLib import HomePage
ImportError: cannot import name HomePage
(有关如何更好地格式化python输出的提示?)
我想找到一种更好的方法,而不是永久保留这种风格。有没有Python的方式来处理这样的循环依赖项,并且仍然将import语句保留在文件顶部?
解决这些构造通常涉及诸如依赖注入之类的技术。
但是,修复此错误相当简单:
在calendarLib.py中:
import homePageLib
class CalendarPage(object):
def clickHomePageLink(self):
[...]
return homePageLib.HomePage()
模块级别的代码在导入时执行。使用from [...] import [...]
语法要求模块完全初始化才能成功。
一个简单的import [...]
没有,因为没有符号被访问,从而打破了依赖链。
问题内容: 我想每次插入带有日期+ 1的行。这是一个简单的SQL循环。我正在使用SSIS,因此StartDate和Enddate是变量。 这是我的代码: 错误信息: 消息156,级别15,状态1,行11关键字’select’附近的语法错误。 问题答案: 无需在声明。 代替 和
1、什么是循环语句 一般编程语言都有循环语句,为什么呢? 那就问一下自己,我们弄程序是为了干什么? 那肯定是为了方便我们工作,优化我们的工作效率啊。 而计算机和人类不同,计算机不怕苦也不怕累,也不需要休息,可以一直做。 你要知道,计算机最擅长就是做重复的事情。 所以这时候需要用到循环语句,循环语句允许我们执行一个语句或语句组多次。 循环语句的一般形式如下: 在 Python 提供了 for 循环和
while 循环:while 条件 do … end repeat 循环:repeat … until 条件 for 循环:for 变量 = 初值,终点值,步进 do … end for 循环:for 变量 1,变量 2,… ,变量 N in表或枚举函数 do … end while 循环 my_table = {1,2,3} local index = 1 -- 注意: table 中的索引从
本文向大家介绍c# 循环语句的使用方法,包括了c# 循环语句的使用方法的使用技巧和注意事项,需要的朋友参考一下 for循环 格式: 解释: 先执行表达式1,再判断循环条件是否为真,如果为真则执行循环体,执行完成后再执行表达式2再次判断循环条件,由此一直反复循环,直到循环条件为假,退出循环 表达式1只在循环开始的时候执行一次 示例 结果 foreach 循环 格式: 解释:
本文向大家介绍讲解C++的do while循环和循环语句的嵌套使用方法,包括了讲解C++的do while循环和循环语句的嵌套使用方法的使用技巧和注意事项,需要的朋友参考一下 用do-while语句构成循环 do-while语句的特点是先执行循环体,然后判断循环条件是否成立。其一般形式为: 它是这样执行的:先执行一次指定的语句(即循环体),然后判别表达式,当表达式的值为非零(“真”) 时,返回重新
主要内容:使用标签来控制流程有时某些指令需要重复执行,循环是一种理想的方法。循环表示必须重复的一组指令。在循环的上下文中,重复称为迭代。 下图说明了循环的分类 - 下面我们首先来了解确定(Definite)循环 。迭代次数是明确/固定的循环称为确定循环。 编号 循环 描述 1 for循环 循环是一个确定循环的实现,用于执行代码块指定的次数。 2 for…in循环 循环用于循环对象的属性。 接下来了解无限循环。当循环中的迭代次