web-dev-qa-db-ja.com

pythonおよびfirefoxを使用したselenium webdriver sendkeys()

_Selenium 2.25.0_、_firefox 3_および_python 2.6.6_を使用しています。 sendkeys()を使用するSelenium関数を実行しようとしています:

_ Webdriver.find_element_by_name( 'j_username' ).clear()
 webdriver.find_element_by_name( 'j_username' ).send_keys( "username" )
_

このコードは私のマシンから実行できます。ただし、別のマシンから実行すると、ユーザー名フィールドは空のままになり、スクリプトの残りの部分が続行されます(エラーは報告されません)。

ユーザー名の送信が試行される前にフィールドがクリアされていることがわかります。これにより、ボタンの検索やボタンの命名に問題がないことがわかります。フィールドをクリアしてからユーザー名を送信するまでの間に一時停止を試みましたが、これも機能しないようです。

FirefoxとSeleniumのバージョンを同じに保つ必要があります。この問題を解決するために他に確認できることはありますか?

8
Sarah92

あなたのコードは奇妙に見えます。通常、要素を見つけて、それを使ってアクションを実行します...毎回それを見つけるのではなく。

このようなことを試してください:

from Selenium import webdriver

driver = webdriver.Firefox()
elem = driver.find_element_by_name('j_username')
elem.clear()
elem.send_keys('username')
7
Corey Goldberg

以下を回避策として使用してください。

driver = webdriver.Firefox()
elem = driver.find_element_by_name('j_username')
elem.clear()
app = Application.Application()
app.window_(title_re='*.Firefox.*').TypeKeys('username')

最後の2行はPython(pyWinauto)にあります

2
Arun

私の問題は同じで、Selenium == 2.42.1からSelenium == 2.25.0に変更することで解決しました

Seleniumのバージョンを変更した後、テストはsend_keys()を実行し、send_keys(Key.ENTER)を使用してフォームを送信できました。

私は現在、Iceweasel 3.5.16がインストールされたリモートのDebian Squeeze 6.0.8サーバーでウィンドウレスを実行しています。

Mozilla Iceweasel 3.5.16, Copyright (c) 1998 - 2010 mozilla.org

Distributor ID: Debian
Description:    Debian GNU/Linux 6.0.8 (squeeze)
Release:        6.0.8
Codename:       squeeze
2
vulpineblazeyt