2012-10-16 49 views
1

我試圖運行一個簡單的測試,導航到一個站點&嘗試使用twitter註冊該站點。出於某種原因,當我單擊Twitter按鈕並彈出登錄窗口時,測試就會停止。在搜索google,selenium用戶組或stackoverflow時,我一直無法找到任何東西(至少到現在爲止)。我想知道是否有其他人遇到了類似的問題,或者我錯過了一些非常簡單的事情。提前致謝。代碼如下:當Twitter登錄窗口彈出時Webdriver測試失速

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窗口後,上面的代碼應該退出,而不是簡單地掛在那個點上。該代碼由Selenium的IDE生成。再次感謝。

+0

快速更新:我也嘗試過使用ChromeDriver,並遇到同樣的問題。 – TDL

回答

1

我根本不知道python,但它看起來好像你的代碼沒有告訴webdriver切換到彈出窗口。在webdriver點擊按鈕後,它試圖在登錄頁面而不是彈出窗口中找到元素「what」。由於登錄窗口不再具有焦點,它不會觸發NoSuchElementException,而是會超時。所以你需要在代碼中添加一行以在打開後切換到彈出窗口。

+0

感謝您的回覆。我沒有意識到這個問題仍然存在。這絕對是其中一個問題,我添加了幾行代碼,將webdriver切換焦點添加到彈出窗口中。另一個混淆的問題是Twitters身份驗證無法正常工作。再次感謝您回答這樣一個老問題。 – TDL

+0

沒問題 - 我其實並沒有注意到它有多大!我想現在所有新的Selenium問題都在SQA網站上。我很欣賞你接受答案。 – SteveCZ