UI自动化测试4.6

UI自动化测试

Selenium是非常优秀的BEB(UI)自动化测试框架 最细的版本是Selenium4.x,Selenium支持主流的浏览器自动化测试,具体是Chrome.IE,Firefor等浏览器

Selenium也是支持主流的开发语言,如Python,java,Net,PHP

Selenium环境的搭建

1、安装Selenium的库,pip3 install selenium

2、安装Chrome浏览器

3、安装Chrome浏览器的驱动

     a、查看Chrome浏览器的版本

     b、到淘宝源下载与浏览器版本匹配的Driver

           淘宝源网址:https://registry.npmmirror.com/binary.html?path=chromedriver/

     c、下载成功后,进行解压,并且以管理员的身份执行

     d、把这个Driver 放到Python的安装目录下

元素属性:

# id元素属性
from selenium import webdriver
import time
# 对webdriver 进行实例化,指定测试浏览器
driver=webdriver.Chrome()
# 导航到被测试的网址
driver.get('https://www.baidu.com/')
# send_keys()输入的意思
driver.find_element_by_id('kw').send_keys('接口测试')
time.sleep(3)
# 退出整个程序
driver.quit()

from selenium import webdriver
import time
# name元素属性
# 对webdriver进行实例化 并指定浏览器
driver=webdriver.Chrome()
# 导航到被测试的网址
driver.get('https://www.baidu.com/')
driver.find_element_by_name('wd').send_keys('接口测试')
time.sleep(3)
driver.quit()

from selenium import webdriver
import time
# class元素属性
driver=webdriver.Chrome()
driver.get('https://www.baidu.com/')
driver.find_element_by_class_name('s_ipt').send_keys('接口测试')
time.sleep()
driver.quit()

from selenium import webdriver
import time
# xpath元素属性
driver=webdriver.Chrome()
driver.get('https://www.baidu.com/')
driver.find_element_by_xpath('//*[@id="kw"]').send_keys('接口测试')
time.sleep(3)
driver.quit()

from selenium import  webdriver
import time
# css元素属性这个copy点击selector
driver=webdriver.Chrome()
driver.get('https://www.baidu.com/')
driver.find_element_by_css_selector('#kw').send_keys('接口测试')
time.sleep(3)
driver.quit()

# link test 超链接
# partial_link_text 也是处理超链接的 但是是模糊搜素
from selenium import webdriver
import time
driver=webdriver.Chrome()
driver.get('https://www.baidu.com/')
# click()点击
# driver.find_element_by_link_text('新闻').click()
driver.find_element_by_partial_link_text('新').click()
time.sleep(3)
driver.quit()

元素定位的分类:
1、单个元素定位
2、多个元素定位,多个元素定位指的是元素的属性都是一致的,那么这个时候它返回的是列表,可以根据列表的索引来定位元素的属性
3、不管是多个元素的定位还是单个元素的定位,它的方法都是8种。
from selenium import webdriver
import time
# tag_name
driver=webdriver.Chrome()
driver.get('https://www.baidu.com/')
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()
# 实战
from selenium import webdriver
import time
driver=webdriver.Chrome()
driver.get('https://mail.sina.com.cn/')
driver.find_element_by_id('freename').send_keys('adsada')
driver.find_element_by_id('freepassword').send_keys('12345')
driver.find_element_by_class_name('loginBtn').click()
time.sleep(5)
driver.quit()
# 获取测试的地址:
from selenium import webdriver
import time
driver=webdriver.Chrome()
driver.get('https://mail.sina.com.cn/')
# current_url获取网址
print(driver.current_url)
# assert 断言
assert driver.current_url.endswith('sina.com.cn/')
driver.quit()

# page_source获取当前页面代码
from selenium import webdriver
driver=webdriver.Chrome()
driver.get('https://mail.sina.com.cn/')
print(driver.page_source)
driver.quit()

# 获取页面的title
from selenium import webdriver
driver=webdriver.Chrome()
driver.get('https://www.baidu.com/')
print(driver.title)
assert driver.title=='百度一下,你就知道'
driver.quit()

# 页面的前进与后退:
import time
from selenium import webdriver
driver=webdriver.Chrome()
driver.maximize_window()
driver.get('https://www.bing.com/')
time.sleep(3)
driver.get('https://www.baidu.com/')
time.sleep(3)
# 后退
driver.back()
print('输出当前网址:',driver.current_url)
time.sleep(3)
# 前进
driver.forward()
print('输出当前网址:',driver.current_url)
time.sleep(3)
driver.quit()

 多窗口解决问题思路:

1、先打开当前页面

2、然后获取当前页面放在一个变量中

3、打开新的页面

4、获取所有页面并且放在一个变量中

5、循环所有页面,判断如果不是当前页面,那么就是在新的页面

# 以新浪邮箱页面为例的实战和它的注册页面
# 对webdriver进行实例化,并选择浏览器
driver=webdriver.Chrome()
# 浏览器最大化
driver.maximize_window()
# 导航到需要测试的链接
driver.get('https://mail.sina.com.cn/')
# 获取当前页面放在一个变量中 nowHandle在这里指的是当前的登录页面
nowHandle=driver.current_window_handle
time.sleep(3)
# 用超链接处理这个注册
driver.find_element_by_link_text('注册').click()
time.sleep(3)
# 获取所有页面 并且放在一个变量中
allHandles=driver.window_handles
# 循环所有页面 判断不是当前页面 就是新的页面 handle在这里指的是新页面 也就是注册页面
for handle in allHandles:
if handle!=nowHandle:
# 从当前页面切换到新的页面
driver.switch_to.window(handle)
# 用name元素属性判断这个是不是新的页面
driver.find_element_by_name('email').send_keys('asdssss')
time.sleep(5)
# 关闭浏览器
driver.close()
# 从这个新的页面转换到原先的旧的页面 这里指的是从注册页面切换到登录页面
driver.switch_to.window(nowHandle)
time.sleep(5)
# 利用id元素属性,判断这个是不是原先的旧页面 也就是判断这个是不是登录页面
driver.find_element_by_id('freename').send_keys('asdsad')
time.sleep(5)
driver.quit()
# clear()--清空
import time
from selenium import webdriver
driver=webdriver.Chrome()
driver.maximize_window()
driver.get('http://www.baidu.com')
so=driver.find_element_by_id('kw')
so.send_keys('接口测试')
time.sleep(4)
so.clear()
time.sleep(4)
driver.quit()
# get_attribute()的方法是获取元素属性的值
import time
from selenium import webdriver
driver=webdriver.Chrome()
driver.maximize_window()
driver.get('http://www.baidu.com')
so=driver.find_element_by_id('kw')
so.send_keys('接口测试')
time.sleep(4)
print(so.get_attribute('value'))
driver.quit()

 

posted @ 2022-04-06 19:07  净植  阅读(72)  评论(0)    收藏  举报