システムレベルのテストを行うテストスクリプトで使用されるライブラリを維持しています。テスト対象のシステムの一部がウェブサイトであり、JPypeを使用してSelenium 2.0のWebドライバを制御するために、Webサイトをナビゲートして操作するために使用します。 Selenium 2.0にはJavaとC#のインタフェースがありますが、JavaやC#を使ってテストライブラリを書き直すことはできません。このシステムは、最近退社した人が作成したシステムで、今すぐスピードアップする予定です。Pythonを使用したSeleniumの制御 - 「待機」を使用できない
私たちは、ウェブサイトと対話するたびに、我々はtime.sleepsを使用している、:
self.browserDict['Driver'].findElement(self.browserDict['By'].id(byId)).click()
time.sleep(_AJAX_TIMEOUT)
>>> self.browserDict['Driver']
<jpype._jclass.org.openqa.selenium.firefox.FirefoxDriver object at 0x0626DD30>
>>> byId
'login_submit'
我々は何の何かをクリックしていない任意の時間を、ロードするために、次のページを待つtime.sleepは、()があります。私たちにはAJAXがたくさんありますが、AJAXの読み込みを待つ方法があるようです。彼が出る前に、このツールの作者は、これを防ぐJPypeまたはSeleniumに問題があると説明しました。これまで私はこの問題を見つけることができませんが、私はまた、ここで使用されるwaitコマンドを知らない。
編集:ロード時に
一つの選択肢は、タイムアウトは6秒であったならば、それは要素を見つけた後、すぐに戻ってくるという仮定の下で、implicitlyWaitを使用することです、しかし、常にフル6秒待っているようですページ。
EDIT2:ですが、今出て、しかし、Ajaxの負荷がそのライブラリのいずれかで終了するのを待つする方法はないようである直接セレン2.0に Python bindings:(その例から)time.sleep(0.2) # Let the page load, will be added to the AP
。
WebdriverWaitで明示的に待機する必要があります –