当前位置: 首页 > 工具软件 > Spynner > 使用案例 >

Selenium 与 Spynner 切换frame(iframe)方法对比

巫研
2023-12-01

在模拟操作网页过程中经常会遇到框架网页或者有iframe的网页,处理不当的话就会定位不到元素,很是让人头痛。
之前遇到典型的例子就是腾讯的登录框,很多都是用iframe加载的,只要能够定位到iframe,定位对应的元素非常简单。
在主要用selenium之前用spynner比较多,spynner的优势在于可以直接看操作过程,劣势在于用户少、文档简单、坑比较多。

spynner
在spynner中,关于frame或者iframe的操作对应是webframe对象,由于spynner是对qtwebkit4的一个封装,因此对应qtwebkit4的webframe对象,官方文档及网上没有切换frame的例子,通过查看spynner源码及qtwebkit的文档,终于找到了切换frame(iframe)的方法。

方法一
child_frames = browser.webframe.childFrames()
1
browser.webframe.childFrames()返回结果为当前页面子框架的列表,可以根据列表中的元素访问对应的frame,如child_frames[0]就是第一个子frame。

方法二
browser.set_webframe(0)
1
设置第1个子frame作为当前的webframe。

selenium
driver.switch_to.frame(0)
driver.switch_to.frame(id)
driver.switch_to.frame(name)
driver.switch_to.frame(driver.find_element方法)
1
2
3
4
selenium关于frame的操作相对灵活一些,可以通过frame的索引、id、name、元素定位来进行切换。

总结
selenium功能相对丰富一些,用的人多,坑少一些,这两年又出了基本相关的书。
spynner文档少,坑比较多,很多时候需要看源码,翻qtwebkit文档。
但是这两个库跟qtwebkit都有着千丝万缕的关系,想用好,还是多了解些qtwekit的知识。

 类似资料: