首页 文章详情

叮咚,UI自动化测试面试题分享!

ITester软件测试小栈 | 582 2021-07-28 06:28 0 0 0
UniSMS (合一短信)
VOL 272

22

2021-07

今天距2022年161天

这是ITester软件测试小栈第272次推文

点击上方蓝字“ITester软件测试小栈“关注我,每周一五早上 08:30准时推送,每月不定期赠送技术书籍


微信公众号后台回复“资源测试工具包”领取测试资源,回复“微信交流群”、“内推群”一起进群打怪。


本文4521字,阅读约需7分钟






Hi,大家好。今天给大家分享一波UI自动化面试题,如果想要获取更多面试题,可以在后台回复“面试顺利”。


Python基础考察

1

Python中的可变类型和不可变类型都有哪些?

1) 可变数据类型与不可变数据类型区别

不可变数据类型:当该数据类型的对应变量的值发生了改变,那么它对应的内存地址也会发生改变,对于这种数据类型,就称不可变数据类型。


可变数据类型:当该数据类型的对应变量的值发生了改变,那么它对应的内存地址不发生改变,对于这种数据类型,就称可变数据类型。


2)python中的可变数据类型与不可变数据类型

python可变数据类型包括:字典、列表、集合;

python不可变数据类型包括:元组、字符串、数字;


3)实例

接下来我们就用列表和字符串来证实上面的定义。


① 列表实例:


输出结果如下:

['公众号''ITester软件测试小栈'] 3015290906944
['公众号''ITester软件测试小栈''coco'] 3015290906944

从结果可以看出,列表添加值前后的内存地址未发生变化,所以列表属于可变类型。


② 字符串实例:


输出结果如下:

ITester 2159488347184
ITester软件测试小栈 2159483796656

从结果可以看出,字符串值变化前后内存地址发生了变化,所以列表属不于可变类型。



2

Python中的intern机制,你有了解过吗?


1)intern机制概念

所谓的 intern 机制,就是在程序运行过程中创建新的字符串的时候,首先根据这个字符串,驻留池里面查找是否这个字符串,在这个驻留池里面已经创建了;


如果有的话就已经直接拿过来用,如果没有的话就在重新创建;创建之后如果是一个纯单词字符的话,会加入到这个驻留池当中,这样的一个机制,能够避免频繁的创建和销毁;


2)intern机制实例

值同样的字符串对象仅仅会保存一份,是共用的,这也决定了字符串必须是不可变对象。


输出结果如下:

ITester软件测试小栈 1768497265840
ITester软件测试小栈 1768497265840

我们发现值相同的字符串经过 intern 机制处理之后,返回的都是同一个字符串对象,这种方式在处理大数据的时候无疑能节省更多的内存空间,系统无需为相同的字符串重复分配内存,对于值相同的字符串共用一个对象即可。


3

Python 中 *args 和 **kwargs 的作用?

1)*args 和 **kwargs概念
在Python源码中,我们有时发现函数的参数里有*argds,**kwargs这两个参数,那它们分别代表啥意思呢?

args 是 arguments 的缩写,表示位置参数,kwargs 是 keyword arguments 的缩写,表示关键字参数。

这其实就是 Python 中可变参数的两种形式,并且 *args 必须放在 **kwargs 的前面,因为位置参数在关键字参数的前面。


2)*args 和 **kwargs实例


输出结果如下:

args= ('ITester''软件测试小栈')
kwargs= {'name''coco'}

*args能够接收不定量的非关键字参数,会把位置参数转化为tuple

**kwargs允许你传递不定量个关键字参数。如果你需要在函数中定义不定量个命名参数,那么你就要使用**kwargs了,它会把关键字参数转化为dict(键值对参数组)。




4

Python 中 with 操作文件为什么不用手动关闭,原理是什么?


1)上下文管理器概念

Python 中的 with 关键字,它是用来启动一个对象的上下文管理器的;

他的原理是:当我们使用 with 去通过 open 打开文件的时候,它会触发文件对象的上下文管理器,然后当 with 当中的代码运行结束后,会自动去调用上下文管理器的退出方法,在这个方法中他会去调用 close 来关闭文件,所以不需要我们手动去关闭文件。


2)上下文管理器实例

① 不用上下文管理器实例

Python 程序打开一个文件后,往文件中写内容,写完之后,就要关闭该文件,否则会出现什么情况呢?极端情况下会出现 "Too many open files" 的错误,因为系统允许你打开的最大文件数量是有限的。


举个实例:


当然处理这种我们可以使用try捕捉异常处理,finally关闭文件,代码如下:


上面的处理方式稍微繁琐,我们要拿出更简洁的with上下文管理器。

② 使用上下文管理器实例



3)自定义上下文管理器


任何实现(重写)了 __enter__() 和 __exit__() 方法的对象都可称之为上下文管理器。

__enter__():进入上下文管理器自动调用的方法,该方法会在 with as 代码块执行之前执行;

__exit__():退出上下文管理器自动调用的方法。

"""
@Author:公众号:ITester软件测试小栈
@Time : 2021/7/21 18:41
"
""
class FileOpen(object):

    def __init__(self, filename, mode):
        self.filename = filename
        self.mode = mode

    def __enter__(self):
        print("entering")
        self.f = open(self.filename, self.mode)
        return self.f

    def __exit__(self, *args):
        print("will exit")
        self.f.close()

if __name__ == '__main__':
    with FileOpen("ITester.txt""w") as f:
        f.write("ITester软件测试小栈")


输出结果如下:

entering
will exit




UI自动化测试


1

什么是Xpath?

1)Xpath概念
xpath是一种在XML文档中定位元素的语言。因为HTML可以看做XML的一种实现,所以selenium用户可以使用这种强大语言在web应用中定位元素,xpath是一种路径定位的方式。

2)Xpath语法

XPath 的基本形式如下:

3)selenium中如何使用Xpath定位

① 基本的 XPath
Xpath=//input[@name='coco']

② contains
Xpath=//*[contains(@name,'btn')]

③ 使用 OR & AND
Xpath=//*[@type='submit' or @name='coco']

④ starts-with
Xpath=//div[starts-with(@name, 'ITester软件测试小栈')]

⑤ text
Xpath=//input[text()='ITester软件测试小栈']


⑥ 轴方法

Xpath=//*[@type='text']//following::input


篇幅太长,影响阅读体验,这里就不一一列举实例了,有兴趣的小伙伴自己扩展学习。




2

最熟悉的Selenium操作?


基本上 selenium 提供的一下几大类操作都能够灵活使用,比如说:

八大元素定位方式;

三大等待方式;

用户点击、输入等常见操作;

窗口切换、iframe 切换操作;

鼠标、键盘操作;

js定位;



3

PO模式封装原则有哪些?

Selenium 在官方的 wiki 上面给我们提供了六个原则,实际测试过程中可以这么理解:


第一个原则是,公共方法表示页面提供的一个服务,比如我们可以把 登录封装成一个 login的方法,把搜索方法封装成一个search方法,把注册操作封装成一个 register 的方法;


第二个原则是,尽量不要暴露页面的内部;比如说一个HTML的页面还有一个页面的上下结构;


第三个原则是,在 PO 当中一般不做断言,会做到页面逻辑和测试逻辑的分离;


第四个原则是,PO 一般里面的方法返回 self 或者是其他的 Page Object 也可以是一个元素属性;


第五个原则是,整个 PO 你不需要封装整个页面的行为,用到什么逻辑就封装什么;


第六个原则是,对于统一操作,如果出现不同的结果,可以把用不同的方法来表示,比如说登录成功有跳转,登录失败有报错;


如果登录还有一种会授权的状况,那么可以封装成三个单独的方法:login success、login error、login invalid。



4

UI自动化中常用的等待方式?

1)等待三种方式
UI 自动化测试当中等待的方式 主要有三种:


第一种,强制等待,一般情况下我们不太使用;主要在调试代码时使用。


第二种,隐式等待:设置了一个最长等待时间,如果在规定时间内网页加载完成,则执行下一步,否则一直等到时间结束,然后执行下一步。隐式等待对整个driver周期都起作用,在最开始设置一次就可以了


第三种,显示等待:是 selenium 当中比较灵活的一种等待方式,是项目中最常用的等待方式。在指定的时间范围内,等待到符合/不符合某个条件为止。


2)等待实例

由于第三种在项目中使用较多,实例就用显示等待的方式编写脚本。



5

Selenium自动化如何进行文件上传?

进行web自动化的时候,文件上传是很常见的操作,例如上传用户头像,上传身份证信息等。

在selenium中,文件上传可以分为两种场景:

  • input标签:这种可以用selenium提供的send_keys()方法轻松解决;

  • 非input标签:实现起来比较困难,可以借助第三方库pypiwin32。


关于Selenium文件上传的文章公众号之前有写过,传送门:Selenium自动化测试-文件上传,有兴趣的可以阅读。



以上

That‘s all
更多系列文章
敬请期待



ITester软件测试小栈(ID:ITestingA),专注于软件测试技术和宝藏干货分享,每周准时更新原创技术文章,每月不定期赠送技术书籍,愿我们在更高处相逢。喜欢记得星标⭐我,每周及时获得最新推送,第三方转载请注明出处


ITester软件测试小栈
往期内容宠幸


1.Python接口自动化-接口基础(一)

2.Python接口自动化-接口基础(二)


3.Python接口自动化-requests模块之get请求


4.Python接口自动化-requests模块之post请求

5.Python接口自动化之cookie、session应用


6.Python接口自动化之Token详解及应用


7.Python接口自动化之requests请求封装


8.Python接口自动化之pymysql数据库操作


9.Python接口自动化之logging日志


10.Python接口自动化之logging封装及实战

想获取更多最新干货内容
快来星标 置顶 关注
每周一、三、五 08:30见

<<  向右滑动查看下一张图片  >>

 后台 回复"资源"取干货
回复"微信群"一起打怪升级

个人微信:Cc2015123

添加请注明来意 :)


真爱四连,BiuBiuBiu~


good-icon 0
favorite-icon 0
收藏
回复数量: 0
    暂无评论~~
    Ctrl+Enter