Selenium WebDriver- 操作frame中的页面元素

#encoding=utf-8
import unittest
import time
from selenium import webdriver
from selenium.webdriver import ActionChains class VisitSogouByIE(unittest.TestCase): def setUp(self):
#启动IE浏览器
#self.driver = webdriver.Firefox(executable_path = "e:\\geckodriver")
self.driver = webdriver.Ie(executable_path = "e:\\IEDriverServer") def test_HandleFrame(self):
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.ui import WebDriverWait
from selenium.common.exceptions import TimeoutException
url = "http://127.0.0.1/frameset.html"
# 访问自动以测试网页
self.driver.get(url)
# 使用索引方式进入指定的frame页面,索引号从0开始。
# 所以想进入中间的frame,需要使用索引号1
# 如果没有使用此行代码,则无法找到页面中左侧frame中的任何页面元素
self.driver.switch_to.frame(0)
# 找到左侧frame中的p标签元素
leftFrameText = self.driver.find_element_by_xpath("//p")
# 断言左侧frame中的文字是否和“这是左侧 frame 页面上的文字”几个关键字相一致
self.assertAlmostEqual(leftFrameText.text, u"这是左侧 frame 页面上的文字")
# 找到左侧frame中的按钮元素,并点击该元素
self.driver.find_element_by_tag_name("input").click()
try:
# 动态等待alert窗体出现
alertWindow = WebDriverWait(self.driver, 10).until(EC.alert_is_present())
# 打印alert消息
print alertWindow.text
alertWindow.accept()
except TimeoutException, e:
print e
# 使用driver.switchTo.default_content方法,从左侧frame中返回到frameset页面
# 如果不调用此行代码,则无法从左侧frame页面中直接进入其他frame页面
self.driver.switch_to.default_content() # 通过标签名找到页面中所有的frame元素,然后通过索引进入该frame
self.driver.switch_to.frame(self.driver.find_elements_by_tag_name("frame")[1])
# 断言页面源码中是否存在“这是中间 frame 页面上的文字”关键子串
assert u"这是中间 frame 页面上的文字" in self.driver.page_source
# 再输入框中输入“我在中间frame”
self.driver.find_element_by_tag_name("input").send_keys(u"我在中间frame")
self.driver.switch_to.default_content() self.driver.switch_to.frame(self.driver.find_element_by_id("rightframe"))
assert u"这是右侧 frame 页面上的文字" in self.driver.page_source
self.driver.switch_to.default_content() self.driver.switch_to.frame("rightframe")
assert u"这是右侧 frame 页面上的文字" in self.driver.page_source
self.driver.switch_to.default_content() def tearDown(self):
# 退出IE浏览器
self.driver.quit() if __name__ == '__main__':
unittest.main()
上一篇:Selenium WebDriver-判断页面中某一元素是否已经显示,通常用于断言


下一篇:BLOG PLUGINS