2016-12-28 5 views
0

私は、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?私のアプリケーション?私の開発環境ですか?

+0

テスト環境(preprod1からpreprod2など)を変更すると、この種の問題が発生します。私はあなたのコードが "wait.until"でいっぱいにならないように、あなたの基本的なメソッド( "クリック"のような)であなたの待機操作を含めることをお勧めします。 –

答えて

1

最近、geckodriverの使用に切り替えましたか?もしそうなら、見ることができますthis issue

もしそうでなければ、点滅がウェブアプリケーション上で変化するように表示されましたか?例えば以前はページロード時に提示されていましたが、現在は非同期でJavaScriptを使用してロードしています

+0

セレン3/geckodriverへの切り替えが問題でした。 – gwg

関連する問題