私は、WebアプリケーションのユーザーインターフェイスをテストするためにSeleniumを使用します。これらのテストは過去1年間にわたって一貫して機能しています。今、彼らはすべて失敗しています。私はそれらをゆっくり固定しているので、URLがロードされるのを待つためにWebDriverWait
を使用しなければならない。たとえば、このテストに合格するために使用:なぜ私はすべてのSeleniumテストでWebDriverWaitを使用する必要がありますか?
def test_alphanumeric_username(self):
# This function creates a new user by navigating to a new page.
# On completion, a message should flash on the user's screen.
register_user(self.browser, username='@@@')
message = get_flashed_message(self.browser)
self.assertEqual(message, 'Username must be alphanumeric.')
def get_flashed_message(browser):
message = browser.find_element_by_xpath('//div[@class="flashes"]//p')
return message.text
をしかし、私はこの変更をしたまでget_flashed_message
に頼っていたすべてのテストが失敗しました:
def get_flashed_message(browser):
message = wait_until(browser, '//div[@class="flashes"]//p')
return message.text
def wait_until(browser, xpath_selector, timeout=20):
wait = WebDriverWait(browser, timeout)
return wait.until(lambda b: b.find_element_by_xpath(xpath_selector))
この問題は、すべて私のテスト、そして今、私のコードで起こっています待機またはスリープするための呼び出しが散在しています。何が変わったでしょうか?セレンのAPI?私のアプリケーション?私の開発環境ですか?
テスト環境(preprod1からpreprod2など)を変更すると、この種の問題が発生します。私はあなたのコードが "wait.until"でいっぱいにならないように、あなたの基本的なメソッド( "クリック"のような)であなたの待機操作を含めることをお勧めします。 –