12

selenium 2.25.0、、を使用しfirefox 3python 2.6.6います。私は以下を使用するセレン関数を実行しようとしていますsendkeys()

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

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

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

Firefoxとセレンのバージョンを同じに保つ必要がありますが、この問題を解決するために他に見ることができるものはありますか?

4

3 に答える 3

9

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

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

from selenium import webdriver

driver = webdriver.Firefox()
elem = driver.find_element_by_name('j_username')
elem.clear()
elem.send_keys('username')
于 2013-01-28T15:00:31.987 に答える
2

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

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) です。

于 2013-01-29T07:23:34.380 に答える
2

私の問題は同じで、selenium==2.42.1からselenium==2.25.0に移行して解決しました

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

現在、リモートの Debian Squeeze 6.0.8 サーバーで Iceweasel 3.5.16 を使用してウィンドウなしで実行しています。

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
于 2014-06-17T21:30:16.963 に答える