Webdriver超时异常

时间:2016-10-09 14:46:01

标签: python unit-testing selenium selenium-webdriver

我试着了解代码中的问题所在:

class WebTest(unittest.TestCase):

@classmethod
def setUpClass(cls):
    binary = FirefoxBinary('/home/andrew/Downloads/firefox 45/firefox')
    cls.browser = webdriver.Firefox(firefox_binary=binary)
    cls.wait = WebDriverWait(cls.browser, 10)
    cls.browser.maximize_window()
    cls.browser.get('http://www.test.com/')

def test_login_menu_elements(self):
    self.wait.until(EC.element_to_be_clickable((By.XPATH, "//a[@id='menu_min']"))).click() 
    check_icons(self)
    self.wait.until(EC.element_to_be_clickable((By.XPATH, "//a[@id='menu_min']"))).click() 
    check_fields(self)

def test_add_news(self):
    self.wait.until(EC.element_to_be_clickable((By.XPATH, "//span[contains(.,'News')]"))).click()
    self.wait.until(EC.element_to_be_clickable((By.XPATH, "//a[@href='/manager/news']"))).click()    

@classmethod
def tearDownClass(cls):
    cls.browser.quit()

if __name__=='__main__':
   unittest.main()

每次收到TimeoutException,我真的不明白为什么,代码中的问题在哪里

1 个答案:

答案 0 :(得分:0)

可以收到TimeoutException,而不会在您的代码中出现任何逻辑或语法错误。

如果找不到TimeoutException预期条件,则会引发

wait.until

我找到了一些帮助的事情:

  • 使用chrome / firefox dev工具隔离xpath并右键单击该元素,然后显示xpath
  • 使用上述步骤中的xpath,确保选择的条件正确
  • ime具有前端体验,使用css选择器通常比相对xpath更直观,更易理解。
  • 通过打开开发工具控制台并使用$x({{ XPATH_HERE }})确认其有效来检查您正在使用的选择器
  • 用于动态HTML使用python调试器,并确保html处于每个预期条件之间的预期状态