一、警告窗处理
在WebDriver中处理JavaScript生成的alert、confirm和prompt十分简单,具体做法是,首先使用switch_to.alert()方法定位,然后使用text、accept、dismiss、send_keys等进行操作。
- text 返回alert、confirm、prompt中的文字信息。
- accept() 接受现有警告框
- dismiss() 取消现有警告框
- send_keys() 在警告框中输入文本
示例1:
from selenium import webdriver
driver = webdriver.Chrome()
#触发alert弹窗
driver.find_element_by_id("b1").click()
#获取警告框
al = driver.switch_to.alert
#获取警告框提示信息
alert_text = al.text
print("alert_text")
#接受确认警告框
al.accept()#点击确定会消除alert
示例2:
from selenium import webdriver
driver = webdriver.Chrome()
#触发alert弹窗
driver.find_element_by_id("b2").click()
#获取警告框
al = driver.switch_to.alert
#获取警告框提示信息
alert_text = al.text
print("alert_text")
#接受确认警告框
#al.accept()#点击确定会消除alert
#取消确认框
al.dismiss()
示例3
from selenium import webdriver
import time
driver = webdriver.Chrome()
#触发alert弹窗
driver.find_element_by_id("b2").click()
#获取警告框对象
al = driver.switch_to.alert
#提示框输入信息
al.send_keys("hello prompt")
time.sleep(2)
#获取警告框提示信息
alert_text = al.text
print("alert_text")
#接受确认警告框
al.accept()#点击确定会消除alert
示例:HTML元素弹窗
获取对应的html元素按钮,点击即可。
二、窗口截图
from selenium import webdriver
# 创建浏览器驱动对象
driver = webdriver.Chrome()
# 访问网址
driver.get("http://www.baidu.com")
# 截屏,截取整个页面
driver.get_screenshot_as_file("./all.png")
# 截屏,截取单个元素
ele = driver.find_element_by_id("kw")
ele.screenshot("./ele.png")
driver.quit()
三、编辑框操作
ele = driver.find_element_by_id("input1")
#ele.clear()
ele.send_keys("password")
time.sleep()
print(ele.get_attribute('value'))
四、下拉框处理
- 单选框
获取对应元素,点击即可
- 勾选框
ele1 = driver.find_element_by_selector('[value="bike"]')
if not ele1.is_selected():
ele1.click()
eles = driver.find_element_by_tag_name('input')
for ele in eles:
if not ele.is_selected():
ele.click()
- 多选框
WebDriver提供了Select类处理下拉框
Select类: 用于定位标签
select_by_value(): 通过value值定位下拉选项
select_by_visible_text(): 通过text值定位下拉选项
select_by_index(): 根据下拉选项的索引值进行选择。第一个是0
#多选框
from selenium.webdriver.support.select import Select
from selenium import webdriver
driver = webdriver.Chrome()
driver.get("")
# 定位到下拉框元素
se = Select(driver.find_element_by_id('multi'))
# 根据元素的value属性选择
se.select_by_value('benz')
#根据下拉框的文本选择
se.select_by_visible_text('雅阁')
# 根据下标选择
se.select_by_index(3)
#取消默认选中的宝马元素
se.deselected_by_visible_text('宝马 740')
多选框有multiple属性,单选的没有
#单选框
se2 = Select(driver.find_element_by_id('single'))
#根据元素的value属性选择男
se2.select_by_value('male')