一:八大元素定位,主要讲比较常用到的几种
- id 实例: driver.find_element_by_id("username").click
- class 实例:driver.find_element_by_class_name("username").click
注意:多个元素共用一个class,如果像列表内有多个按钮这种,需要操作某个按钮。可以先获取class内的所有元素,然后进行下标的方式去操作某个元素。如果需要都点击一遍,可以把返回值做一个循环操作。 - name 实例:driver.find_element_by_id("username").click
- xpath(万能,重点)实例: driver.find_element_by_xpath("/html/body/div/ul[2]/li[1]").click
- css(万能,重点)实例: driver.find_element_by_css_selector("body > div > ul > li:nth-child(2)").click
二:浏览器的操作
- 最大化,最小化
driver.maximize_window() # 最大化浏览器
driver.minimize_window() # 最小化浏览器
- 获取标签页的title、url
driver.title #获取当前标签页的title
driver.current_url #获取当前标签页的url
driver.name # 获取当前浏览器的名称
- 浏览器前进、后退、刷新
driver.forward() # 前进
driver.back() # 后退
driver.refresh() # 刷新
- 打开、关闭新标签页
# 获取当前标签页句柄
driver.current_window_handle
# 获取浏览器所有标签页句柄
handles = driver.window_handles
# 切换标签页
driver.switch_to.window(handles[-1])
# 关闭当前标签页
driver.close()
- 控制浏览器滚动条
driver.execute_script("window.scrollBy(0,1000)")x:必传,正数则向右滑动的像素值,负数则向左滑动的像素值
y:必传,正数则向下滑动的像素值,负数则向上滑动的像素值
三:元素常见操作
- 元素是否可见
# 找到 可见元素
ant_btn3 = driver.find_element_by_class_name("ant-btn3")
ant_btn3.is_displayed()
某个元素若有 display:none 的样式则是不可见,否则就是可见 - 元素是否可点击
# 找到 可点击元素
ant_btn3 = driver.find_element_by_class_name("ant-btn1")
ant_btn3.is_enabled()
某个元素若有 disabled 属性则是不可点击,否则就是可点击 - 元素是否已被选中
# 找到 未被选中的元素
option1 = driver.find_elements_by_tag_name("option")[0]
option1.is_selected()
某个元素若有 selected 属性则是已被选择 - 表单提交
# 找到搜索框
search_text = driver.find_element_by_id(\'kw\').send_keys(\'JC\')# 提交表单
search_text.submit()submit() 方法用于提交表单。
实际场景:在搜索框输入关键字之后的“回车” 操作, 就可以通过该方法模拟
四:鼠标操作
- 鼠标左键、右键单击、双击
from selenium.webdriver import ActionChains
# 创建实例
chains = ActionChains(driver)
# 登录按钮
username = driver.find_element_by_id("username")
password = driver.find_element_by_id("password")# 左键点击
chains.click(username).perform()# 右键点击
chains.context_click(username).perform()# 双击
chains.double_click(password).perform() - 鼠标悬停
# 悬停到设置按钮
chains.move_to_element(login_btn).perform()
五:键盘操作
-
# 找到搜索框
inputElement = driver.find_element_by_id("kw") -
# 输入搜索内容
inputElement.send_keys("小菠萝测试笔记") -
# ctrl+a全选
inputElement.send_keys(Keys.CONTROL, "a") -
# ctrl+c 复制输入框内容
inputElement.send_keys(Keys.CONTROL, \'c\') -
# ctrl+x 剪切输入框内容
inputElement.send_keys(Keys.CONTROL, \'x\') -
# ctrl+x 剪切输入框内容
inputElement.send_keys(Keys.CONTROL, \'x\') -
# ctrl+v 粘贴输入框内容
inputElement.send_keys(Keys.CONTROL, \'v\') -
# 空格键
inputElement.send_keys(Keys.SPACE) -
# 后退键
inputElement.send_keys(Keys.BACKSPACE) -
# tab键
inputElement.send_keys(Keys.TAB) -
# 回车键
inputElement.send_keys(Keys.ENTER) -
# 刷新页面
inputElement.send_keys(Keys.F5) - 如果定位不到元素,如上传弹窗。可以使用以下两个库直接操作鼠标和键盘
pymouse(鼠标对象),
pykeyboard(键盘对象)
六:显示等待、隐性等待、强制等待
七: