0

ポップアップを開く編集リンクがあるページでWeb要素を繰り返し処理しようとしています。開いたポップアップには、単純な入力フィールドと適用/キャンセルボタンがあります。私のスクリプトでは、次のようにして入力フィールドにテキストを入力します。

def enter_text(self, text, action):
        if self.is_element_present(self._input_locator):
            self.selenium.find_element(*self._input_locator).send_keys(text)
        if action == 'Apply':
            self.selenium.find_element(*self._apply_button_locator).click()
        elif action == 'Cancel':
            self.selenium.find_element(*self._cancel_button_locator).click()

Chromeでスクリプトを実行すると、すべてが正常に機能し、すべてのWeb要素が検出され、入力テキストがフィールドに入力されます。しかし、Firefoxでまったく同じスクリプトを実行すると、入力フィールドと2つのボタンがあるポップアップウィンドウが開きます(つまり、Webdriverで表示されるようになります)が、テキストがフィールドに入力されないため、エラーが発生します。

ElementNotVisibleException: Message: u'Element is not currently visible and so may not be interacted with' 

ポップアップが実際に開かれている(そして私はそれを見ることができる)が、Webdriverがポップアップが表示されていないことを通知した場合、なぜこれが発生する可能性がありますか?また、ポップアップが読み込まれ、テキストが入力されたことを確認するために、いくつかのスリープを設定しましたが、役に立ちませんでした。

どんな助けでもありがたいです。

4

2 に答える 2

0

魔女のFirefoxバージョンとWebdriverバージョンを使用していますか?

次のことを試してください。

  • Webdriverを最新バージョンに更新します
  • Firefox 17-18を使用している場合は、それを下位バージョンにダウングレードします(FF12が機能すると思います)

それを試して、何が起こるか教えてください、

よろしく

于 2013-01-07T11:01:45.763 に答える
0

2 つのアイデア:

1: HTML が有効であることを確認します。たとえば、w3c バリデーターを使用して実行します。壊れた html は、さまざまなブラウザーでのさまざまな動作の一般的な原因です。

2: 次の例を使用して、確実にセレンをポップアップに切り替えましたか?

for handle in self.selenium.window_handles:
    # identify popup window's handle somehow
    self.selenium.switch_to_window(handle)

余談ですが、 に出くわしていない場合は、 s および wait-for 構造selenium.implicitly_wait(3)を回避する方法として非常に便利です..time.sleep

于 2013-01-05T16:57:08.363 に答える