1. 对话框操作
1.1 alter 提示对话框
# 定位按钮
driver.find_element_by_id("button1").click()
time.sleep(2)
# 要从网页上 切换到 对话框上
txt = driver.switch_to.alert.text
print(txt)
time.sleep(2)
# 点击对话框的确认按钮
driver.switch_to.alert.accept()
1.2 取消
# 定位按钮
driver.find_element_by_id("button1").click()
time.sleep(2)
# 要从网页上 切换到 对话框上
txt = driver.switch_to.alert.text
print(txt)
time.sleep(2)
# 点击对话框的取消按钮
driver.switch_to.alert.dismiss()
注:确认对话框多了一个取消按钮dismiss()
1.3 对话框处理
# 1.网页中常用的弹出框有三种
(1).alert: 警告框
(2).confirm: 确认框
(3).prompt: 提示框
# 2.弹出框的处理
遇到弹出框, 需要从原有页面切换至弹出上, 再进行操作.
# 3.常用方法:
obj.text # 获取弹出框文本
obj.accept() # 确定
obj.dismiss() # 取消
2. frame嵌套
默认我们可以在一个页面中 展示另外一个页面的内容,这个需要借助于框架标签iframe 来实现
<body>
<h1>主页</h1>
<div>
<iframe src="index.html"></iframe>
</div>
<div>
<iframe src="news.html"></iframe>
</div>
</body>
主页中就展示了两个其他的页面,一个是首页、一个是新闻页
这个时候吗,如果我们想直接定位 首页中的 元素是拿不到的。
如何拿到呢?
driver.get("http://127.0.0.1:8020/Day01/home.html")
# 切换到某个frame中 这里切换可以根据 下标 id name等等
driver.switch_to.frame(0)
# 我们切换到frame这个框架 后 就可以直接 通过driver来定位 该frame中的元素
driver.find_element_by_id("username").send_keys("张三")
2.1 从主页 切换到子页1
driver.get("http://127.0.0.1:8020/Day01/home.html")
driver.switch_to.frame("iframe1")
# 我们切换到frame这个框架 后 就可以直接 通过driver来定位 该frame中的元素
driver.find_element_by_id("username").send_keys("张三")
2.2 从子页1切到子页2
默认是不能从一个子页 切换到另外一个子页的,需要先从子页退出到主页,在从主页切换到其他子页
# 退出 frame 回到主页
driver.switch_to.default_content()
# 切换到第2个子页
driver.switch_to.frame("iframe2")
t = driver.find_element_by_id("h11").text
print(t)
3. 窗口切换
3.1. 介绍
我们一个浏览器 可以有多个窗口,我们可以实现多window窗口切换。
我们的每一个窗口都有一个唯一的标识,可以通过标识来找到该窗口。
我们称这个标识为 句柄。
常用方法:
(1).说明:在Selenium中封装了获取当前窗口句柄、获取所有窗口句柄和切换到指定句柄窗口的方法; 句柄:英文handle,窗口的唯一识别码
(2).实现方法:
1).driver.current_window_handle ---> 获取当前窗口句柄
2).driver.window_handles ---> 获取所有窗口句柄
3).driver.switch_to.window(handle) ---> 切换指定句柄窗口
3.2.案例
如果我们从窗口1 超链接打开了窗口2
则句柄默认不会自动切换到窗口2,需要我们手动切换
# 定位北京超链接
driver.find_element_by_id("beijing").click()
# 切换句柄 到 我们的beijing窗口
driver.switch_to.window(driver.window_handles[1])
同意道理,从窗口2 打开了窗口3 ,则句柄也要响应的代码切换
driver.find_element_by_id("baidu").click()
# 切换到 百度窗口
driver.switch_to.window(driver.window_handles[2])
4.下拉框
4.1 下拉框处理
# 1.操作方法:
(1).select_by_index(index) --> 根据option索引来定位,从0开始
(2).select_by_value(value) --> 根据option属性value值来定位
(3).select_by_visible_text(text) --> 根据option显示文本来定位
# 2.示例代码:
# 导包
from selenium.webdriver.support.select import Select
# 实例化对象
select = Select(driver.find_element_by_id("selectA")) select.select_by_index(2) # 根据索引实现
select.select_by_value("sh") # 根据value属性实现
select.select_by_visible_text("A北京") # 根据文本内容实现
5. 滚动条处理
# 1.为什么要学习滚动条操作?
(1).在HTML页面中,由于前端技术框架的原因,页面元素为动态显示,元素根据滚动条的下拉而被加载
(2).页面注册同意条款,需要滚动条到最底层,才能点击同意
# 2.实现方式
(1).说明:selenium中并没有直接提供操作滚动条的方法,但是它提供了可执行JavaScript脚本
的方法,所以我们可以通过JavaScript脚本来达到操作滚动条的目的。
(2).设置JavaScript脚本控制滚动条
js = "window.scrollTo(0,1000)"
(0:左边距;1000:上边距;单位像素)