
用 selenium 请求网页,登陆之后返回的是一段 js,并不是渲染之后的页面,body 里面一个元素都没有,请问该怎么解决 下面是返回的源码
<HTML><HEAD> <SCRIPT src="http://www.v2ex.com/prpall/common/pub/UICommon.js"></SCRIPT> <SCRIPT language=Javascript> var riskCodeCount = 291; var riskCodes = new Array(); riskCodes[0] = new Array('01', '0101', '财产基本保险'); riskCodes[1] = new Array('01', '0102', '财产综合保险'); riskCodes[2] = new Array('01', '0104', '财产一切险'); var classCodeArrays = new Array(); classCodeArrays[0] = new Array('01', '企业财产保险'); classCodeArrays[1] = new Array('02', '货运保险'); classCodeArrays[2] = new Array('03', '普通家财保险'); var comCodeArrays = new Array() ; comCodeArrays[0] = new Array('2320000000', '江苏分公司'); comCodeArrays[1] = new Array('2320100000', '南京分公司'); comCodeArrays[2] = new Array('2320101000', '南京市江宁支公司'); try { parent.document.frames("fraTitle").loadPageForSubmit(riskCodeCount,riskCodes,'01'); parent.document.frames("fraTitle").loadClassForm(14,classCodeArrays); parent.document.frames("fraTitle").loadComCode(comCodeArrays); parent.document.frames("fraTitle").setTitleInfo("王婧嫣","江苏分公司","0101"); parent.document.frames("fraTitle").setOptionClassCode("01"); parent.document.frames("fraTitle").setOptionRiskCode("0101"); parent.document.frames("fraTitle").setOptionComCode(2320000000); parent.document.frames("fraTitle").controlShow(false,true); top.fraTop.rows = "0,0,82,*"; if(1==0) { parent.document.frames("fraTitle").setComCode("2320000000"); parent.document.frames("fraTitle").spanCom.style.display = ""; parent.document.frames('fraTitle').spanComCode.style.display = "none"; parent.document.frames('fraTitle').spanComCode1.style.display = "none"; } else { parent.document.frames("fraTitle").spanCom.style.display = "none"; } var strTemp = "<img class=button name='menuPowerImage' src='http://www.v2ex.com/prpall/common/images/butHide.gif' OnClick='showHideFrame();'>"; parent.document.frames('fraTitle').spanMenuPowerImage.innerHTML = strTemp; if(parent.fraSet.cols=="0%,*") { parent.document.frames('fraTitle').showHideFrame(); } parent.fraRight.cols = "*"; parent.fraRight.rows = "100%,0%,*"; //非车险的 UICodeGet.jsp parent.fraCode.window.location = "/prpall/commonship/pub/UICodeGet.jsp"; //用 commship 下面的 codeget parent.fraMenu.window.location = "/prpall/commonship/pub/UIMenuShip.jsp"; } catch(e) { } </SCRIPT> </HEAD> <BODY></BODY></HTML> 1 xuegj1010 OP 代码太长了截取了一部分,请问这段代码是什么意思,怎样才能获取我想要的 dom 元素呢? |
2 gitopen 2018-07-10 18:06:18 +08:00 via Android 用 selenium 把滚动条拖到页面最底部,页面就渲染了 |
4 jimmyczm 2018-07-10 18:50:18 +08:00 js 加密貌似就会这样 |
5 ex2vkf 2018-07-10 19:17:48 +08:00 via iPhone 用 scrapy-splash |
8 xiaqi 2018-07-11 07:47:57 +08:00 via Android 看上面代码,应该是个 iframe。 你用的哪个 driver ? 用 chrome 或 firefox 应该不会有问题呀。 |
9 xuegj1010 OP @xiaqi 公司的项目比较老,只能在 ie 上面跑,所以用的是 IEDriverServer.exe 和 phantomjs.exe ,最终是要用 phantomjs.exe ,这两个驱动返回的结果都是上面的 js。所以比较郁闷。这段代码应该是会生产一个用于操作的菜单,ie 浏览器中可以显示,但是我用 selenium 看不到 frame。。。 |
13 xuegj1010 OP  |
14 xuegj1010 OP |
15 xuegj1010 OP 上面的图片好像可以用,登陆前后用 F12 查看 html 结构是一样的,但是用 selenium 请求回来的页面却是上面的 js 代码。请问该怎么解决? |
16 xuegj1010 OP 问题已经解决,登陆之后需要切换一下,driver.switch_to.default_content()就可以找到对应的页面了,感谢各位的回答。谢谢。 |