前言:最近想实现使用selenium去自动操作滑块验证码,但是滑块验证加在了iframe中,一开始定位半天报错,最后才了解是元素在iframe中,要切换才行
一、从主档切换到iframe的方法
写代码的时候,会发现提示输入这个switch_to_frame(),但是选择之后会出现switch_to_frame 的时候,就说嘛这个方法以及out了,这个时候使用switch_to.frame()就可以了
# 使用id定位,当iframe的id为iframe_id的时候
driver.switch_to.frame('iframe_id')# 使用WebElement定位(各种定位方式都行,没有限制必须id)
iframe = driver.find_element_by_id("iframe_id")
driver.switch_to.frame(iframe)
这个时候再定位iframe上的元素就可以定位到了
二、从iframe切换到主档
当我们切换到iframe定位完成之后,再定位主档的元素就定位不到了,这个时候就要切换到主档,我们加上代码的一行代码就行了
# 从iframe切换到主档
driver.switch_to.default_content()
三、上面的两种方法我都实践过,下面的算是延伸
iframe嵌套的时候,如下
<iframeid="iframe1"><iframeid="iframe2"></iframe></iframe>
1.我们可以一步步的切换到frame2
# 切换到一级iframe
driver.switch_to.frame("iframe1")# 切换到二级iframe
driver.switch_to.frame("iframe2")
2.如果想从二级回到一级,也就是回到父级,可以使用下面的代码
driver.switch_to.parent_frame()
如果上级是主档,则不生效
总结:第三条我没有实操过,但是应该是正确的,大伙可以试试
版权归原作者 偶尔boy 所有, 如有侵权,请联系我们删除。