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无效

浙公网安备 33010602011771号