自定义is_element_present执行缓慢
我在一个方法的内部又调用了另一个方法:
for i in range(60):
try:
if sel.is_element_present("//div[@id='result']/form[3]/strong/div/button"): break
except: pass
time.sleep(1)
这个方法执行大约需要5秒钟。
但是在网站上没有任何变化,然后我执行了这一行:
self.WaitForElement(u"//div[@id='result']/form[3]/strong/div/button")
def WaitForElement(self,name):
for i in range(60):
try:
if sel.is_element_present(name): break
except: pass
time.sleep(1)
结果却要将近30秒,这就很奇怪了。
你们有什么想法吗?
2 个回答
0
这是我对is_element_present方法的理解:
def is_element_present(self, how, what):
try: self.driver.find_element(by=how, value=what)
except NoSuchElementException, e: return False
return True
因为这个方法已经有了try...except的结构,所以你不需要再把它包裹在另一个try...except里。is_element_present方法只会返回真(True)或假(False),所以你代码里的except: pass部分可能永远不会被执行。与其这样,不如直接用if语句。
我还觉得你代码里有个拼写错误(应该是"self"而不是"sel")。
0
快速看了一下你的代码,我发现你在第一个例子中定义了一个普通字符串,而在第二个例子中定义了一个unicode字符串。