1

サイトに移動し、twitter を使用してサイトに登録しようとする簡単なテストを実行しようとしています。なんらかの理由で、Twitter ボタンをクリックするとテストが停止し、ログイン ウィンドウがポップアップします。Google、セレン ユーザー グループ、またはスタック オーバーフローを検索している間、(少なくとも今までは) 何も見つかりませんでした。他の誰かが同様の問題に遭遇したかどうか、または非常に単純なものが欠けているかどうか疑問に思っています。前もって感謝します。コードは以下のとおりです。

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import Select
from selenium.common.exceptions import NoSuchElementException
import unittest, time, re

class TwReg(unittest.TestCase):
    def setUp(self):
        self.driver = webdriver.Firefox()
        self.driver.implicitly_wait(30)
        self.base_url = "sitename"
        self.verificationErrors = []

    def test_tw_reg(self):
        driver = self.driver
        driver.get(self.base_url + "/")
        driver.find_element_by_id("tw_one_click_btn").click()

    def is_element_present(self, how, what):
        try: self.driver.find_element(by=how, value=what)
        except NoSuchElementException, e: return False
        return True

    def tearDown(self):
        self.driver.quit()
        self.assertEqual([], self.verificationErrors)

if __name__ == "__main__":
    unittest.main()

何が起こっているのかを明確に表現していることを確認するため。上記のコードは、twitter sing in ウィンドウがポップアップした後に終了するはずですが、代わりにその時点で単にハングします。このコードは、Selenium の IDE によって生成されます。再度、感謝します。

4

1 に答える 1

1

私はPythonをまったく知りませんが、コードがWebドライバーにポップアップウィンドウに切り替えるように指示していないようです。Web ドライバがボタンをクリックすると、ポップアップではなくログイン ページで要素「what」を見つけようとします。ログイン ウィンドウにフォーカスがないため、NoSuchElementException は発生せず、タイムアウトになります。そのため、ポップアップ ウィンドウが開いた後に切り替えるには、コードに行を追加する必要があります。

于 2013-05-24T14:27:07.987 に答える