Selenium-Webdriver(python)学习笔记(五)

----定位frame页面中的元素,处理prompt/alert/confirm

1.定位frame页面中的元素

frame页面的内容是属于其它html文件的

在处理其内容前需要先使用switch_to_frame函数将WebDriver对象指向frame页面

当处理完frame页面,可以通过switch_to_default_content函数回到主页面上

代码如下:

import os
from time import sleep
from distutils import log

from selenium import webdriver

dr = webdriver.Firefox()
url = "file:///%s" % (os.path.abspath("main.html"))
dr.get(url)
# 显示frame元素
btn1 = dr.find_element_by_xpath("//input[@id='b1']")
btn1.click()

# 先定位到frame元素
fr = dr.find_element_by_xpath("//iframe[@id='i1']")
# 将dr对象指向frame元素
dr.switch_to_frame(fr)
# 在frame中定位元素并操作
text = dr.find_element_by_xpath("//input[@id='t1']")
btn_in_frame = dr.find_element_by_xpath("//input[@id='b1']")
text.send_keys("Selenium Test")
btn_in_frame.click()
# 输出最后显示的文字
p = dr.find_element_by_xpath("//p[@id='p1']")
log.warn(p.text)

# 回到主页面并隐藏frame
dr.switch_to_default_content()
dr.find_element_by_xpath("//input[@id='b2']").click()


sleep(3)
dr.close()

输出结果:

The Message in t1 is:Selenium Test

 

2.处理prompt/alert/confirm

处理js原生的提示信息prompt/alert/confirm和处理frame类似,使用switch_to_alert方法切换对象

不同的是处理alert时是操作switch_to_alert的返回对象

另外,prompt/alert/confirm种提示信息都使用switch_to_alert进行切换

代码如下:

import os
from time import sleep
from distutils import log

from selenium import webdriver

dr = webdriver.Firefox()
url = "file:///%s" % (os.path.abspath("main.html"))
dr.get(url)

# 处理alert
btn_for_alert = dr.find_element_by_xpath("//input[@id='b3']")
btn_for_alert.click()
alert = dr.switch_to_alert()
# 输出alert信息
log.warn("alert : %s" % alert.text)
alert.accept()

# 处理confirm
btn_for_confirm = dr.find_element_by_xpath("//input[@id='b4']")
btn_for_confirm.click()
confirm = dr.switch_to_alert()
# 输出confirm信息
log.warn("confirm : %s" % confirm.text)
#confirm.dismiss() #点击取消
confirm.accept() #点击确定

# 处理prompt
btn_for_prompt = dr.find_element_by_xpath("//input[@id='b5']")
btn_for_prompt.click()
prompt = dr.switch_to_alert()
prompt.send_keys("Test selenium")
# 输出prompt的提示信息
log.warn("prompt : %s" % prompt.text)
prompt.accept() #点击确定

sleep(3)
dr.close()

输出结果:

alert : It is an alert
confirm : It is an confirm
prompt : It is an prompt

附注:笔者使用Chrome操作prompt时,send_keys无效

相关代码: https://github.com/Ralph-Wang/webdriver_learning/

posted @ 2013-10-27 17:41  _漏斗  阅读(530)  评论(0编辑  收藏  举报