1 .你是怎么构建ui自动化框架的?
8 Q7 U9 c V9 G,~; 正在构建^# G ^(A$ ] )自动化框架。 使用了po设计模式。 也就是说,将各页所需内容
R' ^8 q2 o1 } `操作的所有元素和步骤都封装在一个页面类中。 然后使用selenium unitest构建,H. D8 z' T5 A. V
四层框架实现数据、脚本、业务逻辑的分离(关键字驱动)。 其中四层框架如下
(,g )! {: h4 b2 v基础层(BasePage )、业务逻辑层(Pages )、数据层(Data )、测试用例层(Testcase ) $ f8 J$ w2 { ); y5升
(x; s @8 {# t n(K6 Q e
- u- O. E z8 H' x' F
2 .在ui自动化测试中的定位有哪些,哪些是常用的? p5 M4 e0 JJ5 R0 F0 Q; ^,e y
byid'l(ug ) d*Q4F3Z0h
By Class Name% c; T. f: ^. K3 W- F1 X- b4 x
By Tag Name
8 ^! ]z/w5IA8h((xbyname#k/F7N7N3G0K! u 4米
By Link Text0 K* }6 C8 b* S,a
By Partial Link Textzhi {4 _3 }* U
By CSS Seletor# X' w' L. D7 [ b* L
By XPath
2 ` c5 P5 r. E' ^t; [/_/I]p.y! ~
/m7 n,g7 w6 {8 h' j: l1 i
% {S1 O' |! B4 J/e h3.UI自动化测试有哪些缺点? 怎么改善? 8ln ) 9b.[/R9z]B5K
不适合不稳定、页面频繁变动、定位差、业务复杂频繁变动的项目
/R0 d~8 k K4 j% B改进:项目中尽量使用标识等待' f2 A t,L0 b. E/v0 ] m' G0 i
1[-k-D0nD6]1(*e
请说明F-`.W4K-O6X/LF#J4.UI自动化运行中等待结构的差异? 3 px5 @# ~,t2 b2 w
sleep ) )强制等待,设置一定的休眠时间,sleep ) )后进行线程休眠
1 v. ]9 rq0 h x3 R% Y,其他两种线程不休眠
0 m8 I1 P' rJ0 p: E7 W7 [7 G# ^隐式等待是配置的全局等待' w$ G/7 G% M8 [3 R9 W' ~
显示待机时间。 为特定元素设定的等待时间
E5 j8 v. q/Y: L' |2 H5 `8 c% o-? /B2T({ (
: {/Q- o- J1 Q- o3 G7 a
5.PO设计模式的原理? 有哪些方面可以改善? % J#? % I! u; |
原理:
*? v$v; bPO模式、全名Page object和页面对象模型。
: @4 r- `1 y! u% s将页面上的元素放置和元素行为封装在一个page类中。 1p ) t%O2Q6Zs
实现页面对象与测试用例的分离。 0 Z3 B- _ h1 k* c ) {* q
改进:
5 {6 r$ L# U# Z# @! 在P: a中,对对象库层、逻辑层、业务层进行了一系列封装4(7m8_e'p8} )
#@'I9r$w2I/r(k#L4y: $ ' v: B* ],w! D* J
6.Unittest框架有什么缺点?
4c:ka(c4hcw、Q2 D1缺乏灵活性。 例如,在进行ui的自动化设计时,多次打开浏览器,将脚本的执行时间设定为2 u{' M! h; S1K3 ) :t
2测试报告不够,没有pytest的allure测试报告,鲜明美观0 ~. K1 D% y0 YE7 N2 D5 }
. z; f% b: a3 D4 E
0 D {z: H; {9 r7.Webdriver原理:f(oL; h* W1 y2 w; (- S8 F4 Z
客户端脚本(java、python、ruby )无法直接与浏览器通信,因此此时可以将web驱动程序用作翻译器。 它将客户端代码翻译为浏览器可以识别的代码(例如js )。 客户端) (即测试脚本)创建一个会话。 此会话通过http请求将请求发送到web驱动程序。 web驱动程序将翻译为浏览器,知道脚本并传递给浏览器,浏览器将执行的结果返回给web驱动程序。 web驱动程序可以对返回的结果进行一些封装(通常为json格式)并返回给客户端,然后根据返回值确定对浏览器的操作是否成功。 3 x! j2 sI*; w9 T9 P
2H9[H]M9T$S[9{
Q w4 r$ k* @' F{. n. G
8.selenium的隐藏或显示=none的元素是
2J1(5L; f; H7 D- R% [不能
4s/`7I*jI5[7z]t(w-gf/z0I6f ) b- V
6 I! r _3 G9 Z! | n' ~6 M
如何提高selenium脚本的运行速度? ' V4 aj0 |ut: N
1减少操作步骤,减少脚本用例中不必要的步骤
' Q5 C1 ^* Y ) j: {2设置等待时间时,为' Z5 G' f7 P5 i1 s7 b! 米
sleep一定的时间可以检测到某个要素的出现而中断等待
; q! 用e q,x$ [6 x/f' e加快速度
' OL7[-R'H:J(JY3实现多线程。 编写测试用例时,必须实现松散耦合,然后在服务允许的情况下,使用1 @ `! S4 I; I4 b-? 3360a0(y
尽量设置多线程执行,提高执行速度。
0 V# A3 b1 Q$ B Y% L; z KW8 V; @
# j' W9 R4 V/T' n9 E5 i3 h! o# ]
10 .如何实现多线程? 6 i1 j. i: Q,S1 e
首先写run的函数
: Sn0 E% q ]! |:G7BVfor循环运行的常规
8 Q ) d0 j1 C5 Ni在run函数中加上装饰器@threads(n ),n为线程数7 k m# M: U$ V* W0 N
、(I.b ) y ) b1rc * (: u.n9a * X6 )、x :至1 o9 ^/p8b # x8a
11.XPath的定位原理是什么?
* p i3 a! 基于m2 `9 I0 ~,y9@2h@html的文档目录结构的对准要素: ^: G$ J1 P6 B! s
N/B! R6 W* p6 L/[5 k/v
0 )0}如何在0 }3 G4 p* v5 n0 N7 ua% M12.selenium中判断元素一定存在? * { j2 R! q. h L ) h
Presense_of_element_located,[6 U ]0 @ ) [: z7 Y
0 G. Y% j5 j/i5 f
收集整理Java吧Java论坛www.java8.com吧