2014-07-22 46 views
1

我正在使用Selenium的Python實現編寫腳本。當腳本到達這一行時:Selenium webdriver掛在element.click

driver.find_element_by_id('ctl00_Top_EntryButton').click() 

頁面加載模態對話框,但python腳本掛在命令上。 我調試了一下,它似乎卡住了socket.py while while循環,我想它正在等待一些輸入。

有沒有人有什麼想法?

編輯
我加入一些代碼清晰:

driver = webdriver.Firefox() 
driver.get("https://www.somesite.com") 
driver.switch_to_frame("mainIFrame") 
driver.find_element_by_id('ctl00_Top_EntryButton').click() 
+0

很難知道沒有看到一些代碼 –

+0

我增加了一些更多的代碼... – noamelf

+1

嘗試改變'driver.find_element_by_id( 'ctl00_Top_EntryButton')。點擊()''由driver.execute_script(「的setTimeout(函數(){ document.querySelector(\「#ctl00_Top_EntryButton \」)。click()},1000);「)'。這樣做,但通過注入JavaScript。因爲它延遲執行1秒,並且JS執行爲異步,所以rember添加睡眠呼叫。在我的情況下,問題是由於單擊按鈕關閉窗口和Selenium在單擊(和其他一些操作)之後等待頁面加載而引起的。在Selenium「核心」中關閉封閉的無限循環後等待頁面加載。 – Misaz

回答

0

這有可能是你的程序獲取到。點擊()函數時,網頁已尚未加載,和因此點擊功能可能無法正常工作。嘗試在.click()行之前添加一個time.sleep(10)行到你的函數,看看是否解決了這個問題。