一、CSS定位
速度快
find_element_by_css_selector(css_selector) #css_selector表示是css选择器表达式
1. id选择器
# id 通过元素id属性进行元素选择
2. class选择器
.class # 表示通过元素的class属性进行元素选择
driver.find_element_by_css_selector("#pass").send_keys("admin") driver.find_element_by_css_selector(".dzyxA").send_keys("admin")
3. 层级选择器
1) 元素父子关系
element1>element2 # 直接子元素
p[id='p1']>input
2)隔代层级
element1 element2 # element2是element1的后代
div #passwordA
二、CSS拓展
1. 以字符为开头的元素
标签名[属性名称^='匹配内容'] input[type^='p']
^:以...开头
2. 以字符结束的元素
标签名[属性名称$='匹配内容'] input[type$='d']
$:以...结尾
3. 文本内容
标签名[属性名称*='匹配内容'] input[typalue']
*:包含value元素
三、总结
四、元素操作
1. 点击操作 element.click()
2. 输入操作 element.send_keys("value")
3. 清除操作 element.clear() 输入框中的内容全部清除
driver.find_element(By.ID, "j_password").clear()
五、浏览器操作
1. 窗口操作
# 窗口最大化
driver.maximize_window()
# 窗口大小
driver.set_window_size(500, 500)
# 窗口位置
driver.set_window_position(500, 500)
import time
from selenium import webdriver
driver = webdriver.Chrome() # 谷歌浏览器驱动
driver.get('https://www.baidu.com/')
# 窗口最大化
driver.maximize_window()
time.sleep(3)
# 窗口大小
driver.set_window_size(500, 500)
time.sleep(3)
# 窗口位置
driver.set_window_position(500, 500)
time.sleep(3)
driver.quit() # 退出浏览器
2. 页面操作
driver.back() #返回先前页面
driver.forward() # 前进
driver.refresh() # 刷新
driver.close() # 关闭当前页面
driver.quit() # 浏览器关闭
print(driver.title) # 获取页面title
print(driver.current_url) #获取浏览器地址
# 获取用户名输入框大小
print(driver.find_element(By.ID, "j_username").size)
# 获取页面上第一个超链接文本
print(driver.find_element(By.LINK_TEXT,"新浪").text)
# 获取第一个页面超链接地址
print(driver.find_element(By.LINK_TEXT, "新浪").get_attribute("herf"))
3. 显示操作
is_displayed() #判断元素是否可见
is_enabled() #判断元素是否可用(置灰)
is_selected() # 判断元素是否选中(复选框)
# is_displayed() #判断元素是否可见
print("spam标签是否可见,默认为false", driver.find_element(By.ID,"value").is_displayed())
# is_enabled() #判断元素是否可用(置灰)
print("按钮是否可用,默认为false", driver.find_element(By.ID,"value").is_enabled())
# is_selected() # 判断元素是否选中(复选框)
print("复选框是否选中", driver.find_element(By.ID,"value").is_selected())
六、鼠标操作
实例化对象:
action = ActionChains(driver) # driver表示浏览器驱动
调用方法:
action.context_click(driver.find_element(By.ID,"value")) action.double_click(element) action.drag_and_drop(source, target)执行调用方法:
action.perform()
python快捷导包:Alt+Enter
1. 鼠标右击操作
# 创建对象
action = ActionChains(driver)
# 调用鼠标对象
action.context_click(driver.find_element(By.ID,"pass"))
# 调用鼠标双击方法
action.perform()
2. 鼠标双击操作
# 创建对象
action = ActionChains(driver)
element = driver.find_element(By.ID,"pass")
element.send_keys("admin")
# 调用鼠标双击方法
action.double_click(element)
# 调用鼠标对象
action.perform()
3. 鼠标拖拽
source = driver.find_element(By.ID,"div1")
target = driver.find_element(By.ID,"div2")
element.send_keys("admin")
# 创建对象
action = ActionChains(driver)
# 拖拽
action.drag_and_drop(source, target)
# 调用鼠标对象
action.perform()
4. 鼠标悬停
element = driver.find_element(By.CSS_SELECTOR, "button") #第一个button
# 创建对象
action = ActionChains(driver)
# 悬停
action.move_to_element(element)
# 调用鼠标对象
action.perform()
5. 鼠标拖拽单元素
element = driver.find_element(By.CSS_SELECTOR, 'value')
action.drag_and_drop_by_offset(element, 265, 0)
七、键盘操作(模拟快捷键)
send_keys(keys.Back_SPACE) 删除键
send_keys(key.SPACE) 空格键
send_keys(keys.TAB) 制表键
send_keys(keys.ESCAPE) 回退键
send_keys(keys.ENTER) 回车键
send_keys(keys.CONTROL, 'a') 全选
send_keys(keys.CONTROL, 'c') 复制
element = driver.find_element(By.ID, 'pass')
element.send_keys("123")
time.sleep(3)
element.send_keys(keys.BACK_SPACE) # 这条有错
time.sleep(3)
报错:module 'selenium.webdriver.common.keys' has no attribute 'BACK_SPACE'
解决:element.send_keys(Keys.BACK_SPACE) 大写并导包
from selenium.webdriver import Keys