- Selenium自动化工具
- Selenium
- Web 自动化工具
- Thought Works, Jason Huggins
- Selenium主要模块
- Selenium WebDriver
- Selenium IDE
- Selenium Grid
- Selenium WebDriver
- Selenium主要特点
- 开源,免费
- 功能强大
- 简单灵活
- 跨平台
- Windows
- Linux
- Mac
- Windows
- 多浏览器支持
- Chrome
- Firefox
- Edge
- IE
- Safari
- ...
- Chrome
- 多语言支持
- Python
- Java
- C
- JavaScript
- ...
- Python
- 开源,免费
- Web 自动化工具
- IDE
- 在Firefox安装IDE插件
- 安装火狐浏览器
- 打开附加组件管理器,搜索 IDE
- ,在搜索结果中找到IDE, 然后添加即可
- 安装火狐浏览器
- 使用IDE
- 启动ide,并创建测试项目
- 添加项目名
- 添加项目地址
- 点击START RECORDING后,会打开一个新页面,你就可以开始录制工作了
- 录制完成后,点击停止录制按钮
- 给你的测试取一个名字
- 选中测试,点击播放按钮,就可以重放刚刚录制的操作了
- 也可以将刚刚录制操作导出为代码
- 启动ide,并创建测试项目
- 在Firefox安装IDE插件
- 搭建Selenium运行环境
- 安装ChromeDriver
- 查看Chrome浏览器的版本
- 根据浏览器版本,下载浏览器驱动http://npm.taobao.org/mirrors/chromedriver
- 将下载的驱动解压到PATH环境变量指定的目录下即可
- 配置Path环境变量
- 计算机->属性->高级系统设置->环境变量->PATH->编辑
- 计算机->属性->高级系统设置->环境变量->PATH->编辑
- 查看Chrome浏览器的版本
- 安装Python的Selenium模块
- pip install selenium
- 补充: 安装python镜像:pip config set global.index-url https://mirrors.aliyun.com/pypi/simple/
- pip install selenium
- 测试系统环境
- demo01_测试安装环境.py
- demo01_测试安装环境.py
- 安装ChromeDriver
- 元素定位
- 定位方式
- ''' id 定位 '''
- element = driver.find_element(By.ID, 'kw')
- element = driver.find_element(By.ID, 'kw')
- ''' name 定位'''
- driver.find_element(By.NAME, 'wd').send_keys('足球')
- driver.find_element(By.NAME, 'wd').send_keys('足球')
- ''' class_name定位 '''
- driver.find_element(By.CLASS_NAME, 's_ipt').send_keys('篮球')
- driver.find_element(By.CLASS_NAME, 's_ipt').send_keys('篮球')
- ''' tag_name 定位'''
- driver.find_element(By.TAG_NAME, 'input').send_keys('天地人')
- driver.find_element(By.TAG_NAME, 'input').send_keys('天地人')
- ''' link_text 定位'''
- driver.find_element(By.LINK_TEXT, '新闻').click()
- 只能用于超链接元素的文本定位
- 精确文本定位(全部的文本都必须匹配)
- driver.find_element(By.LINK_TEXT, '新闻').click()
- ''' partial_link_text定位'''
- driver.find_element(By.PARTIAL_LINK_TEXT, '数读十九届').click()
- 只能用于超链接元素的文本定位
- 模糊文本定位(部分文本匹配就可以)
- driver.find_element(By.PARTIAL_LINK_TEXT, '数读十九届').click()
- ''' xpath 定位 '''
- 通用定位方式,利用元素的xml路径来进行定位
- 绝对定位
- /html/body/div[1]/div[1]/div[5]/div/div/form/span[1]/input
- 绝对定位是从一个 / 开始写
- 对于某个特定的元素来说,它的绝对路径是唯一的
- 可以从浏览器中直接复制: Copy full XPATH
- /html/body/div[1]/div[1]/div[5]/div/div/form/span[1]/input
- 相对定位
- //*[@id="kw"]
- 相对定位从2个 // 开始写
- 对于某个特定的元素来说,它的相对路径是不唯一的
- * 是通配符,代表任意元素
- [ ]表示条件
- @表示属性
- driver.find_element(By.XPATH, '//*[@id="kw"]').send_keys('三命通会')
- driver.find_element(By.XPATH, '//*[@id="kw"]').send_keys('三命通会')
- text()表示文本
- driver.find_element(By.XPATH**,** '//*[text()="新闻"]').click()
- driver.find_element(By.XPATH**,** '//*[text()="新闻"]').click()
- contains(),表示包含
- driver.find_element(By.XPATH, '//*[contains(text(),"数读十九届")]').click()
- driver.find_element(By.XPATH, '//*[contains(text(),"数读十九届")]').click()
- @表示属性
- //*[@id="kw"]
- 通用定位方式,利用元素的xml路径来进行定位
- ''' id 定位 '''
- 定位原则
- 当我们定位单个元素时,如果有多个元素都满足定位条件,则默认返回找到的第一个
- 当我们定位单个元素时,如果有多个元素都满足定位条件,则默认返回找到的第一个
- 常见异常
- ElementNotInteractableException: Message: element not interactable
- 元素不可交互异常
- 定位到了错误的元素
- 元素不可交互异常
- NoSuchElementException: Message: no such element
- 没有这个元素异常
- 定位方式错误
- 页面没有加载完成
- 没有这个元素异常
- ElementNotInteractableException: Message: element not interactable
- 定位方式