我正在使用selenium来自动化测试用例,但到目前为止,由于网络问题(缓慢等等),测试很不稳定。这导致许多失败的测试用例。目前,重新运行失败的测试用例需要花费大量时间,与手动测试相比,自动化效率非常低。 除了添加隐式和显式超时之外,还有一种方法可以使测试更具动态性。
提前致谢
答案 0 :(得分:0)
到目前为止,我处理这个问题的方法是编写一个辅助函数来包装WebDriverWait,这样它就不那么繁琐了。
以下是使用WebDriver Python绑定的示例:
# Import EC:
from selenium.webdriver.support import expected_conditions as EC
# Then define the helper:
def wait_for_clickability_then_click_element(self, by, locator, timeout=5):
WebDriverWait(self.driver, timeout).until(EC.element_to_be_clickable((
by, locator)))
if by == By.XPATH:
self.driver.febx(locator).click()
elif by == By.CSS_SELECTOR:
self.driver.febc(locator).click()
一个示例调用(您可能会使用它来代替正常的click()调用,这会导致您遇到时间问题):
wait_for_clickability_then_click_element(
By.CSS_SELECTOR, "button[name='submit']")