作者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/cn.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