好友
阅读权限10
听众
最后登录1970-1-1
|
200吾爱币
本帖最后由 01awzh 于 2023-8-8 10:47 编辑
菜鸟一枚,自己 编了个程序,使用selenium+openpyxl去做自动填充网页上表单的程序。(这个网页表单填充程序运行在win7 32位的系统、ie8浏览器,这个操作环境无法改变)
目前遇到最大的问题就是无法准确判断出网页是否已经加载完毕。
不想去无脑time.sleep,那样太浪费程序的运行时间了,效率太低了,碰到服务器卡顿的时候,可能等待一个页面加载就需要至少30秒
最开始用selenium自带的显示等待去解决。。。WebDriverWait().until(EC.presence_of_element_located((By.)))这个有BUG,设置BY.XPATH(等待指定路径元素加载完毕)或者BY.ID(等待指定ID元素加载完毕),会出现 一个问题:::就是页面已经加载完毕了,但是就是找不到,自己编的程序直接卡死
又想了一个方法:::跑一个while的死循环,寻找div数组:search_div = browser.find_elements(By.TAG_NAME,'div') ,当数组长度大于0时,代表了至少找到了一个div,此时就判断页面加载完毕,跳出该死循环,开始执行下一步。
如果div数组长度是0,那么就等待time.sleep一秒,再寻找div数组。
这个方法还是不行,有时候页面已经加载完了,还是div数组长度还是0.
又又想了一个法子:::去拦截post返回的数据,如果拦截到指定的返回数据就判断页面加载完毕,可是这里不太清楚怎么弄,有大神有详细一点的教程吗
或者有有没有什么更好的法子去准确判断页面加载完毕?
这个要往里录入表单的系统还容易弹出各种弹窗,或者有时候浏览器直接崩溃掉,崩溃后就只能重新刷新界面,总而言之这个系统真的相当容易卡顿,一旦卡顿可能会卡死好几分钟甚至更长时间才能缓过来。
在这个系统里填表真是糟老罪了,数据量还超大,还望大神详细指点一下如何应对这种卡顿的系统
又简单尝试了一下seleniumwire,现在我用的是selenium3.4版本,那台电脑只能离线的状态下安装seleniumwire库,可没有找到合适的seleniumwire库
|
最佳答案
查看完整内容
同感,目前我的解决办法是用time.sleep,有时候确实不准,遇到特殊情况,就会死掉,我是直接捕获异常,然后在异常里重新执行的,多试几次总比直接中断好吧。
|
发帖前要善用【论坛搜索】功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。 |
|
|
|
|