在我的测试中,我尝试使用find_element_by_xpath验证某些文本是否存在(在操作之后) 。如果我使用正确的表达式并且我的测试通过,例程很快就会正确结束。但是,如果我尝试了错误的文本(意味着测试将失败),它会永远挂起,我必须终止脚本,否则它不会结束。
这是我的测试(无论用户做什么,系统中都不存在您输入的表达式Thx 用户、客户端或密码不正确):
# -*- coding: utf-8 -*-
import gettext
import unittest
from selenium import webdriver
class TestWrongLogin(unittest.TestCase):
def setUp(self):
self.driver = webdriver.Firefox()
self.driver.get("http://10.23.1.104:8888/")
# let's check the language
try:
self.lang = self.driver.execute_script("return navigator.language;")
self.lang = self.lang("-")[0]
except:
self.lang = "en"
language = gettext.translation('app', '/app/locale', [self.lang],
fallback=True)
language.install()
self._ = gettext.gettext
def tearDown(self):
self.driver.quit()
def test_wrong_client(self):
# test wrong client
inputElement = self.driver.find_element_by_name("login")
inputElement.send_keys("root")
inputElement = self.driver.find_element_by_name("client")
inputElement.send_keys("Unleash")
inputElement = self.driver.find_element_by_name("password")
inputElement.send_keys("qwerty")
self.driver.find_element_by_name("form.submitted").click()
# wait for the db answer
self.driver.implicitly_wait(10)
ret = self.driver.find_element_by_xpath(
"//*[contains(.,'{0}')]".\
format(self._(u"Thx user, client or password you entered is incorrect")))
self.assertTrue(isinstance(ret, webdriver.remote.webelement.WebElement))
if __name__ == '__main__':
unittest.main()
为什么会这样做,我该如何预防?
编辑:我能够找到问题:我在 Ubuntu 中运行我的 Firefox,并且我拥有的当前版本的 Firefox(17.0)不受 selenium 支持。通过集线器在 IE8 中运行相同的测试可以正常工作。