自动化测试python面试题

八大元素定位方式

问题:有几种元素常用的定位方式,分别是什么?你最偏爱哪一种,为什么?

1、id定位:id是当前整个html页面中唯一的,所以可以通过id属性来定位元素,是首选的元素定位方式。

2、name定位:根据元素的name来定位属性,但name并不是唯一的。

3、class定位:使用元素的class属性定位,也是不能唯一定位到一个元素的。class属性值中有空格时,使用全部class属性值定位时,空格必须使用点代替;class属性值有空格时,可以以空格来分隔class属性值,可以使用分隔后的部分class属性值定位。

4、tag_name定位:tag_name是通过标签名称来定位的,如标签。标签名是会重复,默认返回的是第一个符合的元素。

5、link_text定位:link_text只能使用精准的匹配(标签的全部文本内容),必须根据链接上完整的文本内容去进行定位。

6、partial_link_text定位:可以使用精准或模糊匹配,如果使用模糊匹配最好能使用唯一的关键字;如果有多个值,默认返回第一个值。

7、xpath定位:

定位方式一(绝对路径)

定位方式二(相对路径)

定位方式三(路径结合属性):语法//input[@id='id值']。

定位方式四(文本内容匹配):语法//a[text()="新闻"],标签为a文本信息为“新闻”。

定位方式五(部分文本信息包含匹配):语法//a[contains(text(),"新")]或者//a[contains(text(),"闻")]。

定位方式六(路径结合逻辑):语法//标签名[@属性名=‘属性值’and@属性名=‘属性值’]。

定位方式七(通过父级定位子级元素):语法//标签名(或*)[@父级属性名=‘父级属性值’]/input.

定位方式八(直接复制法):通过手动定位到的标签,点击右键复制xpath元素,直接复制到代码里。

8、css选择器定位:使用元素层叠样式定位

 在css定位中,可以使用元素的任意属性定位元素。

 在css定位中可以在值的前面加点,表示在使用class属性值定位

在css定位中可以在值的前面加#,表示在使用id属性值定位

自动化等待

问题:自动化中有哪三类等待,他们有什么特点?

1)线程等待(强制等待)如time.sleep(2):线程强制休眠2秒钟,2秒过后,再执行后续的代码。建议少用。

2)imlicitlyWait(隐式等待)会在指定的时间范围内不断的查找元素,直到找到元素或超时,特点是必须等待整个页面加载完成。

3)WebDriverWait(显式等待)通常是我们自定义的一个函数代码,这段代码用来等待某个元素加载完成,再继续执行后续的代码。

python的垃圾回收机制

问题:python中的垃圾回收机制是什么?

在定义一个变量时,会申请内存空间,当该变量使用完毕,也应该释放掉该变量所占用的内存空间,Python则由垃圾回收机制进行回收。

无论何种垃圾回收机制,一般都分为两个阶段:垃圾检测和垃圾回收。

垃圾检测,就是区分已分配内存中的“可回收”和“不可回收”内存。

垃圾回收,则是使操作系统重新掌握垃圾检测阶段所标识出来的可回收内存块。

所谓垃圾回收,并不是直接把这块内存的数据直接清空了,而是将使用权重新交给了操作系统,不会应用程序霸占了。

什么是垃圾

1)当一个变量调用完毕,且后续不再需要时,便是垃圾。

2)当指向该变量地址的变量名指向另一个地址时,原变量内存地址无法被访问,此时该变量也是垃圾。

Python的垃圾回收机制主要基于引用计数和周期性垃圾收集器来处理循环引用。

引用计数

原理解释:

引用计数是Python的主要垃圾收集技术。每当Python对象被引用时,例如通过赋值操作,其引用计数就会增加。当对象的引用被删除或对象的作用域被销毁时,其引用计数就会减少。当引用计数达到0时,Python的垃圾收集器就会释放这块内存。

 举例说明

在Python中,每一个东西都是一个对象,包括整数、字符串、列表、函数等。当你在Python中创建一个对象,例如a = 10,实际上在内存中创建了一个数字对象10,然后有一个名为a的变量引用它。Python需要记住这个对象有多少个变量引用它,这就是引用计数。在这个例子中,10的引用计数为1。

如果再创建一个变量引用同一个对象,比如b = a,那么这个对象10的引用计数就变成2,因为它被两个变量a和b引用。当你删除一个引用(比如del a),引用计数就会减1。当引用计数变为0(也就是没有变量引用这个对象),Python的垃圾收集机制就会自动删除这个对象,释放内存。

周期性垃圾收集器

原理解释:

引用计数也有一个主要问题,那就是无法处理循环引用。循环引用发生在当两个或更多的对象相互引用,形成一个循环。这会导致它们的引用计数永远不会降为0,因此,引用计数机制不能释放它们。例如,如果两个对象a和b相互引用,即使没有其他对象引用它们,它们的引用计数也都为1,因此它们不会被Python的垃圾收集器回收。

 举例说明

如果有两个对象,它们互相引用对方,那么即使你删除了所有对它们的外部引用,它们的引用计数也永远不会是0,因为它们互相引用。这就是循环引用,这会导致内存泄漏,因为这些互相引用的对象无法被回收。

为了解决这个问题,Python还有一个周期性垃圾收集器。它的工作原理比较复杂,但简单来说,它会定期检查所有的对象,找出那些循环引用的对象,然后删除它们,即使它们的引用计数不为0。这样,Python就能回收循环引用的对象,防止内存泄漏。

po模式

问题:什么是po模式?

PO模式:Page Object,是一种页面对象设计模式,算是一种比较好的设计模式。在该设计模式中,功能类(PageObjects)所代表的是每个页面之间的逻辑关系。

是指把一个具体的页面转化为编程语言当中的一个对象,页面特性转化成对象属性,页面操作转化为对象方法。

PO模式有以下优点:

1、可以减少了代码的重复编写。

2、PO模式把页面元素定位和业务操作流程分开,界面元素的变化则不需要修改业务逻辑代码。

3、 PO能提高代码的可读性,高复用性,可维护性。

最后:下方这份完整的软件测试视频教程已经整理上传完成,需要的朋友们可以自行领取【保证100%免费】

软件测试面试文档

我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

图片

猜你喜欢

转载自blog.csdn.net/m0_67696270/article/details/132154981