目录

一、自动化测试

1.单元自动化测试

2.接口自动化测试

3.UI自动化测试

4.自动化测试工具Selenium

5.Webdriver

二、一个简单自动化脚本的构成

三、一些基本的webdriver API

1.一个元素的定位

1.1通过id定位元素

1.2通过name定位元素

1.3通过class_name定位

1.4通过tag_name定位

1.7通过xpath定位

1.8通过css_selector定位

2.操作测试对象

2.1click 点击对象

2.2send_keys 在对象上模拟按键输入

2.3clear 清除对象输入的文本内容

2.4submit 提交

2.5text 用于获取元素的文本信息

3.鼠标点击与键盘输入

4.添加等待

4.1固定等待

4.2智能等待

5.打印信息

5.1打印title

5.2打印url

6.对浏览器的操作

6.1浏览器最大化

6.2设置浏览器宽、高

6.3操作浏览器的前进、后退

6.4控制浏览器滚动条

7.键盘事件

7.1键盘按键用法

7.2键盘组合键用法

8.鼠标事件

9.定位一组元素

10.多层框架/窗口定位

11.下拉框处理

12.alert、confirm、prompt 的处理

13.DIV块的处理

14.上传文件操作


一、自动化测试

自动化测试指软件测试的自动化,在预设状态下运行应用程序或者系统,预设条件包括正常和异常,最 后评估运行结果。将人为驱动的测试行为转化为机器执行的过程

1.单元自动化测试

使用JUnit进行单元测试

2.接口自动化测试

项目前期接口开发完成开始进行测试,适合接口变动比较小的项目

常见的接口自动化测试工具有,RobotFramework,JMeter,SoapUI,TestNG+HttpClient,Postman 等。

接口自动化的特点:

可在产品前期,接口完成后介入

用例维护量小

适合接口变动较小,界面变动频繁的项目

3.UI自动化测试

对系统的界面元素进行操作,用脚本实现模拟用户的使用,完成功能的 正常和异常测试

UI自动化的特点:

用例维护量大

页面相关性强,必须后期项目页面开发完成后介入

UI测试适合与界面变动较小的项目

UI自动化的好处:

可以进行回归测试

节约了资源

是一种可靠的测试方法,机器不会出错

可以完成很多繁琐的工作

能够完成手工测试无法完成的测试

4.自动化测试工具Selenium

Selenium IDE一个用于Selenium测试的完成集成开发环境,可以直接录制在浏览器的用户操作,并且 能回放,编辑和调试测试脚本。调试过程中可以逐步进行或调整执行的速度,并且可以在底部浏览日志 出错信息。 录制的测试脚本可以以多种语言导出,比如java,C#,Python,Ruby等,方便掌握不同语言的测试人 员操作。

支持多语言:Java、C#、ruby、JavaScript、Python

支持多平台:Linux、Windows、Mac,可以进行兼容性测试

支持多浏览器:Chrome、FireFox、Edge、Opera、Safari

支持分布式测试:SeleniumGrid

5.Webdriver

Selenium RC 在浏览器中运行 JavaScript 应用,会存在环境沙箱问题,而WebDriver可以跳出 JavaScript的沙箱,针对不同的浏览器创建更健壮的,分布式的,跨平台的自动化测试脚本。基于特定语言(Java,C#,Python,Ruby,Perl,JavaScript等)绑定来驱动浏览器对Web元素进行操作和验证。

webdriver的工作原理:

  • 启动浏览器后,selenium-webdriver会将目标浏览器绑定到特定的端口,启动后的浏览器则作为 webdriver的remote server。
  • 客户端(也就是测试脚本),借助ComandExecutor发送HTTP请求给sever端(通信协议:The WebDriver Wire Protocol,在HTTP request的body中,会以WebDriver Wire协议规定的JSON格 式的字符串来告诉Selenium我们希望浏览器接下来做什么事情)。
  • Sever端需要依赖原生的浏览器组件,转化Web Service的命令为浏览器native的调用来完成操作。

二、一个简单自动化脚本的构成

# coding = utf-8
from selenium import webdriver
import time
from selenium.webdriver.common.by import Bybrowser = webdriver.Edge()
time.sleep(3)
browser.get("http://www.baidu.com")
time.sleep(3)
browser.find_element(by=By.ID, value='kw').send_keys('自动化测试')
time.sleep(3)
browser.find_element(by=By.ID, value='su').click()
browser.quit()
  • coding = utf-8 防止乱码,在编辑器里面可以不用加,因为编辑器默认的就是UTF-8模式。
  • from selenium import webdriver 导入webdriver工具包,这样就可以使用里面的API browser = webdriver.Edge() 获得被控制浏览器的驱动,这里是获得Edge的,当然还可以获得Chrome浏览器,不过要想使这一段 代码有效,必须安装相应的浏览器驱动。
  • browser.find_element(by=By.ID, value='kw').send_keys('自动化测试')通过元素的ID定位想要操作的元素,并且向元素输入相应的文本内容 。
  • browser.find_element(by=By.ID, value='su').click()通过元素的ID定位到元素,并进行点击操作。 browser.quit() 退出并关闭窗口。

三、一些基本的webdriver API

1.一个元素的定位

以百度输入框为例

# coding = utf-8
import timefrom selenium import webdriver
from selenium.webdriver.common.by import Bydriver = webdriver.Edge()
driver.get("http://www.baidu.com")
time.sleep(3)

1.1通过id定位元素

如果id存在,那么可以全局唯一的定位一个元素

# 通过ID来定位,是全局唯一的,可以唯一定位一个元素
driver.find_element(by=By.ID, value='kw').send_keys('python')
driver.find_element(by=By.ID, value='su').click()
driver.quit()

1.2通过name定位元素

只有当name存在并且全局唯一才可以定位一个元素

# 通过name来定位,name定位不是唯一的
driver.find_element(by=By.NAME,value="wd").send_keys("python")
driver.find_element(by=By.ID,value="su").click()
driver.quit()

1.3通过class_name定位

只有当class name存在并且全局唯一才可以定位一个元素

# 通过class_name定位
driver.find_element(by=By.CLASS_NAME, value="s_ipt").send_keys("python")
driver.find_element(by=By.ID, value="su").click()driver.quit()

1.4通过tag_name定位

只有当tag name存在并且全局唯一才可以定位一个元素

# 通过tag name定位
driver.find_element(by=By.TAG_NAME, value="type").send_keys("python")
time.sleep(3)
driver.find_element(by=By.ID, value="su").click()
driver.quit()

事实上使用tag name定位百度搜索框时是定位不成功的,会报错,因为只有当tag name全局唯一时才可以进行定位

必须是链接,而且链接内容是全局唯一的才可以定位到元素

# 通过link_text定位
driver.find_element(by=By.LINK_TEXT, value="新闻").click()
driver.quit()

必须是链接,而且链接内容是全局唯一的才可以定位到元素

# 通过partial_link_text定位
driver.find_element(by=By.PARTIAL_LINK_TEXT, value="123").click()
driver.quit()

1.7通过xpath定位

所有元素都可以通过xpath定位

# 通过xpath定位
driver.find_element(by=By.XPATH, value="//*[@id='kw']").send_keys("python")
driver.find_element(by=By.XPATH, value="//*[@id='su']").click()
driver.quit()

1.8通过css_selector定位

# 通过css_selector定位
driver.find_element(by=By.CSS_SELECTOR, value="#kw").send_keys("python")
driver.find_element(by=By.CSS_SELECTOR, value="#su").click()
driver.quit()

2.操作测试对象

定位之后需要对这个元素进行操作。是鼠标点击 还是键盘输入,或者清除元素的内容,或者提交表单等。这个取决于定位元素需要进行的下一步操作。

2.1click 点击对象

driver.find_element(by=By.ID, value='su').click()

2.2send_keys 在对象上模拟按键输入

driver.find_element(by=By.ID, value='kw').send_keys('python')

2.3clear 清除对象输入的文本内容

driver.find_element(by=By.ID, value="kw").send_keys("自动化")
driver.find_element(by=By.ID, value="kw").clear()
driver.find_element(by=By.ID, value="kw").send_keys("测试")
driver.find_element(by=By.ID, value="su").click()
driver.quit()

2.4submit 提交

driver.find_element(by=By.ID, value="su").submit()

2.5text 用于获取元素的文本信息

text = driver.find_element(by=By.ID, value="bottom_layer").text
print(text)

3.鼠标点击与键盘输入

4.添加等待

4.1固定等待

引入time 包,就可以在脚本中自由的添加休眠时间了,这里的休眠指固 定休眠

import time
time.sleep(5)

4.2智能等待

通过添加implicitly_wait() 方法就可以方便的实现智能等待;implicitly_wait()的用法比time.sleep() 更智能,后者只能选择一个固定的时间的等待,前者可以在一个时间范围内智能的等待。

# coding = utf-8
from selenium import webdriver
from selenium.webdriver.common.by import Bybrowser = webdriver.Chrome()
browser.get("http://www.baidu.com")
# 隐式等待30秒
browser.implicitly_wait(30)
browser.find_element(by=By.ID, value="kw").send_keys("selenium")
browser.find_element(by=By.ID, value="su").click()
browser.quit()

5.打印信息

5.1打印title

from selenium import webdriver
driver = webdriver.Edge()
driver.get("http://www.baidu.com")title = driver.title
print(title)
driver.quit()

5.2打印url

from selenium import webdriver
driver = webdriver.Edge()
driver.get("http://www.baidu.com")url = driver.current_url
print(url)
driver.quit()

6.对浏览器的操作

6.1浏览器最大化

browser.maximize_window()

6.2设置浏览器宽、高

driver.set_window_size(400, 1000)

6.3操作浏览器的前进、后退

# 浏览器后退
driver.back()
# 浏览器前进
driver.forward()

6.4控制浏览器滚动条

浏览器滚动条的控制需要依靠js脚本

#将浏览器滚动条滑到最顶端
document.documentElement.scrollTop=0
#将浏览器滚动条滑到最底端
document.documentElement.scrollTop=10000
# 浏览器滚动条的控制
js0 = "var q=document.documentElement.scrollTop=0"
driver.execute_script(js0)
time.sleep(3)
js1 = "var q=document.documentElement.scrollTop=10000"
driver.execute_script(js1)
time.sleep(2)
driver.quit()

7.键盘事件

所有的键盘操作,必须建立在定位到元素的基础上,操作都是基于元素来进行

7.1键盘按键用法

要使用键盘按键,必须引入keys 包: from selenium.webdriver.common.keys import Keys

过send_keys()调用按键:

send_keys(Keys.TAB) # TAB

send_keys(Keys.ENTER) # 回车

send_keys(Keys.SPACE) #空格键

send_keys(Keys.ESCAPE) #回退键(Esc)

7.2键盘组合键用法

send_keys(Keys.CONTROL,'a') #全选(Ctrl+A)

send_keys(Keys.CONTROL,'c') #复制(Ctrl+C)

send_keys(Keys.CONTROL,'x') #剪贴(Ctrl+X)

send_keys(Keys.CONTROL,'v') #粘贴(Ctrl+V)

from selenium import webdriver
import timefrom selenium.webdriver import Keys
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.common.by import Bydriver = webdriver.Edge()
driver.get("http://www.baidu.com/")
# 浏览器的最大化
driver.maximize_window()
driver.find_element(by=By.ID, value="kw").send_keys("元旦快乐")
driver.find_element(by=By.ID, value="su").click()# Ctrl+A   Ctrl+C  Ctrl+X
# 用剪贴的方式clear掉文本框中的输入内容
driver.find_element(by=By.ID, value="kw").send_keys(Keys.CONTROL, 'a')
time.sleep(3)
driver.find_element(by=By.ID, value="kw").send_keys(Keys.CONTROL, 'x')
time.sleep(4)
#
driver.find_element(by=By.ID, value="kw").send_keys("新年快乐")
driver.find_element(by=By.ID, value="su").click()
time.sleep(2)
driver.quit()

8.鼠标事件

要使用鼠标事件需要导入工具包: from selenium.webdriver.common.action_chains import ActionChains

#鼠标拖动事件
ActionChains(driver).move_to_element(element).perform()

ActionChains 类

context_click() 右击

double_click() 双击

drag_and_drop() 拖动

move_to_element() 移动

from selenium import webdriver
import timefrom selenium.webdriver.common.by import By
from selenium.webdriver.common.action_chains import ActionChainsdriver = webdriver.Edge()
driver.get("http://www.baidu.com/")
# 浏览器的最大化
driver.maximize_window()
driver.find_element(by=By.ID, value="kw").send_keys("你好")
driver.find_element(by=By.ID, value="su").click()
b = driver.find_element(by=By.ID, value="su")
# 双击
# ActionChains(driver).double_click(b).perform()
# time.sleep(5)
# 右击
ActionChains(driver).context_click(b).perform()
time.sleep(8)
driver.quit()

9.定位一组元素

webdriver 可以很方便的使用findElement 方法来定位某个特定的对象,不过有时候我们却需要定位一 组对象,这时候就需要使用findElements 方法。

定位一组对象一般用于以下场景:

  • 批量操作对象,比如将页面上所有的checkbox 都勾上
  • 先获取一组对象,再在这组对象中过滤出需要具体定位的一些对象。比如定位出页面上所有的 checkbox,然后选择最后一个

以下面一个html为例子

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Checkbox</title>
</head>
<body><h3>checkbox</h3><div class="well"><form class="form-horizontal"><div class="control-group"><label class="control-label" for="c1">checkbox1</label><div class="controls"><input type="checkbox" id="c1" /></div></div><div class="control-group"><label class="control-label" for="c2">checkbox2</label><div class="controls"><input type="checkbox" id="c2" /></div></div><div class="control-group"><label class="control-label" for="c3">checkbox3</label><div class="controls"><input type="checkbox" id="c3" /></div></div><div class="control-group"><label class="control-label" for="r1">radio</label><div class="controls"><input type="radio" id="r1" /></div></div><div class="control-group"><label class="control-label" for="r2">radio</label><div class="controls"><input type="radio" id="r2" /></div></div></form></div>
</body>
</html>

如果我们需要把这些复选框和单选框全部点击,按照我们之前的定位一个元素可以完成我们的要求

import os
import timefrom selenium import webdriver
from selenium.webdriver.common.by import Bydriver = webdriver.Edge()
url = "file:///" +os.path.abspath("E:\\测试\\html\\selenium_html\\checkbox.html")
driver.get(url)
time.sleep(2)
driver.maximize_window()
driver.find_element(by=By.ID, value="c1").click()
driver.find_element(by=By.ID, value="c2").click()
driver.find_element(by=By.ID, value="c3").click()
driver.find_element(by=By.ID, value="r1").click()
driver.find_element(by=By.ID, value="r2").click()
time.sleep(2)driver.quit()

虽然这样是可以定位到元素的,但是一旦需要定位的元素变多,那么这个方法就不是很适用了,我们可以定位一组元素,我们可以先定位出同一个类,然后再定位我们需要的元素

import os
import timefrom selenium import webdriver
from selenium.webdriver.common.by import Bydriver = webdriver.Edge()
url = "file:///" +os.path.abspath("E:\\测试\\html\\selenium_html\\checkbox.html")
driver.get(url)
time.sleep(2)
driver.maximize_window()# 定位一组元素
buttons = driver.find_elements(by=By.TAG_NAME, value="input")
for button in buttons:if button.get_attribute("type") == "checkbox" or button.get_attribute("type") == "radio":button.click()time.sleep(2)driver.quit()

10.多层框架/窗口定位

对于一个web 应用,经常会出现框架(frame) 或窗口(window)的应用,这也就给我们的定位带来 了一定的困难。

定位一个frame :switch_to.frame(name_or_id_or_frame_element)

定位一个窗口window:switch_to.window(name_or_id_or_frame_element)

多层框架的定位

<html><head><meta http-equiv="content-type" content="text/html;charset=utf-8" /><title>frame</title><linkhref="http://netdna.bootstrapcdn.com/twitter-bootstrap/2.3.2/css/bootstrap-combined.min.css" rel="stylesheet" /><script type="text/javascript">$(document).ready(function(){});</script></head><body><div class="row-fluid"><div class="span10 well"><h3>frame</h3><iframe id="f1" src="inner.html" width="800",height="600"></iframe></div></div></body><script
src="http://netdna.bootstrapcdn.com/twitter-bootstrap/2.3.2/js/bootstrap.
min.js"></script>
</html>

inner.html

<html>
<head>
<meta http-equiv="content-type" content="text/html;charset=utf-8" />
<title>inner</title>
</head>
<body>
<div class="row-fluid">
<div class="span6 well">
<h3>inner</h3>
<iframe id="f2" src="https://blog.csdn.net/"
width="700"height="500"></iframe>
<a href="javascript:alert('watir-webdriver better than
selenium webdriver;')">click</a>
</div>
</div>
</body>
</html>

如果我们需要定位到最里面嵌套的页面元素,可以使用switch_to.frame(name_or_id_or_frame_element)方法

import os
import timefrom selenium import webdriver
from selenium.webdriver.common.by import Bydriver = webdriver.Edge()
url = "file:///"+os.path.abspath("E:\\测试\\html\\selenium_html\\frame.html")
driver.get(url)time.sleep(2)driver.switch_to.frame("f1")
driver.switch_to.frame("f2")driver.find_element(by=By.ID, value="toolbar-search-input").send_keys("自动化测试")
time.sleep(2)
driver.quit()

多层窗口定位

有时候嵌套的不是框架,而是窗口,可以使用: switch_to.window("windowName")

<html><head><meta http-equiv="content-type" content="text/html;charset=utf-8" /><title>Level Locate</title><script type="text/javascript" src="http://code.jquery.com/jquery-1.9.1.min.js"></script><linkhref="http://netdna.bootstrapcdn.com/twitter-bootstrap/2.3.2/css/bootstrap-combined.min.css" rel="stylesheet" /></head><body><h3>Level locate</h3><div class="span3"><div class="well"><div class="dropdown"><a class="dropdown-toggle" data-toggle="dropdown"href="#">Link1</a><ul class="dropdown-menu" role="menu"aria-labelledby="dLabel" id="dropdown1" ><li><a tabindex="-1" href="#">Action</a></li><li><a tabindex="-1" href="#">Another action</a></li><li><a tabindex="-1" href="#">Something else here</a></li><li class="divider"></li><li><a tabindex="-1" href="#">Separated link</a></li></ul></div></div></div><div class="span3"><div class="well"><div class="dropdown"><a class="dropdown-toggle" data-toggle="dropdown"href="#">Link2</a><ul class="dropdown-menu" role="menu"aria-labelledby="dLabel" ><li><a tabindex="-1" href="#">Action</a></li><li><a tabindex="-1" href="#">Another action</a></li><li><a tabindex="-1" href="#">Something else here</a></li><li class="divider"></li><li><a tabindex="-1" href="#">Separated link</a></li></ul></div></div></div></body><scriptsrc="http://netdna.bootstrapcdn.com/twitter-bootstrap/2.3.2/js/bootstrap.min.js"></script>
</html>

先点击显示出1个下拉菜单,然后再定位到该下拉菜单所在的ul,再定位这个ul 下的某个 具体的link。在这里,我们定位第Link1下拉菜单中的Action 这个选项

import os.path
import timefrom selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.action_chains import ActionChains
driver = webdriver.Edge()
url = "file:///"+os.path.abspath("E:\\测试\\html\\selenium_html\\level_locate.html")
driver.get(url)
driver.maximize_window()time.sleep(2)
# 先定位Link1
driver.find_element(by=By.LINK_TEXT, value="Link1").click()
time.sleep(2)
# 再定位Action
action = driver.find_element(by=By.LINK_TEXT, value="Action")
# 最后把鼠标移动到Action上
ActionChains(driver).move_to_element(action).perform()
time.sleep(2)
driver.quit()

11.下拉框处理

对于一般的元素,我们只需要一次就定位,但下拉框里的内容需 要进行两次定位,先定位到下拉框对下拉框进行操作后,再定位到下拉框内里的选项。

现在定位选择下拉列表里的$10.69

import os.path
import timefrom selenium import webdriver
from selenium.webdriver.common.by import Bydriver = webdriver.Edge()
url = "file:///"+os.path.abspath("E:\\测试\\html\\selenium_html\\drop_down.html")
driver.get(url)time.sleep(2)
# options = driver.find_elements(by=By.TAG_NAME, value="option")
# time.sleep(2)
# options[3].click()
options = driver.find_elements(by=By.TAG_NAME, value="option")
for option in options:if option.get_attribute('value') == '10.69':time.sleep(1)option.click()time.sleep(1)
time.sleep(2)
driver.quit()

12.alert、confirm、prompt 的处理

text() 返回alert/confirm/prompt 中的文字信息

accept() 点击确认按钮

dismiss() 点击取消按钮,如果有的话 send_keys 输入值,如果alert 没有对话框就不能用了,不然会报错 注意:

switch_to.alert()只能处理原生的alert

使用switch_to.alert中的accept() 来确认警告框

import os
import timefrom selenium import webdriver
from selenium.webdriver.common.by import Bydriver = webdriver.Edge()
url = "file:///"+os.path.abspath("E:\\测试\\html\\selenium_html\\alert.html")
driver.get(url)
driver.maximize_window()time.sleep(2)
driver.find_element(by=By.ID, value="tooltip").click()
time.sleep(2)
alert = driver.switch_to.alert
time.sleep(3)
alert.accept()
time.sleep(1)
driver.quit()

对于需要我们输入的弹框,可以使用alert.send_keys()来输入信息

import os
import timefrom selenium import webdriver
from selenium.webdriver.common.by import Bydriver = webdriver.Edge()
url = "file:///"+os.path.abspath("E:\\测试\\html\\selenium_html\\send.html")
driver.get(url)
driver.maximize_window()time.sleep(2)
driver.find_element(by=By.TAG_NAME, value="input").click()
time.sleep(2)
alert = driver.switch_to.alert
alert.send_keys("张三")
time.sleep(2)
alert.accept()
time.sleep(2)
driver.quit()

13.DIV块的处理

如果页面元素比较多,利用元素的属性无法准确的定位这个元素的时候,我们可以先定位元素所在的 div块,再去定位这个元素。

import os
import timefrom selenium import webdriver
from selenium.webdriver.common.by import Bydriver = webdriver.Edge()
url = "file:///"+os.path.abspath("E:\\测试\\html\\selenium_html\\modal.html")
driver.get(url)
driver.maximize_window()time.sleep(2)
driver.find_element(by=By.LINK_TEXT, value="Click").click()
time.sleep(3)
div1 = driver.find_element(by=By.CLASS_NAME, value="modal-body")
time.sleep(2)
div1.find_element(by=By.LINK_TEXT, value="click me").click()
time.sleep(2)div2 = driver.find_element(by=By.CLASS_NAME, value="modal-footer")
time.sleep(2)
buttons = driver.find_elements(by=By.TAG_NAME, value="button")
buttons[0].click()
time.sleep(2)
driver.quit()

14.上传文件操作

先定位上传文件按钮,然后使用send_keys(”文件的绝对路径“)

import os
import timefrom selenium import webdriver
from selenium.webdriver.common.by import Bydriver = webdriver.Edge()
url = "file:///"+os.path.abspath("E:\\测试\\html\\selenium_html\\upload.html")
driver.get(url)
driver.maximize_window()
time.sleep(2)
driver.find_element(by=By.TAG_NAME, value="input").send_keys("C:\\Users\\zhang\\Desktop\\test.txt")
time.sleep(2)
driver.quit()

5.软件测试-----自动化测试相关推荐

  1. 软件测试-自动化测试及工具

    1.工具和自动化的好处 重复测试的过程成为回归测试.在使用工具进行自动化测试时,主要有以下几个优点: 速度快:效率高:准确度和精确度高:节省资源:仿真和模拟效果:坚持不懈. 2.测试工具 非入侵式测试 ...

  2. 软件测试/自动化测试/测试开发/性能测试经典好书推荐

    目录 前言 测试理论与实践 性能测试 安全测试 自动化测试 编程语言与开发技能 管理技能 前言 软件测试入行容易进阶难.从测试小白成长为测试经理.总监级别人才,要跨越长长的技术栈升级之路,挑战非常高的 ...

  3. 软件测试自动化测试工具课件,《软件测试自动化》PPT课件.ppt

    <<软件测试自动化>PPT课件.ppt>由会员分享,可在线阅读,更多相关<<软件测试自动化>PPT课件.ppt(34页珍藏版)>请在装配图网上搜索. 1 ...

  4. 软件测试——自动化测试框架有哪些?

    目录 前言 一.Robot Framework 二.Pytest 三.UnitTest/PyUnit 四.Behave 五.Lettuce 结语 前言 自动化测试常用的Python框架有哪些?常用的框 ...

  5. 软件测试 自动化测试 Web自动化测试01 selenium 定位元素方法 元素操作 自动化脚本开发

    文章目录 1 自动化测试概述 1.1 测试的目的 1.2 自动化测试的优点 1.3 自动化测试的缺点 1.4 自动化测试工具 1.5 自动化测试流程 2 selenium基础 2.1 selenium ...

  6. 软件测试——自动化测试概述

    目录 一. 自动化测试概述 1.1 什么是自动化测试? 1.2 为什么做自动化测试? 1.3 自动化测试什么阶段开始? 1.4 自动化测试所属分类: 1.5 自动化测试的优缺点: 1.6 自动化测试分 ...

  7. 2022最强金九银十软件测试自动化测试,建议进收藏夹

    直接上干货!!! 1.自动化代码中,用到了哪些设计模式? 单例设计模式 工厂模式 PO设计模式 数据驱动模式 面向接口编程设计模式 2.什么是断言( Assert) ? 断言Assert用于在代码中验 ...

  8. 【软件测试真题合集】BATJ都在问哪些自动化测试面试题?看了你就知道了

    文章末尾给大家准备了大量福利 前言 今天,笔者来和大家唠唠大厂的自动化测试面试题,因为最近找工作的小伙伴比较多,所以这些面试题应该可以帮助到大家,废话笔者就不多说了直接进入主题吧. 1.你做了几年的测 ...

  9. 还不懂!软件测试(功能、接口、性能、自动化)详解

    一.软件测试功能测试 测试用例编写是软件测试的基本技能:也有很多人认为测试用例是软件测试的核心:软件测试中最重要的是设计和生成有效的测试用例:测试用例是测试工作的指导,是软件测试的必须遵守的准则. 黑 ...

最新文章

  1. 七个最流行的Python神经网络库
  2. [NLP]--NLP programming tutorial
  3. 开发了个 Flipper 调试工具的 Flutter 版本 SDK,让 Flutter 应用调试起来更容易
  4. pytorch 学习笔记:nn.Sequential构造神经网络
  5. STM32F103系列单片机学习笔记1方便以后查看
  6. linux diff diffstat组合使用示例
  7. 架构师成长之路:如何提升技术掌控力?
  8. stm32l0的停止模式怎么唤醒_最强家庭娱乐系统+儿童模式,小度在家智能屏X8开售抢先体验...
  9. Openstack的RPC通信代码调用架构
  10. php语句导入mysql_php如何将数据库导入mysql
  11. 几道比较难的SQL题
  12. 《MySQL技术内幕(SQL编程)》——基础
  13. idea git将多余的代码提交到本地,如何退回。
  14. 阶段3 2.Spring_06.Spring的新注解_6 Qualifier注解的另一种用法
  15. 算法学习---- 随机森林的基本原理
  16. 陀螺仪传感器的简单了解
  17. GM(1,1)灰色预测模型
  18. 《Hello!树先生》简介
  19. C++: 函数重载(c++函数原型、函数重载要素)
  20. Spring读源码系列之AOP--03---aop底层基础类学习

热门文章

  1. 目录的rwx权限的意义
  2. webpack 打包流程
  3. LVS NAT模式配置实践
  4. filewriter 设置编码_从OutStreamWriter 和Filewriter谈Java编码
  5. java夯实基础-运算符
  6. Xcode添加多个Targets
  7. 北大图灵班学子斩获全球竞赛本科生第一名,攻关EDA“卡脖子”技术难题!
  8. 朴素模式匹配与KMP模式匹配算法
  9. RBL 列表查询网址
  10. 【图解】ACM 选手带你玩转数组。