您的位置:首页 > 编程语言 > Python开发

frame 嵌套页面定位元素方法

2017-10-10 16:57 411 查看
在使用Python+Selenium自动 frame 嵌套页面化工具进行元素定位时,经常会遇到 frame 嵌套页面,直接定位是无法定位到的,这个时候就需要通过 switch_to_frame() 方法将当前定位的主体切换了 frame 里。

以163邮箱登陆页面为例,检查输入框元素,直接使用driver.find_element_by_name()函数进行定位,会提示NoSuchElementException: Message: no such element: Unable to locate element: {“method”:”name”,”selector”:”email”}





此时就需要用到driver.switch_to_frame()函数先跳转到frame框架。具体实现代码如下(其中包含获得验证信息代码):

#coding=utf-8
from selenium import webdriver
from time import sleep

driver=webdriver.Chrome()
driver.get('http://mail.163.com/')
driver.refresh()         #刷新页面
driver.maximize_window() #浏览器最大化
#sleep(5)                 #等待
#当执行到 sleep()方法时会固定的休眠所设置的时长,然后再继续执行。
#sleep()方法默认参数以秒为单 位,如果设置时长小于1秒,可以用小数
#点表示,如:sleep(0.5)

#nowhandle = driver.current_window_handle #得到当前窗口句柄

print 'Before login================'
#打印当前页面title
title = driver.title
print title

driver.switch_to_frame('x-URS-iframe')  #需先跳转到iframe框架
driver.find_element_by_name('email').clear()
driver.find_element_by_name('email').send_keys("XXX")
sleep(5)
driver.find_element_by_name('password').clear()
driver.find_element_by_name('password').send_keys("XXX")
sleep(5)
driver.find_element_by_id('dologin').click()
sleep(5)

print 'After login================'
#再次打印当前页面title
title = driver.title
print title
#打印当前页面URL
now_url = driver.current_url
print now_url
#获得登录的用户名
user = driver.find_element_by_id('spnUid').text
print user
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  python selenium