用 selenium 请求网页,登陆之后返回的是一段 js,并不是渲染之后的页面,body 里面一个元素都没有,请问该怎么解决 下面是返回的源码
<HTML><HEAD>
<SCRIPT src="/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='/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 ![avatar]( https://note.youdao.com/yws/api/personal/sync ? method=download&fileId=WEB1d79c8da188730ba773fe359955cad99&version=2640&cstk=bOiTnvTt)
|
14
xuegj1010 OP |
15
xuegj1010 OP 上面的图片好像可以用,登陆前后用 F12 查看 html 结构是一样的,但是用 selenium 请求回来的页面却是上面的 js 代码。请问该怎么解决?
|
16
xuegj1010 OP 问题已经解决,登陆之后需要切换一下,driver.switch_to.default_content()就可以找到对应的页面了,感谢各位的回答。谢谢。
|