怎么样判断Phantomjs与web上的js交互完成
主流解决方案有两种方式:1. 记录所有发送的request数目,然后查看所有response的数目,直到response的数目等于request的数目。phantoms有api可以支持记录所有的request和response的数目。2. 通过页面的ajax结束之后的dom状态判断是否完成。比如你改了某个标签,那就一直wait,看这个标签是否已经改完了,完成则代表整个页面加载完。不过,其实这两种方案各有各的缺点。对于方案1,每收到一个response,你就要判断当前的request和response是否相等了。于是便会出现request和response相等了,但是其实还有request没有发出去的情况。所以,在判断的时候一般还要加个timer out,过个几秒在重新判断一次,即使这样,也有漏判的情况。对于方案2,因为页面可能有一堆ajax请求,所以,就的对所有的ajax请求的dom元素修改都进行判断,否则就有可能造成,有的ajax请求已经完成,但是有的还没有完成的情况。酌情处理吧,页面是否加载完成本身就是个挺恶心的事。================这个在stack overflow上有答案了,原来看到过,具体实现可以找找那个答案。
■网友
我也遇到同样的问题,请问楼主有没有好方法去解决。
■网友
可以选取几个 只有在 js 加载完之后 才出现的标签或元素, 通过判断他们是否出现, 可以推断页面是否已经加载完毕. 但通常你只需要 找几个你关心的 即可, 不需要全部加载完全 .顺便给个样例:from selenium.webdriver.common.by import Byfrom selenium.webdriver.support.ui import WebDriverWaitfrom selenium.webdriver.support import expected_conditionstime_out = 5element_xpath = \u0026#39;//*/div/div\u0026#39;wait = WebDriverWait(self.driver, time_out).until( expected_conditions.presence_of_element_located((By.XPATH, element_xpath)))if wait: # do your work here
推荐阅读
- dart这编程语言现在发展怎么样了,语法与Java,c#很相似,甚至更简洁
- 青年|一汽奔腾T77怎么样?车主吐槽:后排座椅太短,和坐小板凳似的
- 电商网站支付流程的流失率是怎么样的从用户点击充值/支付按钮,到支付完成,其中每一步的流失比率都是咋样的
- 作为一个服装供应商,怎么样与淘宝卖家沟通才能卖出自己的产品或者拿到订单
- 在丁丁租房工作的感受是怎么样的
- 城市数据团是怎么样一个团队
- win7中本地连接跟无线网卡同时使用时是怎么样的模式
- 猫扑网南迁广西,媒体唱衰BBS,论坛的未来会怎么样怎样改变
- 宝宝|判断宝宝冷不冷?摸摸两个部位就知道!
- 被人围攻是怎么样一种体验,包括但不限于(蛋糕,口舌,拳脚,西瓜刀,机枪,code review)