Selenium-API操作
Selenium-API操作
Selenium简介
环境搭建
Selenium常见操作方法
导包
1、获得浏览器驱动
from selenium import webdriver2、导入时间
import time3、从selenium.webdriver.common.by导入By包进行元素定位
from selenium.webdriver.common.by import By4、导入键盘包
from selenium.webdriver import Keys5、导入下拉选择框的Select包
from selenium.webdriver.support.ui import Select6、待完善...
浏览器驱动
1、谷歌
driver = webdriver.Chrome()2、火狐
driver = webdriver.Firefox()3、待完善...
元素定位(语法为最新版的selenium)
1、ID定位
driver.find_element(By.ID, 'id')2、name定位
driver.find_element(By.NAME, 'name')3、class定位
driver.find_element(By.CLASS_NAME, 'class_name')4、link_text定位
driver.find_element(By.LINK_TEXT, 'link_text')5、partial_link_text定位
通过超链接的局部文本信息进行元素定位,主要用来定位a标签。
driver.find_element(By.PARTIAL_LINK_TEXT, 'partial_link_text')6、tag_name定位
- 定位一组元素的方法
driver.find_element(By.TAG_NAME, 'tag_name')- 定位一组元素返回的值是一个列表
- 可以通过下标来使用列表中的元素,下标是从0 开始
# 案例:通过li标签定位一组元素,通过索引方法对知乎链接点击
# 导包
from selenium import webdriver
# 从selenium.webdriver.common.by导入By包进行元素定位
from selenium.webdriver.common.by import By
# 获得浏览器驱动
driver = webdriver.Chrome()
# 定位一组元素,通过索引点击知乎
el = driver.find_elements_by_tag_name('li')
el[2].click()7、xpath定位(全局唯一)
8、CSS定位
driver.find_element(By.CSS_SELECTOR, 'css_selector')- CSS是一种语言,它是用来描述HTML元素的显示样式
- 在CSS中,选择器是一种模式,用于选择需要添加样式的元素
- 在Selenium中也可以使用这种选择器来定位元素
- CSS定位比XPath定位速度要快
- 定位思路
- id选择器
- class选择器
- 属性选择器
- 层级选择器
9、JS定位(不是一个定位器,只是一个脚本语言)
- XPath即为XML Path的简称,它是一门在 XML 文档中查找元素信息的语言。
driver.find_element(By.XPATH, 'xpath')HTML可以看做是XML的一种实现,所以Selenium用户可以使用这种强大的语言在Web应用中定位
元素
定位思路
路径定位:绝对路径:从最外层元素到指定元素之间所有经过元素层级的路径
1). 绝对路径以/html根节点开始,使用/来分隔元素层级;
如:/html/body/div/fieldset/p[1]/input
相对路径:匹配任意层级的元素,不限制元素的位置
1). 相对路径以//开始
2). 格式://input
利用元素属性定位
层级与属性结合定位
xpath扩展:
一个/是绝对路径,从根元素开始
两个//是相对路径,递归查找所有子孙
一个. 是当前层,两个.是上一层
@表示取属性
[]叫谓语,里面跟的是查询条件条件支持算数运算+-*/><,条件支持逻辑运算 and or取文本值用text(),不加@因为它是个函数
常用函数:contains(属性名或者节点名,文本值);text()是取文本值,也可以当做一个查询条件; last()取末尾,倒数第二last()-1;starts-with(),表示以XX开头,写法是括号加两个入参;not(),表示否定,把内容全包进去;count(),取节点或属性个数
浏览器操作
1、浏览器最大化
driver.maximize_window()2、最小化
driver.minimize_windows()3、设置窗口大小
driver.set_window_size()4、浏览器前进
driver.forward()5、浏览器后退
driver.back()6、浏览器刷新
driver.refresh()操作测试对象
主要是对定位到的元素进行操作
1、点击对象
element.click() # element表示的是元素对象2、模拟按键输入
element.send_keys('value') # element表示是元素对象,value表示的是要输入的内容3、清除对象内容
element.clear() # element表示的元素对象,将输入框里面的内容全部清楚4、提交对象的内容
submit()5、用于获取元素的文本信息
text
# 案列:获取登录文本信息
# 导包
from selenium import webdriver
# 从selenium.webdriver.common.by导入By包进行元素定位
from selenium.webdriver.common.by import By
# 获得浏览器驱动
driver = webdriver.Chrome()
# 打开百度
driver.get('https://www.baidu.com')
# text打印登录信息
print(driver.find_element(By.LINK_TEXT, '登录').text)键盘事件
TAB send_keys(Keys.TAB)
ENTER send_keys(Keys.ENTER)
BACKSPACE send_keys(Keys.BACKSPACE)
SPACE send_keys(Keys.SPACE)
F1 send_keys(Keys.F1)
F12 send_keys(Keys.F12)
全选 send_keys(Keys.CONTROL, 'a')
复制 send_keys(Keys.CONTROL, 'c')
剪切 send_keys(Keys.CONTROL, 'x')
粘贴 send_keys(Keys.CONTROL, 'v')鼠标事件
# 执行ActionChains中的操作
perform()
# 右击
content_click()
# 双击
double_click()
# 拖动
drag_and_drop()
# 鼠标悬停
move_to_element()窗口,框架切换
driver.current_window_handle
driver.switch_to_frame('frameName')
driver.switch_to_window('windowName')获取断言信息(待完善...)
driver.title
driver.current_url
driver.page_source
textCookie操作(待完善...)
driver.get_cookies()
driver.get_cookie()时间等待(待完善...)
# 显性等待
# 隐性等待
# 智能等待控制浏览器滚动条(待完善...)
用JS语言,数值为0滚动条往顶端拉,数值越大,滚动条往下拉
Selenium应用于web自动化测试的主要流程(待完善...)
1、声明浏览器对象
2、访问页面
3、获取页面代码
4、定位元素
5、页面交互
6、执行JS脚本
7、等待页面加载