Python selenium面试题,python+selenium面试题

  Python selenium面试题,python+selenium面试题

  1.如何判断硒中是否存在某种元素?

  答:isElementPresent

  2.selenium中的hidden或display=none元素可以定位吗?

  答:找不到。

  3.如何保证硒中操作元素的成功率?也就是说,如何保证我点击的元素一定是可点击的?

  答案:(1)添加元素的智能等待时间:driver.implicit _ wait (30)

  (2)尝试用不同的方式定位id、name、classes、xpath、CSS选择器。如果第一个失败,您可以自动尝试第二个。

  (3)硒通过元素的定位来保证元素的成功率。当然,定位的方法有很多种,肯定有适合的。但是在自动化项目的实现中,高质量的自动化测试并不是由测试人员来保证的,而是需要开发人员规范自己的开发习惯,比如在页面元素中加入唯一的名称、id、IDs,这样就可以大大提高元素定位的准确性。当然,如果开发者开发不规范,我们在定位元素时会尽量使用相对地址位置,这样可以减少页面变化对元素位置的影响。只要我们的要素定位准确,就能保证每一次操作都达到预期的效果。

  4.如何提高selenium脚本的执行速度?

  答:Selenium脚本的执行速度受很多因素影响,比如网速、繁琐的操作步骤、页面加载速度、我们在脚本中设置的等待时间、运行脚本的线程数量等。所以不能片面追求运行速度,保证稳定性,稳定实现回归测试才是最重要的。

  1)我们可以从以下几个方面提高速度:

  第一,减少操作步骤。比如打开我们要测试的页面需要三四步,我们可以直接通过网址打开,减少不必要的操作。

  第二,中断页面加载。如果页面加载了太多内容,我们可以检查加载缓慢的原因。如果加载的内容不影响我们的测试,设置超时并中断页面加载。

  3.在设置等待时间时,可以使用sleep来固定时间,或者在检测到某个元素出现后中断等待,这样也可以提高速度。

  第四,配置testNG实现多线程。在编写测试用例时,一定要实现松耦合,然后在服务器允许的情况下尽量设置多线程运行,以提高执行速度。

  5.用例运行过程中经常出现不稳定的情况,也就是说这次可以通过,下次就不能通过了。如何提高用例的稳定性?

  答案:time.sleep(),driver.implicitly_wait(30),尝试捕捉和处理异常。这时候就要分析不稳定的原因,然后有针对性的解决问题。

  那么主要有以下几个方面:

  一、网速问题:有时网页加载很慢,程序执行时不显示要操作的元素。这种情况相当普遍。网速好了就过去了。同样,如果页面没有打开,就不会通过。为了提高稳定性,只能牺牲运行时间,在频繁检测失败元素前增加等待时间,等待待操作元素出现后再执行后续操作。

  二、硒的原因:硒1.0和2.0还是有区别的,2.0下运行的一些功能有时有效有时无效。如果是mouseover()函数,就是这种情况,我们需要避免使用这样的函数。

  第三,多线程时,测试用例相互影响。虽然多线程运行速度更快,但是如果用例之间的耦合没有设计好,也会影响。如果用例A在用例B之前执行,就会影响用例B;否则没有问题。在这种情况下,如果你的自动化测试项目要多线程化,你应该提前放松测试用例的耦合度,虽然这与它无关,因为多线程的执行顺序是不受控制的。

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

  答:自动化测试用例的执行策略取决于自动化测试的目的。通常,有以下策略:

  1.自动化测试用例用于监控。出于这个目的,我们将自动化测试用例设置为定期执行。如果它们每五分钟或一小时执行一次,您可以在jenkins上创建一个计划任务。

  二。必须返回的用例。一些测试用例,比如BVT测试用例,我们需要在公司产品上线之前返回执行。然后,我们将测试用例设置为触发执行,并将我们的自动化测试任务绑定到jenkins中开发的构建任务。当开发人员处于模拟环境的上部时,我们的自动化测试用例将被触发执行。

  三。不需要频繁执行的测试用例。像全尺寸测试用例一样,我们不必一直返回执行。毕竟还是需要时间的,一些非主营业务线不需要经常回。这种测试用例是手工执行的,在jenkins中创建一个任务。当需要执行时,可以手工构建。

  7.什么是持续集成?

  答:持续集成源于极限编程(XP),是一种软件实践。软件开发过程中的集成步骤是一个漫长且不可预测的过程。整合过程中可能会出现很多问题,所以整合过程需要尽可能的小。事实上,持续集成是关于软件的持续集成。持续集成,最简单的形式,包括一个工具来监控版本控制(SVN等)的变化。).当发现更改时,该工具可以自动编译和测试您的应用程序。

  8.在自动化测试过程中,需要连接到数据库进行数据验证吗?

  回答:UI自动化不是必须的,但是界面测试是必须的。

  9.ID、名称、类、XPath、CSS选择器,你最喜欢哪个,为什么?

  回答:css和xpath几乎所有的元素都可以定位。

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

  答:触发动态加载元素的事件,直到动态元素出现并定位。

  1.如何定位属性动态变化的元素?

  答:xpath或者css的定位是同龄人,家长,孩子。

  12.点击链接后,selenium会自动等待页面加载吗?

  答:我会等待页面加载。

  13.webdriver客户端的原理是什么?

  答案:Webdriver实现原理:通过研究selenium-webdriver的源代码,发现webdriver的实现原理并不是高深莫测,不可预测的。这里以webdriver ruby绑定的firefox-webdriver实现为例,简单介绍一下webdriver的工作原理。当测试脚本启动firefox时,selenium-webdriver将首先在一个新线程中启动firefox浏览器。如果测试脚本指定了firefox的概要文件,就用这个概要文件启动它;否则,启动一个新的配置文件,启动Firefox一般来说,firefox是通过非远程方式启动的。启动后,selenium-webdriver会将firefox绑定到一个特定的端口。绑定完成后,firefox实例将作为webdriver的远程服务器存在。客户端(也就是测试脚本)创建一个会话,其中通过http request向远程服务器发送一个restful请求,远程服务器解析请求,完成相应的操作并返回响应;客户端接受响应并分析其返回值,以决定是转到步骤3还是结束脚本;这是webdriver的工作流程,看起来很复杂。其实了解了webdriver的实现原理之后,理解上面的问题应该就相对简单了。Webdriver是按照服务器-客户端的经典设计模式设计的。服务器是远程服务器,可以是任何浏览器。当我们的脚本启动浏览器时,浏览器就是远程服务器,它的职责是等待客户端发出请求并做出相应的响应;客户端只是我们的测试代码。我们测试代码中的一些动作,比如打开浏览器,跳转到特定的url,都是以http请求的形式发送到被测浏览器,也就是远程服务器。远程服务器接受请求并执行相应的操作,在响应中返回执行状态、返回值等信息。

  14.webdriver的协议是什么?

  答:网络驱动线协议

  15.启动浏览器时使用哪个webdriver协议?

  答案:http协议

  16.什么是页面对象设计模式?

  答:页面对象是指用于在UI界面上与用户进行交互的对象。它可以指整个页面或页面上的一个区域。页面对象是测试代码的交互对象,是实际UI的抽象模型。您可以通过Page对象减少重复代码的编写。例如,许多页面有相同的页眉、页脚、导航器和其他部分。如果把这些抽象出来,可以写一次,用在其他地方。

  17.下拉框中value=xx的选项如何选择?

  答:需要二次定位。

  18.如何在定位元素后突出显示元素(出于调试目的)?

  答:重置元素属性,给定位后的元素添加背景和边框。

  19.什么是断言?

  答:断言的英语是断言,断言检查的英语是断言检查。断言是一个逻辑表达式,它指定了程序必须已经存在的状态,或者一组程序变量在程序执行过程中的某个时刻必须满足的条件。

  20.如果选择自动化测试计划,你会选择哪种语言,java,js,python还是ruby?

  回答:用你熟悉的语言。

  21.在page对象的设置模式下,需要给位于page中的方法添加断言吗?

  答:没有。

  22.如何在页面对象设计模式中实现页面跳转?

  答:get,点击(可能有坑)

  23.自动化测试用例从何而来?

  答:是从手工用例中提炼出来的,可以参考自动化用例的执行策略。

  24.你认为自动化测试最大的缺陷是什么?

  回答:不稳定,不可靠,维护困难,成本和效益不成正比。

  25.什么是分层测试?

  回答:UI测试、集成/接口测试、单元测试都可以看作是分层测试。

  26.webdriver可以用于接口测试吗?

  回答:很难,所以不建议做接口测试。

  27.get和post有什么区别?

  答:因为使用GET请求不会产生任何动作。无操作意味着GET的HTTP请求不会在服务器上产生任何结果。但是,安全方法并不意味着什么都不会发生。这里的安全方法只是指信息不会被修改。POST可能会修改对服务器上资源的请求。例如,CSDN的博客,用户提交文章或读者提交评论,是通过POST请求实现的,因为重新提交文章或评论后,资源(即某个页面)不同或资源被修改。

  两种请求方法的区别:

  1.GET请求时,所请求的数据将被追加到URL中,并带有?分区URL和传输数据,连接多个参数。URL的编码格式是ascii编码,而不是uniclde,这意味着所有非ASCII字符在传输前都必须进行编码。POST请求:POST请求将请求的数据放在HTTP请求包的主体中。以上项目=带锯是实际传输数据。所以GET请求的数据会在地址栏中暴露,POST请求的数据不会。

  2.传输数据的大小在HTTP规范中,对URL的长度和传输数据的大小没有限制。但在实际开发过程中,对于GET来说,URL的长度受到具体浏览器和服务器的限制。因此,在使用GET请求时,传输的数据会受到URL长度的限制。对于POST,理论上没有限制,因为不是URL,但实际上每个服务器都会规定POST提交的数据大小是有限制的,Apache和IIS都有自己的配置。

  3.安全岗比GET更安全。

  28.公司一直在用的测试系统(B/S架构)突然访问不了了,需要排查故障恢复。你的检查方法有哪些?

  答:

  第一,输入网站的域名不能直接访问。之前网站正常,突然访问不了了。

  1)测试FTP是否正常,可以登录。如果不能登录,直接问域名提供商。如果是域名提供商的问题,请直接联系他们。

  2)空间给的三级域名能否访问网站打开网站(所有空间都给三级域名),如果不能访问,应该是空间问题。

  3)在电脑的开始菜单中输入cmd,在弹出的黑框中输入:ping你的域名;然后按回车。如果看不出IP或IP地址与你的主机地址不匹配,说明域名解析有误。这是域名问题,你必须重新解析域名。

  二是访问报告404错误(找不到页面),说明网站内容正常或者程序有问题。看看程序是否完成。

  三。访问网站时出现MySQL服务器错误。这是一个数据库链接错误。检查数据库连接文件和数据库是否有错误。

  四。访问网站时出现500错误。1.请登录FTP查看是否有更多异常文件或文件缺失,说明网站已被入侵,立即联系网站厂商排除故障。2.如果空间中没有丢失文件且FTP程序目录或刚安装完就出现500错误,请确认空间中开启了scandir()功能,看是否被禁止。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: