python ui自动化面试题_UI自动化面试题

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

表情包
插入表情
评论将由博主筛选后显示,对所有人可见 | 还能输入1000个字符
相关推荐
©️2020 CSDN 皮肤主题: 数字20 设计师:CSDN官方博客 返回首页