作者MIKEmike07 (加油!)
看板Python
標題[問題] selenium webdriver 啟動後網域問題?
時間Mon Sep 3 14:57:35 2018
最近在做一個小project
在local端(mac)運行沒問題
放到VM(REHL7)上花了不少時間終於解決環境問題
但是卡在selenium webdriver 啟動後,網域會出問題
問題是這樣
VM本身有需要設定proxy 才能連到外網或內網,Firefox or Chrome有設定一個proxy url
的dat檔才能上網
我經過交叉比較,我發現我可以用firefox or chrome在瀏覽器 上得了公司網站
內部登入網站
但當我用selenium webdriver啟動之後,我截圖,發現我是被轉到一個public頁面
跟我用我手機LTE 去相同url是同一個畫面
我一開始在code裡面加上proxy設定,結果返回的是一個空白頁面
所以我認為是 當我啟動program之後 是不是直接變成在外網的狀態?
感覺好怪...
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 67.161.5.197
※ 文章網址: https://webptt.com/m.aspx?n=bbs/Python/M.1535957858.A.6CC.html
1F:推 rexyeah: 不能自己機器跑proxy service然後VM透過你的機器出去嗎? 09/03 15:48
2F:→ rexyeah: VM網路是bridge還是NAT出去啊? 09/03 15:49
3F:→ MIKEmike07: VM 在data center, VM要設proxy 才能連內網加外網。br 09/04 04:26
4F:→ MIKEmike07: owser 要設定URL, .dat一個連結 才能上網(內和外) 09/04 04:26
5F:→ MIKEmike07: 確認過,單獨開browser 去同一個公司連結沒問題,但se 09/04 04:28
6F:→ MIKEmike07: lenium 跑的就會被deny 或是跑到外網的頁面(跟我手機 09/04 04:28
7F:→ MIKEmike07: 上一樣網站出現一樣的畫面) 09/04 04:28
8F:→ MIKEmike07: 另外在REHL,browser 不會pop up模擬,我都需要靠截 09/04 04:29
9F:→ MIKEmike07: 圖debug lol 09/04 04:29
10F:→ MIKEmike07: 您對selenium and wbdriver 熟嗎 可以私下請教? 謝 09/04 04:30
11F:→ MIKEmike07: 謝 09/04 04:30
12F:→ s860134: 你瀏覽器怎樣設定 webdriver 就做一樣的設定 09/04 09:21
13F:→ s860134: 你 chrome 和 firefox 沒帶 proxy 當然連不出去 09/04 09:22
14F:→ s860134: 你用 .get 可以切換網址阿 09/04 09:27
15F:→ MIKEmike07: 不是proxy 問題,沒設proxy 還是可以上google, yahoo 09/04 09:38
16F:→ MIKEmike07: page 09/04 09:38
17F:→ MIKEmike07: 我現在是 可以取得正確的網址,但頁面截圖出來是空白 09/04 10:17
18F:→ MIKEmike07: 的,感覺是跳到一個空白的頁面.. 理論上是這樣 我URL 09/04 10:17
19F:→ MIKEmike07: 設定google 內網一個網址,他會跳到這個內網網址,然 09/04 10:17
20F:→ MIKEmike07: 後轉到sso login的網址,但他好像在內網網址那邊就停 09/04 10:17
21F:→ MIKEmike07: 下來了 回傳的網址是內網網址,但這不應該的@@ 09/04 10:17
22F:推 rexyeah: 也許您已經嘗試過了,但我還是問一下,--proxy-server= 09/04 11:03
23F:→ rexyeah: "http=xx.xx.xx.xx:xx;https=xx.xx.xx.xx:xx" 09/04 11:03
24F:→ rexyeah: 加到webdriver的option這個方法也嘗試過嗎? 09/04 11:04
25F:→ rexyeah: 不太懂「設定google 內網一個網址」是什麼意思? 09/04 11:05
26F:推 rexyeah: 或是你可以用devtool看到底是哪段code把你轉去別的網址 09/04 11:07
是的,我嘗試過
設定google 內網一個網址就比如說
https://google/clouddeveloper.com
在google內網情況下
如果我還沒有sso login google的話,你輸入這個連結他會跳到sso login page
在google外網情況下
你去這個連結,可能就直接deny你連線,不然就是跳到一個 google cloud頁面etc
27F:推 s860134: 癥結應該是 "url 的 .dat" 是啥東西 09/04 12:07
28F:→ s860134: 根據你的敘述,應該是開啟瀏覽器瀏覽網頁會先進行 SSO 09/04 12:16
29F:→ s860134: 認證,SSO 認證的彈出視窗應該是同於分頁 09/04 12:17
30F:→ s860134: 用 window_handles 確認是否多於一個,若是,則使用 09/04 12:18
31F:→ s860134: .switch_to_window 指定 handle id 進行切換 09/04 12:18
32F:→ s860134: 之所以你看到白色畫面,是因為在等你 SSO 認證吧 09/04 12:19
.dat 檔 是一種資料檔
目前問題已經解決了,我設定好 proxy連結到.dat 這段沒有問題
但我一直無法pass的原因是...
selenium 是需要類似x-windows來work,去模擬網頁
我一直用ssh 連到那個machine來執行,selenium好像在用ssh連線會有問題
我會發現是因為我突然想說我用vnc的terminal來run code
結果就成功了==
33F:推 rexyeah: 所以是ssh x11 forwarding的問題? 09/04 12:48
34F:→ rexyeah: 那用pyvirtualdisplay把display關掉也許就好了吧 09/04 12:49
我在rehl底下,從來沒跑出過瀏覽器windows,或許 我之前有試過什麼display off
但可能沒效或我當下也沒設 proxy所以失敗就刪除,我待會試試
※ 編輯: MIKEmike07 (100.1.180.88), 09/04/2018 13:07:59