私のテストでは、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)はセレンでサポートされていません。ハブを介して IE8 で同じテストを実行すると、問題なく動作します。