03-Selenium&UI自动化
03-Selenium&UI自动化
001-使用WebDriver需要导入那个包?
org.openqa.selenium.WebDriver
002-Selenium可以支持哪些测试类型?
1、功能测试 2、回归测试 3、完整性测试 4、冒烟测试 5、响应测试 6、跨浏览器测试 7、UI测试(黑盒) 8、集成测试
003-自动化测试在什么阶段执行会带来什么收益
对于接口测试来说均需要采用自动化的手段,因此在开发联调完成和集成测试 之间可以介入,在进入集成测试之后接口测试自动化脚本可以用来做接口层面的回 归测试,以保障接口方面不出问题;UI 自动化会在产品稳定之后介入,主要用来 保障 UI 层面的回归,那么自动化测试均是为了提升测试效率,保障原有功能的正 确性
004-web ui自动化测试显式等待,隐式等待的区别?
相同点 都是智能等待,在一定时间范围内不断查找元素,一旦找到立刻结束查找继续执行代码,没找到才会一 直找到超时为止 不同点 隐式等待是全局性设置,并且可以随时更改,在更改后对之后的findxxx方法生效,对点击、输入之类的 操作不起作用;
显式等待仅仅针对单一元素或一组生效,并且不仅仅是针对查找,也可以针对Alert、iframe,或者元素 的某些属性进行自定义判断
005-你如何下载Selenium?
1、通过pip安装:pip install selenium
2、通过pycharm安装:进入File->setting->project->project interpreter->点击+号安装selenium
006-阐述对于自动化测试成本从高到底的排序?
GUI,编译器,用户图形
007-你对自动化测试有什么看法?
自动化测试可以提高测试效率和精度,节约测试时间和成本。但是,自动化测试也有其局限性,例如不适用于一些场景和功能,需要投入较高的开发和维护成本等。我认为,在选择自动化测试工具和编写自动化测试脚本时,需要考虑以下因素:
- 功能和性能需求:自动化测试工具应该能够满足系统的功能和性能需求,支持多种测试场景和测试用例的执行和管理。- 开发和维护成本:自动化测试脚本应该易于编写、维护和扩展,不会增加额外的开发和维护成本。- 可重复性和可靠性:自动化测试脚本应该具有良好的可重复性和可靠性,能够准确地模拟用户的操作和输入。- 测试效率和精度:自动化测试应该能够提高测试效率和精度,减少人为误差和漏测。- 测试覆盖率和测试效果:自动化测试应该能够覆盖系统的各个方面,提高测试覆盖率和测试效果。
008-在selenium里find_element 与 find_elements 的区别是什么?
- find_element返回第一个匹配的元素,如果没有找到则抛出异常。- find_elements返回所有匹配的元素组成的列表,如果没有找到则返回空列表。
009-更新的功能要不要做自动化测试?
更新的功能会先用jmeter做接口,然后功能稳定后,会写Python测试用例脚本,去进行自动化测试,用于接口迭代测试
010-web ui 自动化测试中显式等待,隐式等待的区别
相同点都是智能等待,在一定时间范围内不断查找元素,一旦找到立刻结束查找继 续执行代码,没找到才会一直找到超时为止
不同点是隐式等待是全局性设置,并且可以随时更改,在更改后对之后的 findxxx 方法生效,对点击、输入之类的操作不起作用; 显式等待仅仅针对单一元素或一组生效,并且不仅仅是针对查找,也可以针对 Alert、 iframe,或者元素的某些属性进行自定义判断
011-如何设计高质量自动化脚本
1.使用四层结构实现业务逻辑、脚本、数据分离。
2.使用PO设计模式,将一个页面用到的元素和操作步骤封装在一个页面类中。如果一个元素定位发生了改变,我们只用修改这个页面的元素属性
3.对于页面类的方法,我们尽量从客户的正向逻辑去分析,方法中是一个独立场景,例如:登录到退出,而且不要想着把所有的步骤都封装在一个方法中。
4 测试用例设计中,减少测试用例之间的耦合度。
012-WebDriver的sendKeys函数有什么用?
sendkey函数可以用于在页面上输入内容
013-WebDriver的isDisplayed()方法有什么作用?
isDisplayed()方法是验证某个元素是否可
014-进行自动化测试中,你是如何生成测试报告?
可以使用Python的测试框架(如unittest、pytest等)来生成测试报告。这些框架通常支持HTML、XML等格式的测试报告,并且可以自定义测试报告的输出格式。
015-webdriver 中关闭浏览器的 quit 和 close 有什么区别
简单来说,两个都可以实现退出浏览器 session 功能, close 是关闭你当前聚焦的 tab 页面,而 quit 是关闭全部浏览器 tab 页面,并退出浏览 器 session。 知道这两个区别,我们就知道 quit 一般用在结束测试之前的操作,close 用在执行用例 过程中关闭某一个页面的操作
016-你自己有写过脚本么?
写过基本的,比如我物业项目接口自动化写过简单的,大概思路就是,通过Python中的openpyxl库去读取我接口测试用例excel中的测试数据,例如请求地址、传递参数、预期这些,读取后利用for循环保存到一个list列表中;然后再从这个list中去for循环分解读取测试数据,通过request库去发起对应的post、get请求,获取响应结果跟预期结果做断言,把结果写入excel中
017-如何保证自动化测试的稳定性?
自动化测试稳定性主要表现在两个方面:一个是元素定位的问题,一个是用例之间的依赖问题。 元素定位问题可以采用智能等待的方式尽可能的避免; 用例依赖可以解耦用例之间的关系,让每条用例都从一个共同的页面开始执行,比如首页,这就需要在 测试框架中采用后置处理的方式使每条用例执行完成后都回到首页。
018-UI界面测试的定位方式?
我们常用的selenium元素定位方法主要有id,name和xpath;xpath用的比较多; 元素定位方法有八种,比如id ,name,xpath,css,link_text,partial_link_text,tag_name,class_name
019-什么是iframe,如何使用Selenium WebDriver来处理它?
iframe是一种HTML元素,它允许将外部网页嵌入到另一个HTML页面中,可以使用switchTo方法在Selenium中处理iframe。
020-XPath的following-sibling轴有什么用?
选取当前节点之后的所有同级节点
driver.findElement(By.xpath("//*[@name='username']//following-sibling::input[@name='password']").sendKeys("password");
021-有没有用过selenium库做过ui自动化?
做过核心业务流程的几个模块的UI自动化。主要是定位页面元素,然后找到元素后再写对应的web操作,比如点击、输入等这些操作,来完成的web自动化
022-一个好的软件测试自动化框架的主要特点是什么?
可维护性、可靠性、灵活性、效率、可移植性、健壮性和可用性是一个好的自动化框架的主要属性。
023-请用Python语言写出最近一次的POST请求接口代码。
import requests
url_login = 'http://xxxxxxx.com/api/login'
data_login = { 'name':'xxxxxx', 'pwd':'xxxxxx' }
header_login =
response = requests.post(url=url_login, json=data_login,headers=header_login) print(response.json())
024-描述自动化测试可以有哪些参数化方法(自动化测试类型和工具不限)
Jmeter工具,常用参数化方法:用户定义变量、函数助手(随机函数)、CSV Data Set Config
postman工具,常用参数化方法:环境变量,全局变量,csv参数化
025-请简述WinRunner测试过程所包含的六个阶段。
创建GUIMap:让WinRunner识别应用程序的GUI对象。
创建测试:用户可以通过录制、编成或两者同时使用的方式建立测试脚本。
调试测试:用户可以在调试模式下测试运行脚本,也可以设置中断点,监测变量,对测试脚本除错。
执行测试:用户在检验模式下执行测试脚本。 查看测试结果 报告发现的错误
026-能问你自动化测试这一块了解吗?简单讲一下?
对自动化是有所了解的;我现在的话,主要是使用python语言结合request库,进行一个接口自动化的编写。同时也会用到selenium做webUI自动化。至于说到的框架,我在项目中还是没有自己独立去使用的,因为我进入公司的时候,框架都已经弄好了,我们只要去实现功能就好了
027-在编写自动化测试用例时,你是如何确定测试覆盖率的?
1、语句覆盖率:语句覆盖率是指测试用例是否执行了被测试代码中的每一条语句。可以通过代码覆盖率工具来测量语句覆盖率。
2、分支覆盖率:分支覆盖率是指测试用例是否覆盖了被测试代码中的每一个分支。可以通过代码覆盖率工具来测量分支覆盖率。
3、条件覆盖率:条件覆盖率是指测试用例是否覆盖了被测试代码中的每一个条件。可以通过代码覆盖率工具来测量条件覆盖率。
4、路径覆盖率:路径覆盖率是指测试用例是否覆盖了被测试代码中的每一条路径。路径覆盖率是所有覆盖率中最高的,但也是最难达到的。可以通过代码覆盖率工具来测量路径覆盖率。
028-怎么处理Selenium的iframe?
可以使用如下方法出现iframe 1、使用Index:driver.switchTo().frame(0); 2、使用Name或者Id:driver.switchTo().frame(“id of the element”); 3、使用WebElement:driver.switchTo().frame(WebElement);
029-怎么使用jenkins集成工具的?
1、用jenkins来进行测试环境的持续部署
2、用jenkins来构建自动化脚本的定时触发、发送报告等。
030-如果一个元素无法定位,一般需要考虑哪些方面的原因?
定位器选择错误
定位字符串错误
元素嵌套在 frame 当中
页面元素没有及时加载
元素在新窗口中
脚本流程与实际不符
元素不在当前页
031-自动化测试会负责功能缺陷的报备吗?
需要负责的;
如果他们跑自动化测试的时候发现了功能bug,也需要报bug并跟踪的。
因为自动化其实就是通过自动化的手段去发现功能bug。
032-如果页面上获取不到值改怎么处理?
1.页面加载元素过慢,加等待时间 2.页面有iframe框架页,需要先跳转入iframe框架再定位 3.可能该元素是动态元素,需要使用js先把前置的操作完成,触发动态事件,让元素加载出来,然后再进行定位。 4.可能识别了元素,但是不能操作,比如元素不可用,不可写等。 5. 元素定位的表达式写错了。优化定位表达式
033-如何验证文本的字号为12px?
driver.findelement(By.xpath("xpath_element").getcssvalue("font-size);
034-面对对象模型不同于其他模型的主要特征是什么?
面向对象的特征是:
1、“抽象”,把现实世界中的某一类东西,提取出来,用程序代码表示;
2、“封装”,把过程和数据包围起来,对数据的访问只能通过已定义的界面;
3、“继承”,一种联结类的层次模型;
4、“多态”,允许不同类的对象对同一消息做出响应。
035-做过自动化测试吗?
自动化的话我们公司其实有在做自动化,我因为不在那个组,所以没有去做这个工作。但是我有接触过一点点python,有用过Python写过一些简单的自动化脚本,比如接口自动化的脚本和一些UI自动化的脚本。
036-python自动化涉及的多吗?怎么实现的?
我们用python实现接口自动化,就是冒烟测试。我们把测试数据放到excel里面,然后使用openpyxl库读取测试数据,之后使用requests库进行http请求,之后把期望值与实际值进行判断,把结果通过或不通过在存回到excel里
037-请说一下手动测试与自动化测试的优缺点
手工测试缺点:
1、重复的手工回归测试,代价昂贵、容易出错。
2、依赖于软件测试人员的能力。
手工测试优点:
1、测试人员具有经验和对错误的猜测能力。
2、测试人员具有审美能力和心理体验。
3、测试人员具有是非判断和逻辑推理能力。
自动化测试的优点:
1、对程序的回归测试更方便。这可能是自动化测试最主要的任务,特别是在程序修改比较频繁时,效果是非常明显的。由于回归测试的动作和用例是完全设计好的,测试期望的结果也是完全可以预料的,将回归测试自动运行,可以极大提高测试效率,缩短回归测试时间。
2、可以运行更多更繁琐的测试。自动化的一个明显的好处是可以在较少的时间内运行更多的测试。
3、可以执行一些手工测试困难或不可能进行的测试。比如,对于大量用户的测试,不可能同时让足够多的测试人员同时进行测试,但是却可以通过自动化测试模拟同时有许多用户,从而达到测试的目的。
4、更好地利用资源。将繁琐的任务自动化,可以提高准确性和测试人员的积极性,将测试技术人员解脱出来投入更多精力设计更好的测试用例。有些测试不适合于自动测试,仅适合于手工测试,将可自动测试的测试自动化后,可以让测试人员专注于手工测试部分,提高手工测试的效率。
5、测试具有一致性和可重复性。由于测试是自动执行的,每次测试的结果和执行的内容的一致性是可以得到保障的,从而达到测试的可重复的效果。
6、测试的复用性。由于自动测试通常采用脚本技术,这样就有可能只需要做少量的甚至不做修改,实现在不同的测试过程中使用相同的用例。
7、增加软件信任度。由于测试是自动执行的,所以不存在执行过程中的疏忽和错误,完全取决于测试的设计质量。一旦软件通过了强有力的自动测试后,软件的信任度自然会增加。
自动化测试的缺点:
1、不能取代手工测试
2、手工测试比自动测试发现的缺陷更多
3、对测试质量的依赖性极大
4、测试自动化不能提高有效性
5、测试自动化可能会制约软件开发。由于自动测试比手动测试更脆弱,所以维护会受到限制,从而制约软件的开发。
6、工具本身并无想像力
038-Python自动化中有哪三类等待,简述一下特点?
强制等待:不论页面是否加载完成,都要等待指定时间才能执行下一步。 隐式等待:页面加载完成则执行下一步,没有加载完成,则继续等待到指定时间后再执行下一步。 显式等待:每隔指定的时间查找一次这个元素,找到后马上执行下一步,未找到时,持续寻找到最大时间后,再执行下一步。
039-持续集成的目的是什么?
持续集成指的是,频繁地(一天多次)将代码集成到主干。 它的好处主要有两个:
(1)快速发现错误。每完成一点更新,就集成到主干,可以快速发现错误,定位错误也比 较容易。
(2)防止分支大幅偏离主干。如果不是经常集成,主干又在不断更新,会导致以后集成的 难度变大,甚至难以集成。 持续集成的目的,就是让产品可以快速迭代,同时还能保持高质量。它的核心措施是,代码 集成到主干之前,必须通过自动化测试,只要有一个测试用例失败,就不能集成。
040-会自动化吗?你认为什么是自动化测试?
实话实说,会就说不会就不说。
自动化测试可分为1.自动化性能测试;2.自动化功能测试。
性能测试主要是使用测试工具,Loadrunner、Jmeter等,对软件进行压力测试、负载测试、强度测试等等,因为这些无法用手工进行代替,所以必须自动化。
自动化功能测试:包括单元测试、接口测试、UI测试。主要是编写代码、脚本,让软件自动运行,发现缺陷,代替部分的手工测试。但一般只有大的项目才需要进行自动化,中小型项目不推荐使用自动化测试。
041-python怎么用的?
用python来编写接口自动化脚本和web ui自动化脚本,主要用于测试接口和web项目的功能
042-你使用过哪些自动化测试工具?请展示一个简单的Selenium登录功能。
自动化测试工具selenium、unittest;
selenium操作登录功能:
from selenium import webdriver
driver = webdriver.Chrome() driver.implicitly_wait(10)
driver.get("http://xxx.xxx.com/login.html") driver.find_element_by_id("username").send_keys("admin")
driver.find_element_by_id("password").send_keys("best123")
driver.find_element_by_id("btnSubmit").click()
043-Webdriver关闭浏览器的quit和close有什么区别?
简单来说,这两个都可以实现退出浏览器session功能, close是关闭你当前聚焦的tab页面,而quit是关闭全部浏览器tab页面,并退出浏览器session。 quit一般用在结束测试之前的操作,close用在执行用例过程中关闭某一个页面的操作
044-有哪些XPath类型,您在项目中使用哪种XPath类型?
有两种XPath类型:
1、绝对XPath,以一个斜杠(/)开头,它从根节点遍历到HTML DOM中的元素 — 这种项目中基本不用
2、相对XPath,以双斜杠(//)开头,它可以在HTML DOM的任何地方搜索元素 — 通常用这种方式
045-为什么在Selenium项目中使用Excel表单?
Excel表格可以作为我们读取测试数据的数据源。也可以用它来保存测试结果。
046-python脚本怎么写?
我们用Python做的接口自动化和UI自动化;接口自动化的时候,Python使用requests库编写发送接口请求的脚本,并使用openpyxl库读取excel里面的测试用例,来进行参数化传参;然后判断预期结果和实际结果是否相等用的是if判断做的断言。 UI自动化我们用的selenium工具,主要是元素定位和操作;UI我们主要做的是冒烟测试跑主流程。
047-哪一种方法可以获得一个元素的文本?
可以使用getText()方法获取任何元素的文本
048-做自动化测试的时候如何筛选自动化用例的?
如果你公司的自动化测试覆盖的是回归测试,回归测试那么就是会选择优先级P1 P2的用例都实现自动化;
如果覆盖的是冒烟测试 ,冒烟的话就选P1的核心业务流程的用例。
然后并且会修改成适合自动化框架的格式来适配自动化测试执行。
049-如何从元素中获取属性?
在Selenium中可以使用getAttribute()方法来获取属性。
050-你的python接口自动化是怎么写的?用的什么框架?
全程班可以说就是自己写了简单的脚本做了测试,没有涉及完整的框架结构。主要通过引入requests、openpyxl库完成,先是从excel用例中读取测试数据,然后将读取到的测试数据逐条发起接口请求,返回的响应结果跟读取的用例中期望做比较,最终执行结果写入测试用例这样的一个过程。
051-验证码的几种处理方式
针对验证码有如下方法:
1.在产品没有上线前,需要找开发先给 web 验证码留后门,也就是将验证码验证先注释 掉
2.让开发给 web 验证码留一个万用验证码,只要输入给定的验证码,就可以强制登录
3.当有的页面可以勾选保存用户名,密码可以通过 Cookie 跳过登录验证码,使用抓包工 具就行了
4.使用验证码识别技术
052-你如何管理测试数据?你使用过哪些Python库和工具来管理测试数据?
使用测试数据文件:可以将测试数据存储在文件中,然后在测试代码中读取文件来获取测试数据。常见的文件格式包括CSV、JSON等。Python中可以使用内置的csv模块、json模块等来读取和写入这些文件。
053-你如何编写自动化测试用例时保证测试用例的可维护性和可扩展性?
1、封装公共方法:在编写自动化测试用例时,会遇到很多重复的代码,例如登录、退出等操作。为了提高代码的复用性和可维护性,可以封装这些公共方法,并在需要的地方调用。这样可以减少代码量,并且方便修改和维护。
2、数据驱动测试可以将测试数据和测试代码分离,从而提高测试用例的可维护性和可扩展性。在编写自动化测试用例时,可以使用数据驱动测试来读取外部数据源,例如Excel、CSV等文件,从而实现更灵活和可扩展的测试用例。
054-Selenium如何与Web浏览器交互?
当我们在Selenium中执行脚本时,每个语句的操作信息都会通过JSON Wire Protocol协议以HTTP的方式传递给浏览器驱动程序,然后请求驱动程序会通过HTTP传递给真正的浏览器。这样,脚本中的命令将在浏览器中执行。
055-isDisplayed()和isEnabled()方法有什么区别?
isDisplayed()方法能够检查元素是否可见
isEnabled()可以用来验证元素是启用还是禁用的状态
056-如何在标题菜单的子菜单项上执行鼠标移动操作?
应该首先移动菜单标题,然后移至弹出菜单项并单击它。不要忘记在最后调用actions.perform() 。
057-类型转换函数常用的有哪些?
str()转化为字符串,int()转化为整型,float()转化为浮点型,bool()转化为布尔值,list()转化为列表,tuple()转化为元组,dict()转化为字典
058-Selenium支持哪些浏览器?
Selenium支持大多数的主流浏览器:如Chrome、Firefox、InternetExplorer,Safari和PhantomJS等
059-自动化测试的主要目的是什么?
自动化测试是提高软件测试的有效性、效率和覆盖率的最好方法。
060-在自动化中加入日志有什么用?
日志记录有助于我们调试错误和查看报告。
061-如何在Selenium WebDriver中发送一个alt或shift或tab键?
我们可以使用sendKeys()方法来发送任何键。
062-简述winrunner的测试步骤
主要包括如下6个阶段:
1). 创建GUI Map****文件:WinRunner可以通过它来识别被测试应用程序中的GUI对象。
2). **创建测试脚本:**通过录制,编程,或两者的组合创建。在录制测试脚本时,在你想检查被测试应用程序响应的地方插入验证点。
3). 调试脚本:用调试(Debug)的模式运行测试脚本以确保它们可以平稳地运行。还可以使用WinRunner提供的Step, Step Into, Step out功能来调试脚本。
4). **运行测试:**用验证(Verify)的模式运行测试脚本来测试你的应用程序。当WinRunner在运行中碰到验证点时,它会将被测应用程序中的当前数据和以前捕捉的期望数据进行比较,如果发现了任何不匹配,WinRunner将会把目前的情况捕捉下来作为真实的结果。
5). **检查结果:**确定测试脚本的成功或是失败。在每次测试脚本运行结束之后,WinRunner会将结果显示在报告中。它描述了所有在运行中碰到的重要的事件,例如验证点,错误信息,系统信息或是用户信息。如果发现在运行中有任何不匹配的验证点,你可以在测试结果窗口中查看期望的和实际的结果。
6). **提交缺陷:**如果一个测试脚本是由于所测试应用程序中的缺陷而导致失败的,你可以直接从测试结果窗口中提取缺陷的相关信息。
063-python获取页面元素方式有哪些?
用的较多的是id、name、xpath的方式
064-在Selenium中使用GitHub的优势是什么?
GitHub可以用于以下方面:
1、有效的源代码管理
2、方便团队协作
3、Selenium代码的版本控制
065-怎么用selenium做回归测试?和jmeter做回归测试有什么区别?
selenium工具我们主要是用来做UI自动化测试的,进行web的回归测试和冒烟测试; Jmeter工具主要用来做接口的回归测试,一个是用代码实现自动化的回归测试,一个是用工具实现的回归测试;代码的更加灵活,工具的更加简单。
066-Selenium在什么情况下寻找元素失败?
Selenium可以在许多情况下查找元素失败,如:
1.页面加载元素过慢,加等待时间 2.页面有iframe框架页,需要先跳转入iframe框架再定位 3.可能该元素是动态元素,需要使用js先把前置的操作完成,触发动态事件,让元素加载出来,然后再进行定位。 4.可能识别了元素,但是不能操作,比如元素不可用,不可写等。 5. 元素定位的表达式写错了。优化定位表达式
067-Selenium支持C/S架构应用的自动化测试吗?
Selenium不支持C/S应用的自动化测试。
但是有其他工具可以,比如Winium、AutoIT、pywinauto这些工具是可以做桌面应用程序的自动化,appium可以做app的自动化
068-你使用Thread.Sleep()的频率是多少?
不要在脚本中频繁使用Thread.Sleep(),因为它会在指定的时间内停止脚本的执行,而这会降低整体测试用例的执行速度。
069-selenium原理是什么?
selenium的原理就是用代码驱动浏览器进行操作;期间需要浏览器的驱动,所以选择浏览器就需要下载它的驱动 放在Python的安装目录下;Python发送指令给驱动,驱动可以驱使浏览器做相关的操作。
070-为什么在你的项目中选择使用Selenium?
我们选择Selenium有以下原因:
1、它是开源的和免费的
2、它是易于学习和设置的
3、它的应用非常广泛、是现在最流行的自动化工具
4、我们项目中的所有web应用程序都兼容Selenium
5、使用Selenium可以进行多浏览器的并行测试
071-如何获取文本框的文本?
String text = driver.findElement(By.id("textbox")).getAttribute("value");
072-什么是框架?
测试自动化框架是为自动化测试脚本提供执行环境而搭建的支架,它是一套准则,例如编码标准,测试数据处理,对象库处理等。
在自动化脚本编写过程中遵循这些准则是可以产生有益的结果,例如增加代码的复用率,更高的可移植性,降低的脚本维护成本等。
框架是准则而非规则,并不是强制性的要满足框架内的准则,是可以在不遵循这个准则的情况下编写脚本的,但是就有可能获取不到由框架带来的好处
073-RobotFramework框架中调用各种cmd命令,用什么关键字?
robot关键字
074-自动化用什么框架
全程班的学生可以回答:自己有利用python中requests、openpyxl、selenium库写一些接口、web自动化的简单脚本
075-写一个判断是否为三角形的函数 parseTrigon(a,b,c)
def parseTrigon(a,b,c): try: a=float(a) b=float(b) c=float(c) if a == 0 or b == 0 or c == 0: return 5 # 输入数据为0 elif a+b>c and a+c>b and b+c>a: if abc: return 4 #等边三角形 elif ab!=c or ac!=b or b==c!=a: return 3 #等腰三角形 else: return 2 #普通三角形 else: return 1 #非三角形 except : return 0 #边长不合法 res = parseTrigon(1,1,9) print(res)
076-框架校验数据库连接有涉及吗
全程班暂时没涉及。如果有涉及的话,需要引入mysqldb库来操作
077-用伪代码描述一下如何判断三角形是等边三角形?
首先def函数,然后定义abc的形参
首先判断一下是不是三角形,if a+b>c, a+c>b, b+c>a 并且 然后再if a=b=c ,print是等边三角形, else if print(不是三角形)
078-说一下常用的接口自动化工具/框架?
Jmeter、Postman Requests、pytest、unitest、HTTPClient、testNG、Junit
079-为什么在使用Selenium WebDriver时需要进行Session的处理?
在测试执行期间,Selenium WebDriver必须始终与浏览器保持交互以执行给定的命令,在执行时,也可能在当前执行完成之前,其它人开始在同一个机器的同一个浏览器执行另一个脚本。这种情况下,我们就需要使用session机制来使两种不同的脚本执行保持队里而不相互重叠。
080-同步和异步区别
同步和异步是一种通讯方式
同步:执行一个操作时,需要等待其处理完成,然后再进行下一个操作。举例: 下单接口中,需要调用库存接口做库存判断,所以必须等待库存接口返回数据才 能进行下一步操作,这是同步;
异步:执行一个操作时,不需要等待返回,就进行下一个操作,一般需要使用消息 中间件。举例:下单接口中,下单成功后需要调用邮件通知接口,不用等待接口返回成功,就可 以直接进行下一步操作,这是异步
081-使用selenium可以通过哪些方式查找页面上的一个element?
id、name、xpath、css、class、tag、link、partial_link
082-如何去保证自动化测试的稳定性?
避免使用固定的数据,测试用例中使用老的测试数据,可能会被别人修改或删除。所以 每次跑脚本前,在脚本中构造新的数据,跑完脚本后,把数据清理掉。
降低用例之间的耦合性,每个用例尽量都走完整的流程,不要依赖于其他用例,避免其 他用例执行失败,影响了后续的用例。
提升依赖环境的稳定行,通常某些用例会依赖第三方系统的环境,如果第三方环境不稳 定,会造成用例执行的不稳定。可以采用 mock 的形式,屏蔽第三方环境,提升环境稳 定性。
脚本的异常处理,在脚本中要多考虑可能出现的异常,尽量对每种异常都有对应的处理 方法,避免失败后程序退出
083-Java,C-Sharp、Ruby,哪门语言可以使用Selenium Grid?
几乎所有主流语言都可以和Selenium Grid一起使用。
084-描述登陆脚本的录制过程
UI角度:
1、在firfox上安装录制插件:selenium ide
2、开启录制,并在在firfox上进行登录操作。
3、将脚本保存到本地目录。
085-请列举一些常用的自动化测试框架,并描述其优缺点。
1、Selenium:Selenium是一个流行的自动化测试框架,用于测试Web应用程序。它可以模拟用户在浏览器中执行的各种操作,例如点击、输入、选择等。Selenium支持多种编程语言,如Java、Python、C#等。
2、Appium:Appium是一个用于测试移动应用程序的自动化测试框架。它支持多种移动操作系统,如iOS、Android等,并支持多种编程语言,如Java、Python等。
3、Robot Framework:Robot Framework是一个开源的自动化测试框架,用于测试Web应用程序和移动应用程序。它支持多种测试库和插件,并提供了易于使用的语法和报告。
4、TestNG:TestNG是一个流行的测试框架,用于测试Java应用程序。它支持各种测试类型,如单元测试、集成测试和端到端测试等,并提供了易于使用的注释和报告。
086-WebDriver的click函数有什么用?
click函数用于单击页面的任何元素
087-说一下,你是如何提升自动化脚本稳定性的?
a. 避免使用固定的数据,测试用例中使用老的测试数据,可能会被别人修改或删除。 所以每次跑脚本前,在脚本中构造新的数据,跑完脚本后,把数据清理掉。
b. 降低用例之间的耦合性,每个用例尽量都走完整的流程,不要依赖于其他用例,避 免其他用例执行失败,影响了后续的用例。
c. 提升依赖环境的稳定行,通常某些用例会依赖第三方系统的环境,如果第三方环境 不稳定,会造成用例执行的不稳定。可以采用 mock 的形式,屏蔽第三方环境,提 升环境稳定性。
d. 脚本的异常处理,在脚本中要多考虑可能出现的异常,尽量对每种异常都有对应的 处理方法,避免失败后程序退出
088-你是如何处理iframe里面元素定位的?
有时候我们写的元素定位表达式没有问题,但是脚本还是提示no such element,那么我们就需要考虑 这个元素是否在iframe中。通过f12查看元素HTML中是否有iframe标签,如果有iframe,需要先将 driver切换到iframe中,可以通过frame的name和id和索引三种方法来定位frame,或者先找到iframe 的元素,然后把这个元素传递进去也可以。
089-什么是切片?
切片是Python中的一种方法,能让我们只检索列表、元组或字符串的一部分。在切片时,我们使用切片 操作符[]
090-你有没有用过QTP做项目,QTP的工作原理
测试对象是QTP在测试或组件中创建的用于表示应用程序中的实际对象的对象,并且QuickTest在对象库中存储有关该对象的信息,包括对象的属性、操作等。录制的时候,QTP将操作过的所有对象都记录下来,保存在对象库Object repository中,记录的形式是一个逻辑名加上若干识别属性。因此,一个完整的脚本测试应该包括两部分:一个是测试脚本的代码,一个是对象库。
091-接口自动化用到什么包?
我们用Python语言做的接口自动化测试,使用到requests库发送接口请求,还有openpyxl库操作excel表格的测试用例。还有一些其他的,比如jsonpath,获取接口关联的数据等。
092-你如何解决测试用例执行时间过长的问题?
1、并行执行测试用例:可以使用Python的多线程或多进程技术来并行执行测试用例,从而减少测试执行时间。例如,在pytest框架中可以使用-xdist插件来实现分布式测试,将测试用例分配给多个进程或线程执行。
2、减少重复测试:有些测试用例的执行结果不随时间变化,如果每次都执行这些测试用例,会浪费时间和资源。可以使用缓存机制或只执行必要的测试用例来减少重复测试,提高测试执行效率。
3、优化测试代码:测试代码的性能也会影响测试执行时间。可以对测试代码进行性能优化,如减少无用代码、优化算法等,从而提高测试代码的执行效率。
093-在selenium如何处理多窗口?
这个多窗口之间跳转处理,在实际selenium自动化测试经常遇到。点击一个链接,这个链接会在一个新 的tab打开,然后接下来要查找元素在新tab打开的页面,需要先将driver切换至window,然后再定位,
步骤如下
先获取当前的windowhandle
操作打开新界面后,获取所有的windowhandles
遍历windowhandles,判断和当前的windowhandle不一样则切换至该windowhandle
window太多则可以按照title、url等其他信息进行判断切换
094-ui 自动化中定位不到元素的原因有哪些
定位器选择错误
定位字符串错误
元素嵌套在 frame 当中
页面元素没有及时加载
元素在新窗口中
脚本流程与实际不符
元素不在当前页
095-了解过的UI自动化框架有哪些?
web自动化主要是Selenium
APP自动化主要是Appium
096-如何识别网页元素?
为了准确的识别web元素,Selenium使用了以下的定位器:
id, name, xpath,css,class,tag,link,partial_link
097-说一说By这个类?
By类用于在文档中定位元素的。可以使用By.name,By.id,By.tagName等方法,根据不同的方式来定位元素
098-对于自动化是怎么学习的?
首先是自己先去网上找了一些入门的文档和视频,先把基础的代码能力学习了,然后再慢慢套用到自己工作的项目中来,遇到了问题我会多去网上找资料解决,实在是解决不了的,我会和我们公司的同事多多沟通。
099-对自动化框架的了解程度?自动化框架函数?
掌握python基本编码,自己有利用python中requests、openpyxl、selenium库写一些接口、web自动化的简单脚本
接口自动化:我们用python实现接口自动化,就是冒烟测试。我们把测试数据放到excel里面,然后使用openpyxl库读取测试数据,之后使用requests库进行http请求,之后把期望值与实际值进行判断,把结果通过或不通过在存回到excel里;
UI自动化测试:我们用的是Python的selenium工具实现的webUI自动化测试的,覆盖的主要是冒烟测试;UI自动化主要就是做元素定位,我们用的id name 和xpath的定位方法比较多;再编写对应web操作,例如点击、输入等代码,完成UI自动化。
100-为什么用//来写xpath?
//表示xpath相对路径。它可以在网页上的任何地方定位任何元素。
101-用python框架实现什么功能,写测试用例写什么东西?
全程班可以说实现了简单的接口测试,通过openpyxl读取测试用例,调用requests库来测试接口,并进行测试用例中期望,跟实际返回结构的断言比较
102-请写出你熟悉的自动化测试工具
robotframework, jmeter,postman, apifox, yapi......
103-什么时候需要使用AutoIT?
AutoIt是一种类似basic的免费脚本语言,设计主要用于Windows GUI的自动化,一般用于基于windows的弹出和对话框窗口处理。
104-为什么会报NoSuchElementException异常?
当页面上面不存在该元素或找不到该元素时会抛出NoSuchElementException异常。
105-web 自动化中如何处理 alert 弹窗
selenium 里提供了 switch_to.alert 方法来处理弹窗,
处理代码如下(Python):
#切换到 alert 窗口
alert = driver.switch_to.alert
#点击确定
alert.accept()
106-Selenium能自动读取条形码吗?
在Selenium在无法实现条形码读取的
107-什么是生成器和迭代器?
迭代器:是访问集合元素的一种方式,可以记住遍历的位置对象,从第一个元素开始访问,直到所有元素被访问完结,只可以往前不可以后退,iter()和next()两个基本方法
生成器:生成器是一种特殊的迭代器,它的返回值不是通过return而是用yield
108-对JenKins的了解程度?什么是持续集成?JenKins的优势是什么?
1、我会搭建JenKins环境,配置定时构建、定时邮件发送等。之前做自动化集成时,构建过任务,自动发送结果。
2、持续集成是一种软件开发的实践,即团队开发成员经常集成他们的工作,通常每个成员每天至少集成一次,也就意味着每天可能会发生多次集成。每次集成都通过自动化的构建(包括编译,发布,自动化测试)来验证,从而尽快地发现集成错误。许多团队发现这个过程可以大大减少集成的问题,让团队能够更快的开发内聚的软件。
3、①开源免费 ②具备跨平台功能,支持所有的平台 ③master/slave支持分布式的build
持续集成中的任何一个环节都是自动完成的,无需太多的人工干预,有利于减少重复过程以节省时间、费用和工作量
109-selenium 怎么定位?怎么上传文件?元素定位有哪些?
我们常用的selenium元素定位方法主要有id,name和xpath;xpath用的比较多; 上传文件的话一般有两种,如果是input标签的话,可以直接用send_keys进行上传操作;如果是非input标签,可以用以下几种方法: 1)Python pywin32库,识别对话框句柄,进而操作 2)SendKeys库 3)autoIT,借助外力,我们去调用其生成的au3或exe文件。 4)keybd_event,跟第一种类似,不过是模拟按键,ctrl+a,ctrl+c, ctrl+v… 元素定位方法有八种,比如id ,name,xpath,css,link_text,partial_link_text,tag_name,class_name
110-在 selenium 中如何处理多窗口?
这个多窗口之间跳转处理,在实际 selenium 自动化测试经常遇到。点击一个链接,这 个链接会在一个新的 tab 打开,然后接下来要查找元素在新 tab 打开的页面,需要先将 driver 切换至 window,然后再定位,
步骤如下
先获取当前的 windowhandle
操作打开新界面后,获取所有的 windowhandles
遍历 windowhandles,判断和当前的 windowhandle 不一样则切换至该 windowhandle
window 太多则可以按照 title、url 等其他信息进行判断切换
111-你是怎么做接口自动化的?
对于全程班/速成班的掌握程度,可以说:
我们项目里用过python做自动化测试; 接口自动化:
我们用python实现接口自动化,就是冒烟测试。我们把测试数据放到excel里面,然后使用openpyxl库读取测试数据,之后使用requests库进行http请求,之后把期望值与实际值进行判断,把结果通过或不通过在存回到excel里; UI自动化测试: 我们用的是Python的selenium工具实现的webUI自动化测试的,覆盖的主要是冒烟测试;UI自动化主要就是做元素定位,我们用的id name 和xpath的定位方法比较多;再编写对应web操作,例如点击、输入等代码,完成UI自动化。****
112-web自动化如何处理alert弹窗?
selenium里提供了switch_to.alert方法来处理弹窗,处理代码如下(Python)
#切换到alert窗口 alert = driver.switch_to.alert #点击确定 alert.accept()
113-解释一下这句代码:WebDriver driver = new FirefoxDriver();
它将启动一个新的Firefox浏览器驱动程序实例。
114-你觉得python做自动化测试和用jmeter有什么区别?
Jmeter工具界面很多功能控件是固定的,必须按照工具规定的来完成自动化,而且主要是完成接口自动化,不够灵活; python有很多可调用的库,可以依据自己业务情况来灵活编写脚本完成自动化测试,不单单接口自动化,也可以UI自动化
115-最新版本的Selenium WebDriver支持移动App测试吗?
Selenium不直接支持移动测试,但可以通过其他工具(如Appium)的帮助实现。
116-ui自动化定位不到元素的原因有哪些?
自动化定位不到元素的原因有:
1> 定位器选择错误
2> 定位字符串错误
3> 元素嵌套在frame当中
4> 页面元素没有及时加载
5> 元素在新窗口中
6> 脚本流程与实际不符
7> 元素不在当前页
117-如何在指定的脚本位置暂停一个测试执行5秒?
可以使用硬性等待(强制等待、线程休眠):Thread.sleep(5000);
118-Selenium中有哪些检查点(验证点)?
Selenium中有如下不同类型的检查点
1:检查元素是否存在
2:检查元素是否可见
3:检查元素是否有效
4:检查文本是否存在
119-会自动化测试吗?
python自动化 、 java jmeter: 简单的自动化 ;挑自己会的说。
120-请简单描述下UI自动化测试的优缺点,有哪些主流的UI自动化测试工具?
UI自动化测试的优点: 1.减少人力成本:UI自动化测试能够有效地减少测试人员的工作量,从而节省企业的人力成本。 2.提高测试效率:UI自动化测试可以在短时间内执行大量的测试用例,可以极大地提高测试效率。 3.提高测试质量:UI自动化测试可以准确地检测出系统中存在的问题,并把这些问题反馈给开发人员,从而提高系统的质量。 缺点: 1.开发成本高:UI自动化测试的开发成本较高,需要一定的时间和精力来构建脚本和测试环境。 2.维护成本高:系统经常会发生变化,因此,UI自动化测试需要经常维护和更新,以适应系统变化,这也会带来较高的维护成本。 主流的UI自动化测试工具: 1.Selenium:Selenium 是一个开源测试自动化工具,可以用于自动测试网站的功能性。 2.Appium:Appium 是一个开源的跨平台移动应用测试工具,可以用于测试 Android 和 iOS 平台上的移动应用。 3.UIAutomator:UIAutomator 是一种基于 Java 语言的 UI 自动化测试框架,可以用于测试 Android 平台上的应用。 4.WinAppDriver:WinAppDriver 是一个开源的 UI 自动化测试工具,可以用于测试 Windows 平台上的应用程序。
121-Python自动化中遇到frame框架页面怎么处理?
先切换到需要定位元素的frame里,再定位元素,做操作
122-python怎么做UI自动化?
通过调用selenium中webdriver,打开网页,通过元素定位方式定位页面元素,再编写对应web操作,例如点击、输入等代码,完成UI自动化。
123-自动化的优势?自动化测出多少个bug?bug少就稳定吗?
1、优势:对程序的回归测试更方便;提高工作效率高;可以运行更多更繁琐的测试,节省人力资本。
2、我们自动化主要用作新版本迭代时的旧功能的回归测试,所以基本发现的问题很少,因为上个版本有做全面的测试,在新版本迭代上就功能基本没什么bug。
3、因为主要用作新版本的旧功能的回归测试,这个时候bug少说明开发修复bug后没有引入新的bug,在一定程度上是稳定的。
124-你每天编写和测试多少脚本?
这完全依赖于自动化框架和被测试的应用程序难易程度。
比较麻烦的功能可能只能写2-3个甚至有可能几天写一个脚本
比较简单的功能可能一天就可以写10来个脚本
125-怎么往execl写输入数据,用Python实现
from openpyxl import load_workbook wb = load_workbook("文件名.xlsx") sh = wb["表单名"] sh.cell(row=行数,column=列数).value = '写入的数据' wb.save("文件名.xlsx")
126-用自己熟悉的语言对字符串进行反转,输入china 返回anihc
str1 = ‘china’
print(str1[::-1])
127-你了解的自动化测试工具?都有什么特点?
我们项目里用过python做自动化测试;
接口自动化:
我们用python实现接口自动化,就是冒烟测试。我们把测试数据放到excel里面,然后使用openpyxl库读取测试数据,之后使用requests库进行http请求,之后把期望值与实际值进行判断,把结果通过或不通过在存回到excel里;
UI自动化测试:
** **我们用的是Python的selenium工具实现的webUI自动化测试的,覆盖的主要是冒烟测试;UI自动化主要就是做元素定位,我们用的id name 和xpath的定位方法比较多;再编写对应web操作,例如点击、输入等代码,完成UI自动化。
