我真正想做的是这样的事情:
class X(metaclass=abc.ABCMeta):
@abc.abstractAttribute # this doesn't exist
var = [1,2]
class Y(X):
var = X.var + [3,4]
Run Code Online (Sandbox Code Playgroud)
这将强制 的任何子类X实现静态var属性。
但是没有办法将静态属性定义为抽象的。
尝试使用@abc.abstractmethod,结合属性,我可以接近:
class X(metaclass=abc.ABCMeta):
@property
@abc.abstractmethod
def var(self):
return [1,2]
class Y(X):
@property
def var(self):
return super().var + [3,4]
Run Code Online (Sandbox Code Playgroud)
y=Y(); y.var给人[1,2,3,4]的期望。
但目标是创建静态属性/属性,而不是实例属性/属性。
创建为@staticmethod 时:
class X(metaclass=abc.ABCMeta):
@property
@staticmethod
@abc.abstractmethod
def var():
return [1,2]
class Y(X):
@property
@staticmethod
def var():
return X.var + [3,4]
Run Code Online (Sandbox Code Playgroud)
...然后y=Y(); y.var给TypeError 'staticmethod' object is not callable …
我意识到Selenium有隐式等待的默认值,但是如果我改变它,我该如何得到这个值?例如:
driver.implicitly_wait( 13 );
Run Code Online (Sandbox Code Playgroud)
我以后如何从驱动程序中获取13值?
是否有通用的方法来检测selenium浏览器何时打开错误页面?例如,禁用您的互联网连接并执行此操作
driver.get("http://google.com")
Run Code Online (Sandbox Code Playgroud)
在Firefox中,Selenium将加载"再试一次"错误页面,其中包含"Firefox无法与www.google.com上的服务器建立连接"等文本.Selenium不会抛出任何错误.
是否有与浏览器无关的方法来检测这些案例?对于firefox(python),我可以做到
if "errorPageContainer" in [ elem.get_attribute("id") for elem in driver.find_elements_by_css_selector("body > div") ]
Run Code Online (Sandbox Code Playgroud)
但是(1)这看似计算过度(见下面的下一点)和(2)我必须为每个浏览器创建自定义代码.
如果您禁用互联网并使用htmlunit作为浏览器,您将获得一个包含以下html的页面
<html>
<head></head>
<body>Unknown host</body>
</html>
Run Code Online (Sandbox Code Playgroud)
如何在不做的情况下检测到这一点
if driver.find_element_by_css_selector("body").text == "Unknown host"
Run Code Online (Sandbox Code Playgroud)
看起来这将是检查每一个页面加载因为通常会是一吨在正文的非常昂贵的.
如果您还知道检测负载问题类型的方法,例如没有互联网连接,无法访问的主机等,则可以获得奖励积分.
在 Notepad++ 中,我可以使用热键Alt+5最小化所有第一个子块(带有 +/- 的小框)。Geany有办法做到这一点吗?
如果没有,是否有一个插件可以让我创建此功能?