python selenium系列(九)元素定位进阶之多层框架定位

作者:平山

http://blog.51cto.com/2681882/2293993

一 前言

python selenium系列(八)元素定位进阶之分层定位

一文中,介绍了层级定位的思想。在实际应用中,还会遇到另外一种情况:元素属性唯一,定位方法也正确,但元素却定位不到。此时,需要检查下该元素是否在frame里。而针对这种情况,selenium 提供的switch_to.frame方法,可以轻松解决该问题。

二 实例

假设现在我们有如下一个页面,需要对其进行自动化登录操作:

可能你会以为,这个页面也没什么特别之处,登录操作也是WEB UI自动化最常见、最基本的操作了,应该没啥问题吧。事实是,虽然页面元素都是唯一的,按常规的定位方法却无法定位到输入框和登录按钮,那原因是什么呢?

先看下页面源码,如下:

从页面源码标注的红框部分可知,要定位的元素是在一个iframe里,也就是说,当前页面嵌套了一个iframe页面,而登录操作的元素正是在这个iframe页面。所以,要操作iframe的元素,需要先转到这个页面,然后才能对该页面的元素进行操作,此时,需要使用switch_to.frame方法。

登录脚本源码主要部分如下:

在脚本里,主要使用了switch_to.frame方法操作iframe中的元素,为了简便,元素的xpath表达式是直接在浏览器复制的,不建议实际应用中直接复制,难以阅读和维护。

三 总结

本文主要介绍了多框架场景中iframe元素的定位方式,使用了switch_to.frame方法;如果是多窗口场景,相应的方法是switch_to.window,思路相同,不在赘述。

看完本文有收获?请转发分享给更多人

关注 【小蟒社区】,一起学Python

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20181007G0GED600?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券