关于selenium相关问题及解答

注:问题中答案是根据自身学习经验,及网上大神答案进行相关总结得出,较为粗浅,如有什么遗漏或不正确的地方,还请指出,闲下来就总结一下。持续更新中。


Q1.selenium中如何判断元素是否存在?

      之前selenium中的WebDriver中一个方法:isElementPresent()。作用即是判断该元素是否存在。

      但现在selenium中,如果需要判断元素是否存在,则需要封装一个try-catch方法进行判断    

                public boolean isElementPresent(By by){
                      try{
                        driver.findElement(by);
                           return true;
                          }catch(Exception e){
                            return false;
                          }
                          }
        接着直接调用该方法就可以了,比如:  

  assertEquals(isElementPresent(By.id("login"));


Q2:selenium中hidden或者是display = none的元素是否可以定位到?

     隐藏元素或不可见元素,通常被运用在下拉菜单栏当中,鼠标移至(或点击)某一个菜单块,下拉列表才会显示出来,然后再进行定位,即可以成功。(这里部分元素是用xpath进行定位,但实际情况中使用ID、Name等不变属性进行定位较好)

如下代码展示:

		driver.findElement(By.xpath("//*[@id='sidebar-collapse']/i")).click();//点击打开菜单栏
		driver.findElement(By.xpath("//*[@id='sidebar']/div[1]/ul/li[2]/a")).click();//点击菜单块
		Thread.sleep(1000);
		driver.findElement(By.linkText("待办案件")).click();//点击待办中心
		Actions enterPress=new Actions(driver);
		WebElement searchbox=driver.findElement(By.className("search-text" ));//找到搜索框
		WebElement searchButton=driver.findElement(By.xpath("//*[@id='main-container']/div[2]/div/div/button"));//找到搜索按钮
		searchbox.sendKeys("f");//输入数据
                enterPress.moveToElement(searchButton);
                enterPress.click().perform();//点击搜索按钮
		


Q3:selenium中如何保证操作元素的成功率?也就是说如何保证我点击的元素一定是可以点击的?

        操作元素的成功率即是通过定位元素的成功率来确定的。定位元素有很多种方法,比如:ID、Name、ClassName等等,如果程序员没有养成写代码的规范型,缺少这些值,那么定位元素的准确性则会大打折扣。一般来说,规范的代码元素的属性需要具备ID、Name等值,并且值唯一。这样使用这些属性值进行定位,就算程序员后续会修改代码,也不会影响你的测试代码的可执行性。


Q4:如何提高selenium脚本的执行速度?

        脚本执行的速度会受多方面的影响。比如:电脑配置、网速、脚本执行步骤繁琐程度、在运行中设置的等待时间、运行脚本的线程数。

        通常,脚本执行步骤的繁琐程度可以通过使用面向对象的思想,添加相关框架结构,从而减少代码的重复率。比如:可以通过将用户名及密码写入缓存,从而减少登陆操作重新读入数据的工作量。

       执行某一页面的速度过长,可以设置等待速度。如果加载的内容不会影响测试,可以中断加载。


Q5:用例在运行过程中经常会出现不稳定的情况,也就是说这次可以通过,下次就没办法通过了,如何去提升用例的稳定性?

        这个问题应该先找出不稳定情况的根因,然后再来分析具体的解决办法。

       出现不稳的情况大致分为三类:

       1.网速原因。如果访问一个网页,加载得很缓慢。但selenium脚本运行时如果某个元素未加载出来,可能就会导致脚本运行失败。这个时候如果在元素加载时设置等待时间,就可以避免这个问题。但等待时间+运行时间,则会大大减低执行效率。

       2.selenium版本问题。selenium1.0和selenium2.0使用还是有很大的区别。selenium2.0使用selenium1.0中的部分函数,就会有时有效,有时无效,比如:mouseover()函数,所以尽量避免

      3.多线程时(执行时无先后顺序),用例之间有相互关联的情况,即耦合性较高。如:用例A执行了后,用例B会有所影响。但反过来就不会。这个时候就应该降低用例之间的关联度,尽量避免这种情况。


Q6:你的自动化用例的执行策略是什么?

   一般会根据测试需求把自动化用例执行策略分为三种。

  1.定时执行。当测试用例是用于监控的时候。在jenkis建立一个定时任务,到时间执行就好。

   2.触发式执行。一般用于必须回归的测试用例。比如公司项目上,无论更改任何模块,都需要回归测试的测试用例。在jenkins上将我们的自动化测试任务绑定到开发的build任务上。当开发人员在测试环境上更新代码的时候,我们的自动化测试用例就会被触发执行。

   3.手动执行。一般用于不经常执行的测试用例,执行花费时间太多。比如:全量测试用例(覆盖项目上所有的测试用例)。所以这类测试用例我们就采用人工执行,在jenkins创建一个任务,需要执行的时候人工去构建即可。


Q7:什么是持续集成?

  持续集成是指开发阶段,对项目进行持续性自动化编译、测试,以达到控制代码质量的手段。持续集成是一种软件开发实践。 

  通俗来讲,就是当在开发阶段时,多个程序员每天都在不断的修改代码,测试需要获取新的程序进行测试。这个时候就需要集成的存在,把他们更新的代码获取到主干上。

 通过自动化构建来进行集成,检查集成时发生的错误,需要100%正确,才能集成成功。这可以避免程序员手动集成带来大量的问题。并且如果发现这个版本带来了不可避免的Bug,可以通过集成工具进行回退。

Q8:自动化测试的时候是不是需要连接数据库做数据校验?


Q9:id,name,clas,x path, css selector这些属性,你最偏爱哪一种,为什么?


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


Q11:如何去定位属性动态变化的元素?


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


Q13:webdriver client的原理是什么?


Q14:webdriver的协议是什么?


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


Q16:什么是page object设计模式?


Q17:什么是page factory设计模式?


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


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


Q20:什么是断言?


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


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


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


Q24:自动化测试用例从哪里来?


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


Q26:什么是分层测试?


Q27:webdriver可以用来做接口测试吗?


Q8:自动化测试的时候是不是需要连接数据库做数据校验?


Q9:id,name,clas,x path, css selector这些属性,你最偏爱哪一种,为什么?


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


Q11:如何去定位属性动态变化的元素?


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


Q13:webdriver client的原理是什么?


Q14:webdriver的协议是什么?


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


Q16:什么是page object设计模式?


Q17:什么是page factory设计模式?


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


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


Q20:什么是断言?


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


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


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


Q24:自动化测试用例从哪里来?


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


Q26:什么是分层测试?


Q27:webdriver可以用来做接口测试吗?
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值