概述
1.你是如何搭建ui自动化框架的?
8 Q7 U9 c& V9 G, ~; ^# G+ ^( A$ ]在搭建ui自动化框架,使用的是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 L
( x; s+ @8 {# t& n( K6 Q& e
- u- O. E& z8 H' x' F
2.UI自动化测试中定位方式有哪些,哪些是你常用的?. p5 M4 e0 J J5 R0 F0 Q; ^, e& y
By ID" l( u+ g( d* q4 F3 Z0 H
By Class Name% c; T. f: ^. K3 W- F1 X- b4 x
By Tag Name
8 ^! ]) z/ w5 i+ a8 H( [" XBy Name# K/ F7 N7 n3 G0 k! u4 m
By Link Text0 K* }6 C8 b* S, A
By Partial Link Textzhi+ {4 _3 }* U) T
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自动化测试有哪些缺点?如何改进?, ?8 l N& ]9 B. [/ r9 z) b5 K
不稳定,页面经常变,不好定位,不适合业务复杂和频繁变动的项目
/ R0 d ~8 k+ K4 j% B改进:在项目中尽量使用显示等待' f2 A& t, L0 b. E/ v0 ]+ m' G0 i
1 [- K- d0 N+ d6 ]1 * e
f- `. W4 k- O6 X/ l& F# J4.请你描述一下在UI自动化运用的等待机制区别?3 p x5 @# ~, t2 b2 w
sleep()强制等待,设置固定休眠时间,执行sleep()后线程休眠
1 v. ]9 r q0 h+ x3 R% Y而另外两种线程不休眠
0 m8 I1 P' r J0 p: E7 W7 [7 G# ^隐式等待,是设置的全局等待" w$ G/ 7 G% M8 [3 R9 W' ~
显示等待,是针对于某个特定的元素设置的等待时间
& E5 j8 v. q/ Y: L" |2 H5 `8 c% o- ?/ B2 t( {
: {/ Q- o- J1 Q- o3 G7 a
5.PO设计模式的原理?哪些地方能够改善?% J# ?% I! u; |
原理:
* ? ?0 v$ v; ; bPO模式,全称 Page object ,页面对象模型。
: @4 r- `1 y! u% s将页面的元素定位和元素行为封装成一个 page 类。1 P( t% o2 q6 Z+ s
实现页面对象和测试用例分离。0 Z3 B- _+ h1 k* c) {* q
改善:
5 {6 r$ L# U# Z# @! P: a其中对对象库层、逻辑层、业务层进行了一系列封装4 ]7 M8 _+ e' p8 }
# @' I9 R$ w2 I/ R( k# l4 y: ?$ " v: B* ], w! D* J
6.Unittest框架有什么缺点?
4 c: k+ A( c4 H+ C+ w, Q2 D1 不够灵活,比如进行 ui 自动化设计时,会多次打开浏览器,增加脚本运行时间2 u {" M! h; S1 k3 ]: t
2 测试报告不够全面,没有 pytest 的 allure 测试报告清晰美观0 ~. K1 D% y0 Y E7 N2 D5 }
. z; f% b: a3 D4 E
0 D+ { z: H; {9 r7.Webdriver的原理: f( O& l; h* W1 y2 w; - S8 F4 Z
由于客户端脚本(java, python, ruby)不能直接与浏览器通信,这时候可以把Webdriver 当做一个翻译器,它可以把客户端代码翻译成浏览器可以识别的代码(比如js).客户端(也就是测试脚本)创建 1 个 session,在该 session 中通过 http 请求向Webdriver 发送请求,Webdriver 翻译成浏览器懂得脚本传给浏览器,浏览器把执行的结果返回给 Webdriver,Webdriver 把返回的结果做了一些封装(一般都是 json 格式),然后返回给客户端,根据返回值就能判断对浏览器的操作是不是执行成功。3 x! j2 s I* `; w9 T9 P
2 H9 [& H) M9 T$ s& [9 {
& Q& w4 r$ k* @' F {. n. G
8.selenium 中 hidden 或者是 display = none 的元素是否可以定位到?
2 J1 5 L; F; H7 D- R% [不能
4 s/ `7 I* j& I5 [7 & z) t( W- G& f/ Z0 i6 F) b- V
6 I! r& _3 G9 Z! |& n" ~6 M
9.如何提高 selenium 脚本的执行速度?" V4 a j0 | u t: N
1减少操作步骤,减少脚本用例不必要的步骤
' Q5 C1 ^* Y) j: {2设置等待时间的时候,可以' Z5 G' f7 P5 i1 s7 b! M
sleep 固定的时间,也可以检测某个元素出现后中断等待也可
; q! e+ q, x$ [6 x/ f' e以提高速度
" o& L7 [- R' H: j( j y3实现多线程。在编写测试用例的时候,一定要实现松耦合,然后在服务器允许的情况下,1 @& `! S4 I; I4 b- ?: A0 ' Y
尽量设置多线程运行,提高执行速度。
0 V# A3 b1 Q$ B& Y% L; z& K W8 V; @
# j" W9 R4 V/ T' n9 E5 i3 h! o# ]
10.如何实现多线程?6 i1 j. i: Q, S1 e
先写一个run的函数
: S n0 E% q& ]! |: g7 B& v保证for循环能跑的通
8 Q) d0 j1 C5 N i在run函数上加个装饰器 @threads(n),n是线程数7 k& m# M: U$ V* W0 N
, i. B( Y) b1 r& c* {: u. N9 A* X6 }, x: ~1 O9 ^/ P8 B# X8 A
11.说一下XPATH定位的原理?
* p& i3 a! m2 `9 I0 ~, Y9 @2 H @基于HTML的文档目录结构进行定位元素: ^: G$ J1 P6 B! s
N/ B! R6 W* p6 L/ [5 k/ v
0 }3 G4 p* v5 n0 N7 u a% M12.selenium中如何判断元素一定存在?* {& j2 R! q. h& L) H
Presense_of_element_located, [6 U+ ]0 @) [: z7 Y) h
0 G. Y% j5 j/ i5 f
Java吧 收集整理 java论坛 www.java8.com
最后
以上就是发嗲舞蹈为你收集整理的python ui自动化面试题_UI自动化面试题的全部内容,希望文章能够帮你解决python ui自动化面试题_UI自动化面试题所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复