selenium webdriver (6) -- iFrame

爱⌒轻易说出口 提交于 2019-12-10 08:11:34

selenium提供了frame切换,但不像窗口,提供句柄,当然为了能够切换,它提供了就不是一个函数

driver.switch_to_frame("frameName")                      #切换到frameName里可以是name, locator,id
driver.switch_to_frame("frameName.0.child")
driver.switch_to_default_contents()                      #切换出当前frame

我们经常定位不到元素,明明可以看到,却定位不到,大多跟frame有关,如登录163邮箱页面

from selenium import webdriver
import time

driver = webdriver.Firefox()
driver.get('http://mail.163.com')

print 'Before login-------------------------------------'

#print current page title
title = driver.title
print title

now_url = driver.current_url
print now_url


driver.switch_to_frame("x-URS-iframe")                          #非常容易遗忘这个frame
driver.find_element_by_name("email").clear()
driver.find_element_by_name("email").send_keys("XXXX")
driver.find_element_by_name("password").clear()
driver.find_element_by_name("password").send_keys("XXXXXX")
driver.find_element_by_id("dologin").click()
time.sleep(10)

print 'After login --------------------------------------'
# print title again
title = driver.title
print title

#print url again
now_url = driver.current_url
print now_url

#print  login user
user = driver.find_element_by_id("spnUid").text
print user


driver.close()

同时我们还会遇到这么一个场景,一个页面由两块组成,一侧是sidebar-frame, 另一侧是content-frame,此时你需要先定位一个元素在sidebar-frame中,随后你又要定位到另一个content-frame中的元素,这时你不能直接定位,而需要先切换出之前进入的frame再进入到所要定位元素的frame,再定位元素

driver.switch_to_frame("sidebar_frame")
driver.find_element_by_id("network")
driver.switch_to_default_contents()
driver.switch_to_frame("content_frame")
driver.find_element_by_id("interface")

参考:

《Selenium2自动化测试实战》

《selenium python buildings release 2》

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!