尝试在几次 GUI 操作后验证某些按钮不存在(预计不存在)。我正在使用 find_element_by_xpath() 但它非常慢。任何超时解决方案?
问问题
5295 次
2 回答
8
实际上,如果没有找到指定的元素,WebDriver 的 find_element 方法会等待该元素的隐式时间。
WebDriver 中没有像 isElementPresent() 这样的预定义方法来检查。您应该为此编写自己的逻辑。
逻辑
public boolean isElementPresent()
{
try
{
set_the_implicit time to zero
find_element_by_xpath()
set_the_implicit time to your default time (say 30 sec)
return true;
}
catch(Exception e)
{
return false;
}
}
见:http: //goo.gl/6PLBw
于 2012-10-09T08:11:11.437 回答
0
如果您尝试检查某个元素是否不存在,最简单的方法是使用with
语句。
from selenium.common.exceptions import NoSuchElementException
def test_element_does_not_exist(self):
with self.assertRaises(NoSuchElementException):
browser.find_element_by_xpath()
至于超时,我喜欢“Obey The Testing Goat”中的那个。
# Set to however long you want to wait.
MAX_WAIT = 5
def wait(fn):
def modified_fn(*args, **kwargs):
start_time = time.time()
while True:
try:
return fn(*args, **kwargs)
except (AssertionError, WebDriverException) as e:
if time.time() - start_time > MAX_WAIT:
raise e
time.sleep(0.5)
return modified_fn
@wait
def wait_for(self, fn):
return fn()
# Usage - Times out if element is not found after MAX_WAIT.
self.wait_for(lambda: browser.find_element_by_id())
于 2018-11-07T01:07:52.520 回答