常熟制作网站的地方,域名服务器的四种类型,东莞软件定制,微信如何创建自己的小程序1.selenium中如何判断元素是否存在?
find_elements查找到的元素个数为0#xff0c;find_element报错意味着元素不存在
2.如何判断元素是否出现?
判断元素是否出现#xff0c;存在两种情况#xff0c;一种是该元素压根就没有#xff0c;自然不会出现;另外一种是有这样的…1.selenium中如何判断元素是否存在?
find_elements查找到的元素个数为0find_element报错意味着元素不存在
2.如何判断元素是否出现?
判断元素是否出现存在两种情况一种是该元素压根就没有自然不会出现;另外一种是有这样的元素但是是hidden状态
可以通过先判断是否存在如果不存在返回false;如果存在再去判断是否displayed。
3.selenium中hidden或者是display none的元素是否可以定位到?
可以定位无法进行交互操作
4.selenium中如何保证操作元素的成功率?也就是说如何保证我点击的元素一定是可以点击的? 添加元素智能等待时间 driver.implicitly_wait(30) 通过显式等待避免由于元素属性变化引起的失败 Selenium保证元素成功率是通过元素的定位当然它的定位方法很多一定能有合适的。但是在自动化工程的实施过程中高质量的自动化测试不是只有测试人员保证的。需要开发人员规范开发习惯如给页面元素加上唯一的name,id等这样就能大大地提高元素定位的准确性。当然如果开发人员开发不规范我们在定位元素的时候尽量使用相对地址定位这样能减少元素定位受页面变化的影响。只要我们元素定位准确就能保证我的每一个操作符合我的预期
5.如何提高selenium脚本的执行速度?
Selenium脚本的执行速度受多方面因素的影响如网速操作步骤的繁琐程度页面加载的速度以及我们在脚本中设置的等待时间运行脚本的线程数等。所以不能单方面追求运行速度的要确保稳定性能稳定地实现回归测试才是关键。
我们可以从以下几个方面来提高速度
一减少操作步骤如经过三四步才能打开我们要测试的页面的话我们就可以直接通过网址来打开减少不必要的操作。
二中断页面加载如果页面加载的内容过多我们可以查看一下加载慢的原因如果加载的内容不影响我们测试就设置超时时间中断页面加载。
三在设置等待时间的时候可以sleep固定的时间也可以检测某个元素出现后中断等待也可以提高速度。
四配置testNG实现多线程。在编写测试用例的时候一定要实现松耦合然后在服务器允许的情况下尽量设置多线程运行提高执行速度。
6.用例在运行过程中经常会出现不稳定的情况比如这次运行成功下次可能运行失败如何去提升用例的稳定性?
此时我们要分析出不稳定的原因然后有针对性的去解决问题。主要有以下几个方面
一网速问题有的时候网页加载的比较慢在程序执行的时候要操作的元素没有显示出来。这种情况比较常见运行一次网速好的时候通过了再运行一次页面没有打开就不通过了。为了提高稳定性我们只能牺牲运行时间了在经常检测失败的元素前加上等待时间等要操作的元素出现之后再执行下面的操作。
二Selelnium的原因selenium版本差异或当前Selenium版本缺陷导致如果是版本差异导致可能需要更新代码如果是。
三多线程的时候测试用例间相互影响。虽然多线程的时候运行速度比较快但是如果用例之间的耦合性没有设计好也会影响的如果用例A先于用例B执行的时 候就会影响到用例B;反之则没有问题。这种情况如果你的自动化测试工程打算多线程的时候提前就要把测试用例测试的耦合度比较松尽量没有任何关系因为多线程的执行顺序是不受控制的。
7.id,name,class,xpath, css selector这些属性你最偏爱哪一种为什么?
css 、xpath 几乎所有的元素都可以定位到
8.如何去定位页面上动态加载的元素?
通过显式等待等待动态元素出现而后马上进行操作
9.如何去定位属性动态变化的元素?
xpath或者css通过同级、父级、子级进行定位
10.点击链接以后selenium是否会自动等待该页面加载完毕?
会的
11.你的自动化用例的执行策略是什么?
1.自动化测试用例是用来监控的。集成到jenkins创建定时任务定时执行;
2.有些用例在产品上线前必须回归。jenkins上将任务绑定到开发的build任务上触发执行;
3.有些用例不需要经常执行。jenkins创建一个任务需要执行的时候人工构建即可。
12.webdriver client的原理是什么?
webdriver是按照server – client的经典设计模式设计的。以火狐浏览器为例
当测试脚本启动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步还是结束脚本;
13.webdriver的协议是什么?
The WebDriver Wire Protocol
14.启动浏览器的时候用到的是哪个webdriver协议?
http
15.怎样去选择一个下拉框中的valuexx的option?
二次定位或者通过xpath直接根据value值定位
16.如何在定位元素后高亮元素(以调试为目的)?
通过JS重置元素属性给定位的元素加背景、边框然后在selenium中执行该JS语句
17.如果你进行自动化测试方案的选型你会选择哪种语言javajspython还是ruby?
使用自己熟悉的语言倾向于python
18.page object设置模式中是否需要在page里定位的方法中加上断言?
-不需要断言语句一般放在测试类中页面类主要管理页面元素与操作
19.page object设计模式中如何实现页面的跳转?
get方法跳转、click超链接实现页面跳转;
20.webdriver可以用来做接口测试吗?
不可以