Selenium phantomjs与spynner等待网页加载完成方式总结
来源:互联网 发布:ubuntu挂起后无法唤醒 编辑:程序博客网 时间:2024/06/01 07:57
利用无头浏览器对网页元素进行模拟操作时经常遇到的问题就是**元素不存在
这样的错误。原因大概有这么几种。
1. 网页没有加载完成,因此定位不到元素
2. 网页元素显示样式设置为不可见,即display:none
,常见的如一些悬停显示的菜单。
3. 元素在iframe
中,常见的情况比如腾讯网站的登录框。
一般来讲,在网页源代码中能够看到的且display
属性设置为可见的元素,selenium等工具才能够正常定位,要不然就会出现元素不存在的错误。
第2种情况可以使用一些模拟行为触发不可见的元素,或者调用js
、jquery
修改display
属性。
第3种情况selenium可以使用switch_to_frame()
切换iframe
本文重点说下第一种情况,网页只有完全加载,元素才可能被定位,但是网页是否加载完成又该怎么判断、处理呢。
常见处理方法如下:
1. time.sleep()
直接等待几秒钟,等待网页加载完成,这种方法很死板,网页加载是否加载也不能预测,只能撞大运,但也是最简单的一种方法。
2. selenium的driver.implicitly_wait()
,隐式等待,全局性设置,只用设置一次就可以。
3. selenium的WebDriverWait(driver, 100).until(lambda x: x.find_element_by_xpath('.WB_FEED'))
,显式等待
4. spynner的br.wait_for_content(lambda br: 'WB_feed' in br.html)
,类似于selenium的显式等待
5. spynner的各类操作,如load、click等等操作均内置了等待内容加载的参数,原来的参数如br.click('div.login-switch', wait_load=True)
,新版的参数形式如br.load("html_controls.html", 1, wait_callback=wait_load)
- Selenium phantomjs与spynner等待网页加载完成方式总结
- 使用selenium等待网页加载完成,lxml解析网页,利用urllib爬取图片
- Selenium WebDriver等待页面元素加载完成
- python+selenium+PhantomJS爬取网页动态加载内容
- Selenium + phantomjs使用总结
- Selenium 使用 Selenium+PhantomJS 以静默方式完成前端页面 UI 自动化测试
- Selenium 与PhantomJS
- selenium webdriver(Appium)如何等待页面元素加载完成
- selenium webdriver(Appium)如何等待页面元素加载完成
- selenium webdriver(Appium)如何等待页面元素加载完成
- selenium webdriver——等待页面元素加载完成
- selenium webdriver学习 -怎么等待页面元素加载完成
- java selenium (十三) 智能等待页面加载完成
- selenium之如何等待页面元素加载完成
- 网页截图方案selenium/phantomjs
- Selenium+PhantomJS加载ajax数据
- Selenium 与 Spynner 切换frame(iframe)方法对比
- Selenium 等待方式
- 设计模式深入浅出(三)接口适配——桥接
- lucene索引的增删改查/lucene索引维护
- thinkphp5的入门学习(3)系统登录的相关设置
- 求一个数在计算机中存储的二进制补码的c语言程序
- 【POJ3683】Priest John's Busiest Day (2-sat输出任意解)
- Selenium phantomjs与spynner等待网页加载完成方式总结
- JavaScriptDOM练习之无缝轮播
- 剑指offer之十九---从上往下打印二叉树
- 深度学习目标检测之RPN-based方法
- linux档案与目录管理1
- 如何在ACM中学习
- java设计模式(十一)——享元模式(Flyweight)
- git简单操作
- 自己搭建Shadowscoks服务器