selenium多表单操作与多窗口,以及警告框处理
知识是需要经常温习的,不然是很容易遗忘的。
以前自己操作IFRAME,多窗口的时候,觉得很简单。半年没有操作自动化了,知识又还了回去。
写博客有一个好处,可以把自己记住的知识点记录下来,这样,以后自己来翻看的时候,可以很快的找到思路。
毕竟自己不是大神,所以还是多记录一下。
一,多表单切换:
例子:
driver.switch_to.iframe(""if"")
driver.find_element_by_css_selector("[name=kw].").click()
switch_to.frame()默认可以直接取表单的ID,name属性。如果iframe没有可用的id,name属性,则可以通过下面的方式进行的定位。
xf=driver.find_element_by_css_selector(".class") #先通过CSS定位到iframe
driver.switch_to.frame(xf) ##再将定位对象传给switch_to.frame()方法。
driver.find_element_by_css_selector(".class") ###再来操作元素。
driver.switch_to.parent_frame() ###完成了再当前表单上的操作,则跳出当前一级表单。
多窗口操作:
from selenium import webdriver
driver=webdriver.Chrome()
driver.maximize_window()
driver.implicitly_wait(10)
import time
driver.get("https://www.baidu.com/")
#获取当前页面句柄
current_handle=driver.current_window_handle
driver.find_element_by_css_selector("div#u1>a:nth-child(7)").click()
driver.find_element_by_link_text(u"立即注册").click()
time.sleep(1)
#获得当前所有打开窗口的句柄
all_handles=driver.window_handles
#进入注册页面窗口
for handle in all_handles:
if handle!=current_handle:
driver.switch_to_window(handle)
driver.find_element_by_css_selector("[name=userName]").clear()
driver.find_element_by_css_selector("[name=userName]").send_keys("username")
driver.find_element_by_css_selector("[name=phone]").clear()
driver.find_element_by_css_selector("[name=phone]").send_keys(1313313)
time.sleep(1)
#回到百度搜索页面
for handle in all_handles:
if handle==current_handle:
driver.switch_to_window(current_handle)
driver.find_element_by_css_selector("#TANGRAM__PSP_4__closeBtn").click()
time.sleep(1)
driver.find_element_by_css_selector("#kw").send_keys("selenium")
driver.find_element_by_css_selector("#su").click()
time.sleep(2)
driver.quit()
直接上例子,看的更直观些。
三:警告框操作
# coding=utf-8
from selenium import webdriver
from selenium.webdriver import ActionChains
driver=webdriver.Chrome()
driver.maximize_window()
driver.implicitly_wait(10)
import time
driver.get("https://www.baidu.com/")
#鼠标移到“设置”按钮上
link=driver.find_element_by_link_text(u"设置")
ActionChains(driver).move_to_element(link).perform()
#点击“搜索设置”
driver.find_element_by_link_text(u"搜索设置").click() #点击搜索设置按钮
time.sleep(1)
driver.find_element_by_css_selector("div#gxszButton>a:first-child").click()
time.sleep(1)
#跳转到弹出框并点击确定按钮
driver.switch_to_alert().accept()
time.sleep(1)
driver.quit()
这是百度设置中的一个警告框,当作一个例子。
四:下拉框操作;
例子:
xialakuang=driver.find_element_by_css_selector("div.title>select")
Select(xialakuang).select_by_visible_text(u"已中奖")