网站首页 > 技术文章 正文
UI自动化测试
Selenium是非常优秀的WEB(UI)自动化测试框架
最新的版本是Selenium4.x。
Selenium支持主流的浏览器自动化测试,具体是Chrome,IE,Firefox等浏览器Selenium也是支持主流的开发语言,如Python,Java,Net,PHP
Selenium IDE
Selenium 1.0
WebDriver
Selenium=WevbDriver+Selenium
搭建:
1、安装Selenium的库,
pip3 install selenium
2、安装Chrome浏览器
https://www.google.cn/chrome/index.html
3、安装Chrome浏览器的驱动
A、查看Chrome浏览器版本
B、到淘宝源下载与浏览器版本匹配的Driver
https://registry.npmmirror.com/binary.html?path=chromedriver/
C、下载成功后,进行解压,并且是一管理员身份执行
D、把这个driver放到Python的安装目录下
from selenium import webdriver
import time
# 对webdrive进行实例化,指定测试的浏览器
driver=webdriver.Chrome()
# 导航到被测试的网址
driver.get('http://www.baidu.com')
time.sleep(3)
# 退出浏览器
driver.quit()
元素属性
import time
from selenium import webdriver
from selenium.webdriver.common.by import By
'''
webdriver之所以能够操作浏览器,是因为它首先需要定位到被操作的元素属性,然后就可以对浏览器做各种操作。
元素定位的方法:
ID = "id" ID是不能唯一的
XPATH = "xpath"
LINK_TEXT = "link text"
PARTIAL_LINK_TEXT = "partial link text"
NAME = "name"
TAG_NAME = "tag name"
CLASS_NAME = "class name"
CSS_SELECTOR = "css selector"
'''
# id元素属性
# driver=webdriver.Chrome()
# driver.get('http://www.baidu.com')
# # send_keys()-->输入的意思
# driver.find_element_by_id('kw').send_keys("阿六君")
# time.sleep(3)
# driver.quit()
# name的元素属性
# driver=webdriver.Chrome()
# driver.get('http://www.baidu.com')
# # send_keys()-->输入的意思
# driver.find_element_by_name('wd').send_keys("阿六君")
# time.sleep(3)
# driver.quit()
# class_name的元素属性
# driver=webdriver.Chrome()
# driver.get('http://www.baidu.com')
# # send_keys()-->输入的意思
# driver.find_element_by_class_name('s_ipt').send_keys("阿六君")
# time.sleep(3)
# driver.quit()
'''
css和xpath:
当你使用id,name,class_name都定位不到时候,这个时候考虑使用css or xpath
'''
# driver=webdriver.Chrome()
# driver.get('http://www.baidu.com')
# # send_keys()-->输入的意思
# driver.find_element_by_xpath('//*[@id="kw"]').send_keys("阿六君")
# time.sleep(3)
# driver.quit()
# driver=webdriver.Chrome()
# driver.get('http://www.baidu.com')
# # send_keys()-->输入的意思
# driver.find_element_by_xpath('/html/body/div[1]/div[1]/div[5]/div/div/form/span[1]/input').send_keys("段舒元")
# time.sleep(3)
# driver.quit()
获取xpath方法
Xpath与 fullXpath性质一样
# css
# driver=webdriver.Chrome()
# driver.get('http://www.baidu.com')
# # send_keys()-->输入的意思
# driver.find_element_by_css_selector('#kw').send_keys("段舒元")
# time.sleep(3)
# driver.quit()
获取css
获取css
css与xpath的区别
css选择 是依据页面的数据样式定位的, 有标签选择, 类选择, id选择, 或者他们的交并集, 除此之外没有其他的辅助元素了
xpath 是路径表达式,所有元素和内容都可以成为路径的一部分. 两种定位方式功能基本一致, 但是xpath明显更强大, 只是xpath写起来较复杂,css写起来容易些
'''
LINK_TEXT :超链接
PARTIAL_LINK_TEXT:也是处理超链接,但是模糊搜索
'''
# driver=webdriver.Chrome()
# driver.get('http://www.baidu.com')
# # click():点击
# driver.find_element_by_link_text('新闻').click()
# time.sleep(3)
# driver.quit()
#
# driver=webdriver.Chrome()
# driver.get('http://www.baidu.com')
# # click():点击
# driver.find_element_by_partial_link_text('闻').click()
# time.sleep(3)
# driver.quit()
'''
元素定位的分类:
1、单个元素定位
2、多个元素定位,多个元素定位指的是元素的属性都一致,那么这个时候它返回的是列表,可以根据列表的索引来定位元素属性
3、不管是单个元素定位还是多个元素定位,它的方法都是8种,具体就是:
'''
# tagNmae
# driver=webdriver.Chrome()
# driver.get('http://www.baidu.com')
# # send_keys()-->输入的意思
# # driver.find_element_by_tag_name('input').send_keys("阿六君")
# tags=driver.find_elements_by_tag_name('input')
# # print(type(tags))
# # for item in tags:
# # print(item)
# tags[7].send_keys('阿六君')
# time.sleep(3)
# driver.quit()
'''实战'''
# driver=webdriver.Chrome()
# driver.get('https://mail.sina.com.cn/')
# driver.find_element_by_id('freename').send_keys('alj')
# time.sleep(3)
# driver.find_element_by_id('freepassword').send_keys('987')
# time.sleep(3)
# driver.find_element_by_class_name('loginBtn').click()
# time.sleep(5)
# driver.quit()
'''获取测试的地址'''
# driver=webdriver.Chrome()
# driver.get('https://mail.sina.com.cn/')
# print(driver.current_url)
# # assert是Python原生的断言方法
# assert driver.current_url.endswith('sina.com.cn/')
# driver.quit()
#
'''获取当前页面代码'''
# driver=webdriver.Chrome()
# driver.get('https://mail.sina.com.cn/')
# print(driver.page_source)
# driver.quit()
'''获取页面的title'''
# driver=webdriver.Chrome()
# driver.get('https://mail.sina.com.cn/')
# print(driver.title)
# assert driver.title=='新浪邮箱'
# driver.quit()
'''页面的前进与后退'''
# driver=webdriver.Chrome()
# # 浏览器最大化
# driver.get('https://www.bing.com/')
# time.sleep(3)
# driver.get('http://www.baidu.com')
# time.sleep(3)
# # back 后退
# driver.back()
# print('当前地址:',driver.current_url)
# time.sleep(3)
# # forward 前进
# driver.forward()
# print('当前地址:',driver.current_url)
# time.sleep(3)
# driver.quit()
'''
多窗口解决问题思路:
1、先打开当前页面
2、然后获取当前页面放在一个变量中
3、打开新的页面
4、获取所有页面并且放在一个变量中
5、循环所有页面,判断如果不是当前页面,那么就是在新的页面
'''
# driver=webdriver.Chrome()
# # 浏览器最大化
# driver.maximize_window()
# driver.get('https://mail.sina.com.cn/')
# # 然后获取当前页面放在一个变量中
# nowHandle=driver.current_window_handle
# time.sleep(3)
# driver.find_element_by_link_text('注册').click()
# time.sleep(3)
# # 获取所有页面并且放在一个变量中
# allHandlers=driver.window_handles
# # 循环所有页面,判断如果不是当前页面,那么就是在新的页面
# for handler in allHandlers:
# if handler!=nowHandle:
# # 从当前页面切换到新的页面
# driver.switch_to.window(handler)
# driver.find_element_by_name('email').send_keys('aliujun')
# time.sleep(5)
# # 关闭浏览器
# driver.close()
# # 切换到原来的页面
# driver.switch_to.window(nowHandle)
# time.sleep(5)
# driver.find_element_by_id('freename').send_keys('aliujun')
# time.sleep(5)
# driver.quit()
'''clear():清空'''
#
# driver=webdriver.Chrome()
# driver.maximize_window()
# driver.get('http://www.baidu.com')
# so=driver.find_element_by_id('kw')
# so.send_keys('阿六君')
# time.sleep(3)
# so.clear()
# time.sleep(3)
# driver.quit()
'''get_attribute()的方法是获取元素属性的值'''
driver=webdriver.Chrome()
driver.maximize_window()
driver.get('http://www.baidu.com')
so=driver.find_element_by_id('kw')
so.send_keys('阿六君')
time.sleep(3)
print(so.get_attribute('value'))
driver.quit()
好了今天的分享就到这里了,喜欢的可以关注我哟。
猜你喜欢
- 2024-11-14 Playwright自动化测试工具之元素定位实战
- 2024-11-14 利器 | AppCrawler 自动遍历测试实践(二):定制化配置
- 2024-11-14 java组件HuTool相关工具类的使用二
- 2024-11-14 手把手教你爬取热门小说《诡秘之主》
- 2024-11-14 Python爬虫之xpath用法全解析(py xpath)
- 2024-11-14 怎么用xpath写drissionpage?或者用相对位置?
- 2024-11-14 通过python+Xpath实现抓取某网站推荐的歌曲
- 2024-11-14 Python自动化工具(python写自动化工具)
- 2024-11-14 web自动化测试——xpath常用案例(web自动化测试平台)
- 2024-11-14 手把手教你如何用Python爬取网站文本信息
- 最近发表
- 标签列表
-
- cmd/c (57)
- c++中::是什么意思 (57)
- sqlset (59)
- ps可以打开pdf格式吗 (58)
- phprequire_once (61)
- localstorage.removeitem (74)
- routermode (59)
- vector线程安全吗 (70)
- & (66)
- java (73)
- org.redisson (64)
- log.warn (60)
- cannotinstantiatethetype (62)
- js数组插入 (83)
- resttemplateokhttp (59)
- gormwherein (64)
- linux删除一个文件夹 (65)
- mac安装java (72)
- reader.onload (61)
- outofmemoryerror是什么意思 (64)
- flask文件上传 (63)
- eacces (67)
- 查看mysql是否启动 (70)
- java是值传递还是引用传递 (58)
- 无效的列索引 (74)