2014-02-17 31 views
0

的webdriver與Python綁定v2.39.0 火狐27.0(但問題也轉載了與Firefox的最新',火狐26.0和Firefox 27.0)點擊鏈接後,如何阻止Firefox掛起?

在下面的代碼,一旦執行命中obj.click()一定網頁上的鏈接,瀏覽器掛起。如果腳本在終端(Windows)中用Ctrl + C終止,則瀏覽器停止掛起。如果留給它自己的設備,瀏覽器似乎無限期地掛起。

我不確定是否允許我發佈問題頁面的HTML,但我可能能夠與我的團隊進行談判。

這個非常相同的代碼用於與現在造成問題的非常相同的元素完美地工作。我懷疑這是事做

def wait_and_click(obj_id, timeout=global_timeout, locator_attribute = 'ID'): 
    print('waiting for ' + obj_id) 
    obj = WebDriverWait(driver, timeout).until(EC.element_to_be_clickable((eval('By.' + locator_attribute), obj_id))) 
    print("about to click object") 
    obj.click() 
    print("about to return from wait_and_click") 
    return obj 

事情我已經嘗試了自動升級的Firefox,但降級沒有解決的問題(請參閱下面的事情我已經嘗試了一節的更多細節和事情,我都試過):

  • 手動複製
  • 試圖降級到不同版本的Firefox的問題(沒有瀏覽器掛起),並卸載所有擴展
  • 試圖跳過obj.click如果obj_id等於問題的元素時 - 瀏覽器相同的瀏覽器掛
  • 試圖定位 - (因爲有事需要點擊p,但劇本沒有去任何地方)
  • 嘗試了更傳統的WebDriverWait的頁面 然後find_element_by_xpath上的元素不掛通過不同的屬性元素(最初嘗試使用LINK_TEXT,通過XPATH也試過 - 沒有區別),然後單擊
  • 試圖找到在同一頁上的不同鏈接 - 同一個瀏覽器掛
  • 試圖找到在同一網站的不同頁面的鏈接應用程序 - 沒有瀏覽器掛起
  • 試圖保存包含li的頁面源nk和鏈接指向的頁面。我的webdriver打開網頁的本地副本,並單擊問題的鏈接 - 不帶瀏覽器中打開目標網頁掛
+0

當您點擊時,對象是否存在?因爲等待時間超時,如果它超時,你可能會通過那裏沒有對象(我猜)。 – towr

+0

如果它遇到超時,我會不會收到ElementNotFound或TimeoutException錯誤?或類似的東西會導致執行終止(而不是瀏覽器停止工作?)另外,我知道它已經到了obj.click,因爲「即將點擊對象」正在打印到控制檯。 – JoeyC

+0

你是對的,根據文檔,它應該拋出一個異常,如果它沒有找到元素。您是否嘗試過手動複製問題(只需單擊瀏覽器中的元素,或通過控制檯觸發點擊)?至於發佈html或不發佈,你可以從頁面儘可能多地去掉,這將有助於縮小問題的範圍,並且如果你確實需要共享html,那麼它就不會成爲問題。 – towr

回答

1

哎呀,這是這樣一個令人沮喪的解決方案 - 現在看來,這是因爲Skype的工具欄這是隨着最新的Firefox升級而自動安裝的。

值得注意的是它不會輕易消失。如果你去Firefox - >擴展,它只允許你禁用它。你必須去'程序和功能'並從那裏卸載它。之後,它就像一個魅力!

FFS MICROSOFT !!