当前位置:网站首页>软件测试之WEB自动化
软件测试之WEB自动化
2022-08-02 14:15:00 【keer丶】
1.WEB自动化环境配置
1.1webdriver配置
以chrome浏览器为例,从https://registry.npmmirror.com/binary.html?path=chromedriver中下载对应chrome浏览器版本号的chromedriver,解压将文件放到自己指定的位置,在环境变量中配置此位置,不能有中文特殊字符。
1.2selenium安装
pycharm 安装 selenium
pip install selenium
pycharm 项目文件中引用 selenium
from selenium import webdriver
2.WEB自动化相关API
2.1浏览器操作API
- 打开页面:driver.get("url")
- 关闭:driver.quit()结束进程 driver.close()仅关闭当前窗口
- 设置窗口大小:driver.set_window_size(500,500)
- 窗口最大化:driver.maximize_window()
- 窗口最小化:driver.minimize_window()
- 刷新页面:driver.refresh()
- 获取页面标题:driver.title
- 获取当前页面url:driver.current_url
- 获取当前页面截图:driver.get_screenshot_as_file("a.png") 括号内为保存截图的地址+文件名
相关代码:
from selenium import webdriver
driver = webdriver.Chrome() #实例化Chrome对象
driver.get("https://www.baidu.com") #打开百度
driver.set_window_size(500,500) #设置窗口大小
driver.minimize_window() #最小化窗口
driver.maximize_window() #最大化窗口
driver.refresh() #刷新页面
title = driver.title
url = driver.current_url
print(title,url)
打印结果:
2.2常用的八种定位方式
- id
- name
- class name
- tag name
- link text <a>标签
- partial link text <a>标签
- xpath(通用,可以在chrome中用$x调试) $x("//div[@class='header-top']")
- css selector(通用,可以在chrome中用$$调试)
代码参考:
from selenium import webdriver
driver = webdriver.Chrome() #实例化Chrome对象
driver.get("https://www.baidu.com") #打开百度
ele1 = driver.find_element("xpath","//input[@id='kw']")
ele2 = driver.find_element("id","kw")
print(ele1==ele2) #True,上边两种方式等价
Xpath:指的是XML path
绝对路径表示法:指从/目录开始的路径表示法,必须根据实际路径逐级表示
相对路径表示法:指从目标对象所在位置根据其父对象进行路径表示的方法
ele1 = driver.find_element("xpath","//input[@id='kw'][@name='xx']/div")
find_element与find_elements
find_element根据指定的方式定位元素,仅返回找到的第一个元素,如果没有元素符合则返回none
find_elements根据指定的方式定位元素,以列表的形式返回找到的全部元素,如果没有符合的元素则返回空列表,可以通过下标去选择列表中的元素
2.3元素操作API
clear():清楚文本框中的文字
send_keys():向文本域或文件上传按钮发送文字内容
click():点击按钮
text:获取节点上的文字信息
get_attribute(name):获取元素的属性信息
is_displayed():判断元素是否显示出来
2.4三种等待方式
- 强制/固定等待
优势:用法非常简单,一般用于项目调试,或者用于等待元素状态、文本发生改变。
劣势:等待时间固定,如果脚本中大量使用会导致脚本运行效率低。
代码参考:
import time
time.sleep(2) #单位秒
- 隐式等待/全局等待
设置一次后(隐式等待只需设置一次),全局有效,在元素没有出现时最多只等待指定的时间,但如果在等待时间内,什么时候元素出现什么时候停止等待。隐式等待只能在元素不存在DOM中时能生效,否则不会产生任何等待效果。
代码参考:
driver.implicitly_wait(5) #单位为秒
- 显示等待
可针对每一个元素进行单独设置,等待条件更加灵活,
注意:如果显式等待和隐式等待同时设置,以最长等待时间为准。
from selenium import webdriver
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
driver = webdriver.Chrome()
driver.get("http://shop-xo.hctestedu.com/")
WebDriverWait(driver,10).until(EC.presence_of_element_located(("id","search-input"))) #这里参数是一个元组
driver.find_element("id","search-input").send_keys('你好')
常见EC方法:
EC.title_is(strtitle):判断当前页面的title是否精确等于预期
EC.title_contains(strtitle):判断当前页面的title是否包含指定字符串
EC.presence_of_element_located(locator):判断某个元素是否被加到了dom树中,并不代表该元素一定可见
EC.visibility_of_element_located(locator):判断某个元素是否可见,可见代表元素非隐藏,并且高和宽都不等于0
EC.invisibility_of_element_located(locator):判断某个元素是否不可见
EC.element_to_be_clickable(locator):判断某个元素是否可见并且时enable
EC.text_to_be_present_in_element(locator):判断某个元素中的text是否包含了预期的字符串
driver.get('https://mail.163.com/')
WebDriverWait(driver,5).until(EC.text_to_be_present_in_element(('id','msg'),'等待出现的内容'))
边栏推荐
- 戴森球计划这个游戏牛逼
- 【软件测试】基础篇
- Evaluate multipath BBR congestion control on ns3
- 在mininet中测试arp欺骗
- 如何编辑VirtualLab Fusion结果的格式
- Debug on pure method is called
- Priority table and Ascll table
- The use of a semaphore/interprocess communication 】 【 Shared memory
- implement tcp bbr on ns3 (在ns3上实现TCP BBR)
- Oauth2.0 authentication server construction
猜你喜欢
随机推荐
使用三个线程,按顺序打印X,Y,Z,连续打印10次
【软件测试】selenium自动化测试2
MySQL协议长什么样子
字符数组/字符串数组|数组指针/指针数组/
net start mysql 服务名无效。
Qt | 读取文件内容并删除文件 QFile
【软件测试】自动化测试selenium3
golang-reflect-method-callback
双链表(普通迭代器和常性迭代器)
CDH (computational Diffie-Hellman) problem and its differences with discrete logarithm and DDH problems
分布式一致性协议-Raft
implement tcp bbr on ns3 (在ns3上实现TCP BBR)
【线程】线程创建 | 理解线程并发 (1)
Three-way joint interface data security issues
灵活的区域定义
类模板/赋值运算和加等运算
udp transparent proxy
【网络安全】学习笔记 --02 安全通信协议
HCIE学习记录——数据封装与常用协议(TCP/UDP)
LITESTAR 4D应用:室内植物照明模拟