[問題] Selenium 擷取跳出視窗

作者: ntumath (math mad)   2017-06-03 00:01:42
大家好,再擷取網站內容的時候
遇到了跳出視窗,但試了一些方法還是沒辦法抓到跳出視窗的內容
以下是大概的code
from selenium import webdriver
from selenium.webdriver.support.ui import Select
driver = webdriver.Chrome('../chromedriver')
driver.get('http://mops.twse.com.tw/mops/web/t05st10_ifrs')
Select(driver.find_element_by_id('isnew')).select_by_index(1)
driver.find_element_by_id('co_id').send_keys(2892)
driver.find_element_by_id('year').send_keys(102)
driver.find_element_by_id('month').send_keys(1)
driver.find_element_by_xpath("//input[@type='button' and\
@value=' 查詢 ']").click()
time.sleep(1)
driver.find_element_by_xpath("//id='t05st10_ifrs_form']/table[1]/\
tbody/tr[2]/td[3]/input").click()
driver.switch_to_window(driver.window_handles[1])
print(driver.page_source)
driver的handle確實換到跳出的視窗了,可是要取得視窗內的訊息會有錯誤
想請問怎麼解決,拜託大家了
作者: starcaspar (Kaspar)   2017-06-03 22:43:00
考慮用requests嗎?https://hackmd.io/s/r1B0cHxzb原因是這樣的,他的window是由js產生出來的,沒有source code所以Page Source抓到空用Burp找到了POST方法,放在上面那個連結,參數可以依據你要的去調整
作者: wennie0433   2017-06-06 01:19:00
你想要把source code全部秀出來? 還是抓某個欄位可以的話 想看一下你的error log因為我試過是可以把source code秀出來的
作者: swds (天涯遊子君莫問)   2017-06-06 09:32:00
sleep的秒數可能要設久一點,讓它source code都下載完
作者: starcaspar (Kaspar)   2017-06-06 11:02:00
不不,那不是時間問題正如我上面說的,他是js產生的,他有render之後的code,但沒有source code,所以你chrome可以按「檢查」,但是不能按「檢視原始碼」因此selenium的page source在這時候是拿不到東西的不不,只是我還沒找到方法而已
作者: wennie0433   2017-06-06 17:26:00
你可以改用Firefox, chrome確實不行 try it
作者: s860134 (s860134)   2017-06-07 22:55:00
實際上是有原始碼的XD 可以嘗試他還在載入的時候按F12你會看到很明確的 chrome 的開發者工具是有抓到的...http://imgur.com/a/pFCVR感覺這個是個 webdriver 的 bug ,看要不要發個 issue
作者: starcaspar (Kaspar)   2017-06-07 23:23:00
這個bug應該不是只是driver喔你有對網頁右鍵檢視原始碼嗎?切到window之後很多函數都卡住了你介意覆寫他的openWindow函數嗎你注意看,其實你要的東西都在那個函數產生的如果用execute_script去覆寫或是另外執行這樣去取得資料另外其實我個人覺得selenium作用來測試,雖然他也是可以作為爬蟲的目的啦不然換個driver跑,或許還比較快解決
作者: rdman (古愛迪爾)   2017-07-13 15:13:00
照你所說,你有試過直接抓跳出視窗裡面元件的XPath嗎?

Links booklink

Contact Us: admin [ a t ] ucptt.com