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