首页 > 编程知识 正文

web自动化测试面试题,python自动化测试实例

时间:2023-05-04 10:15:20 阅读:129044 作者:1354

1、用selenium如何判断元素是否存在?

- isElementPresent

2、selenium的隐藏或显示=none的元素可以定位于吗?

-不能

3、用selenium如何保证操作要素的成功率? 也就是说,怎么保证我点击的元素一定可以点击?

-添加元素智能延迟驱动程序. implicitly _ wait (30 )

- try方式采用id、name、clas、x path、CSS选择器的不同方式进行定位,第一个失败时可以自动尝试第二个

-Selenium保证元素的成功率通过元素定位,当然其定位方法很多,一定会有合适的。 但是,在自动化工程的实施过程中,高质量的自动化测试并不是测试人员唯一能保证的。 开发人员必须规范开发习惯,例如为页面元素指定唯一的名称和id。 这将大大提高元素定位的准确性。 当然,如果开发人员开发不合格,在放置元素时尽量使用相对地址配置。 这样可以减少元素的排列受到页面变化的影响。 只要我们的要素定位准确,就能确保我的一切操作都如我所期望的那样

4、如何提高selenium脚本的运行速度?

-Selenium脚本的运行速度受多种因素影响,包括网络速度、操作过程的复杂性、页面加载速度、脚本中设置的等待时间以及运行脚本的线程数。 所以,不是单方面追求运行速度,而是为了确保稳定性,能够稳定地实现回归测试是很重要的。

加快速度有以下几种方法。

一、减少操作步骤,只要经过三四步就能打开要测试的页面,我们就可以直接在网站上打开,减少不必要的操作。

第二,中断页面加载。 如果页面加载内容过多,请检查加载缓慢的原因;如果加载的内容不影响测试,请设置超时时间以中断页面加载。

三、设置等待时间,可以选择固定时间sleep,也可以检测到出现某个因素后中断等待时间,也可以加快速度。

四.配置testNG实现多线程。 在创建测试用例时,请确保实现松散耦合,然后在服务允许的情况下设置多线程运行并提高运行速度。

5、用例在运行中经常不稳定。 也就是说,这次能通过,下次不能通过。 如何提高用例的稳定性?

- time.sleep ()

-driver.implicitly_wait(30 ) ) )。

多用try捕获,应对异常

-此时我们必须分析不稳定的原因,有针对性地解决问题。 主要有以下几个方面。

另一方面,网速问题:网页加载缓慢,运行程序时可能看不到要操作的元素。 这是很常见的事情,运行一次网速好的时候通过,再运行一次页面没有打开就不能通过。 为了提高稳定性,只能牺牲执行时间。 在检测到容易失败的元素之前加上等待时间,在出现要操作的元素后执行以下操作。

二、Selelnium原因: Selenium1.0和2.0仍然存在差异,部分函数在2.0下运行可能确实有效,也可能无效。 如果mouseover ()函数是这样的,则必须避免使用这样的函数。

三.多线程情况下,测试用例之间的相互影响。 多线程的执行速度很快,但如果没有设计用例之间的耦合性,则会产生影响。 如果用例a早于用例b运行,则会影响用例b。 相反,没有问题。 在这种情况下,如果你的自动化测试工序要多线程的话,你应该提前放松测试用例测试的结合度,尽量不存在任何关系。 因为多线程的执行顺序不受控制。

6、你的自动化用例执行策略是什么?

-自动化测试用例的执行策略是为了查看自动化测试的目的,通常有以下策略:

第一,自动化测试用例是用于监视的。 在此目的下,将自动化测试用例设置为定时运行。 如果要每5分钟或1小时运行一次,请在jenkins中创建定时任务。

二、必须回归的用例。 一些测试用例,如BVT测试用例,必须在公司产品上线之前重新运行。 现在,我们将测试用例配置为触发表达式运行,并将自动测试任务绑定到jenkins开发的build任务上。 当开发人员在模拟环境的上部代码中时,我们的自动化测试用例将运行。

三.不需要经常运行的测试用例。 就像总量测试案例一样,我们不需要一直回归运行。 一定要花时间。 一些非主要业务线也不需要经常恢复。 这样的测试用例需要手动运行,在jenkins中创建任务,需要执行时手动构建即可。

7、持续整合是什么?

-持续集成是基于极限编程(XP )的软件实践,软件开发过程中的集成步骤是漫长而不可预测的过程。 集成过程可能会遇到很多问题,因此集成过程应该尽可能小和多。 事实上,持续集成是指持续进行软件集成工作。 持续集成,最简单的格式是包括用于监测版本控制变化(如SVN )的工具。 当发现变化时,该工具可以自动编译以测试APP应用程序。

8、测试自动化时,是否需要连接数据库进行数据检查?

-不需要ui自动化

-需要接口测试

9、id、name、class、xpath和CSS

elector这些属性,你最偏爱哪一种,为什么?

- css 、xpath 几乎所有的元素都可以定位到

10、如何去定位页面上动态加载的元素?

- 触发动态加载元素的事件,直至动态元素出现,进行定位

11、如何去定位属性动态变化的元素?

- xpath或者css通过同级、父级、子级进行定位

12、点击链接以后,selenium是否会自动等待该页面加载完毕?

- 会的

13、webdriver client的原理是什么?

- [Webdriver实现原理](http://www.cnblogs.com/timsheng/archive/2012/06/12/2546957.html)

通过研究selenium-webdriver的源码,笔者发现其实webdriver的实现原理并不高深莫测无法揣度。在这里以webdriver ruby binding的firefox-webdriver实现为例,简单介绍一下webdriver的工作原理。

当测试脚本启动firefox的时候,selenium-webdriver 会首先在新线程中启动firefox浏览器。如果测试脚本指定了firefox的profile,那么就以该profile启动,否则的话就新启1个profile,并启动firefox;

firefox一般是以-no-remote的方法启动,启动后selenium-webdriver会将firefox绑定到特定的端口,绑定完成后该firefox实例便作为webdriver的remote server存在;

客户端(也就是测试脚本)创建1个session,在该session中通过http请求向remote server发送restful的请求,remote server解析请求,完成相应操作并返回response;

客户端接受response,并分析其返回值以决定是转到第3步还是结束脚本;

这就是webdriver的工作流程,看起来很复杂实际上当了解了webdriver的实现原理后,理解上述问题应该比较简单。

webdriver是按照server – client的经典设计模式设计的。

server端就是remote server,可以是任意的浏览器。当我们的脚本启动浏览器后,该浏览器就是remote server,它的职责就是等待client发送请求并做出相应;

client端简单说来就是我们的测试代码,我们测试代码中的一些行为,比如打开浏览器,转跳到特定的url等操作是以http请求的方式发送给被 测试浏览器,也就是remote server;remote server接受请求,并执行相应操作,并在response中返回执行状态、返回值等信息;

14、webdriver的协议是什么?

-The WebDriver Wire Protocol

15、启动浏览器的时候用到的是哪个webdriver协议?

-http

16、什么是page object设计模式?

-http://www.cnblogs.com/tsbc/p/4080301.html

相似功能地方,代码基本都是一样的,界面元素换个查找方式,把原来的使用 xpath方式,改为使用 id 查找,需要对每个用例脚本都要改,虽然几个用例看不出什么工作量,但是重复findElement的代码,已经让我们感到了代码的笨重。如果某些定位发生了改变,我们就得贯穿整个测试代码进行调整元素定位,这样就会导致我们的脚本在后期,难以维护。因此通过Page Object Model 我们可以创建更加健壮代码,并减少或者消除重复的测试代码,从而也能够提高代码的可读性,减少编写脚本的工作量。Page Object Model的实现,就是通过分离测试对象和测试脚本的抽象来实现的。

17、什么是page factory设计模式?

- http://relevantcodes.com/pageobjects-and-pagefactory-design-patterns-in-selenium/

18、怎样去选择一个下拉框中的value=xx的option?

-二次定位

19、如何在定位元素后高亮元素(以调试为目的)?

-重置元素属性,给定位的元素加背景、边框

20、什么是断言?

-断言的英文是assertion,断言检查的英文是assertion checking。

-断言是指定一个程序必须已经存在的状态的一个逻辑表达式,或者一组程序变量在程序执行期间的某个点上必须满足的条件。

21、如果你进行自动化测试方案的选型,你会选择哪种语言,java,js,python还是ruby?

-使用自己熟悉的语言

22、page object设置模式中,是否需要在page里定位的方法中加上断言?

-不需要

23、page object设计模式中,如何实现页面的跳转?

-get、click (可能有坑)

24、自动化测试用例从哪里来?

-手工用例中抽取

-可以参考自动化用例的执行策略

25、你觉得自动化测试最大的缺陷是什么?

-不稳定

-可靠性

-不易维护

-成本与收益

26、什么是分层测试?

-[分层自动化](http://www.cnblogs.com/fnng/p/3653793.html?utm_source=tuicool&utm_medium=referral)

还是自己理解吧

27、webdriver可以用来做接口测试吗?

-有难度,不推荐

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。