2

xvfb を使用して、Debian サーバー上の Django プロジェクト用に作成したセレン テストを実行しようとしています。

実行しようとしている 3 つのテストがあります。最初のテストの後、次のエラーで失敗します: NoSuchElementException: Message: u'Unable to locate element: {"method":"xpath","selector":"//a[@href=\\"#detail\\"]"}'

私はexport DISPLAY=:99django-seleniumでDjango LiveServerTestCaseを実行して使用しています。 SELENIUM_DISPLAY = ':99'私のsettings.pyで設定されています。

これが私のテストランナーです:

class BaseLiveTest(LiveServerTestCase):
    @classmethod
    def setUpClass(cls):
        cls.selenium = WebDriver()
        super(BaseLiveTest, cls).setUpClass()

    @classmethod
    def tearDownClass(cls):
        super(BaseLiveTest, cls).tearDownClass()
        cls.selenium.quit()

    def login(self, user):
        #helper function, to log in users
        #go to login page
        self.selenium.get("%s%s" % (self.live_server_url, reverse('userena_signin')))
        #wait for page to display
        WebDriverWait(self.selenium, 10).until(
            lambda x: self.selenium.find_element_by_id('id_identification'),
        )
        #fill in form and submit
        identifictation_input = self.selenium.find_element_by_id('id_identification')
        identifictation_input.send_keys(user.email)
        password_input = self.selenium.find_element_by_id("id_password")
        password_input.send_keys('password')
        self.selenium.find_element_by_xpath('//form/descendant::button[@type="submit"]').click()

        #wait for dashboard to load
        WebDriverWait(self.selenium, 10).until(
            lambda x: self.selenium.find_element_by_id('container'),
        )

各テストを単独で実行すると、すべて成功しますが、次々と実行しようとすると、最後の 2 つのテストが失敗します。何か案は?

4

1 に答える 1

3

You need to use setUp() and tearDown(), not setUpClass() and tearDownClass(). The Class versions are run globally for the entire fixture, so all 3 tests are using the same WebDriver instance, and thus the browser isn't in the state you expect for your second and third tests.

于 2012-08-17T20:43:39.377 に答える