作者:hacker发布时间:2022-07-15分类:黑客教程浏览:231评论:3
Selenium定位元素的方法有很多种,像是通过id、name、class_name、tag_name、link_text等等,但是这些方法局限性太大, 随着自动化测试的深入,和不同框架要求,会发现上面的定位方式无法解决一些元素定位。尤其对于这样一些元素:
1、没有id、name、class等属性;
2、标签的属性或文本信息特征没有或者不明显;
3、标签嵌套复杂,层次太多等。
所以这些方法了解一下即可,我们真正需要熟练掌握的是通过xpath和css定位,一般只要掌握一种就可以应对大部分定位工作了。
常用方法:通过ID、name、xpath等定位方式,实现对html标签元素的定位
定位页面元素有很多种方法。
1、通过元素的id属性来定位元素——id是唯一标识(每个id都是不一样的)。
2、通过元素的name属性来定位元素,name属性不是绝对唯一的(一个页面内可能存在多个元素的name属性是相同的)如果name属性的值wd是唯一的,用find_element_by_name定位元素,返回值是一个值,如果name属性的值wd不是唯一的,用find_elements_by_name定位元素,返回符合条件的多个值,保存在列表中,即返回的是列表。
3、通过元素的class属性来定位元素,class属性不是绝对唯一的(一个页面内可能存在多个元素的class属性是相同的),如果class属性的值s_ipt是唯一的,用find_element_by_class_name定位元素,返回值是一个值。如果class属性的值s_ipt不是唯一的,用find_elements_by_class_name定位元素,返回符合条件的多个值,保存在列表中,即返回的是列表。
4、通过元素的标签名tag来定位元素,标签名不是绝对唯一的(一个页面内可能存在多个相同的标签名),如果标签名是唯一的,用find_element_by_tag_name定位元素,返回值是一个值。如果标签名不是唯一的,用find_elements_by_tag_name定位元素,返回符合条件的多个值,保存在列表中,即返回的是列表。
相对定位和绝对定位
定位标签:position
包含属性:relative(相对)
absolute(绝对)
1.position:relative;
如果对一个元素进行相对定位,首先它将出现在它所在的位置上。然后通过设置垂直或水平位置,让这个元素"相对于"它的原始起点进行移动。(再一点,相对定位时,无论是否进行移动,元素仍然占据原来的空间。因此,移动元素会导致它覆盖其他框)
2.position:absolute;
表示绝对定位,位置将依据浏览器左上角开始计算。
绝对定位使元素脱离文档流,因此不占据空间。普通文档流中元素的布局就像绝对定位的元素不存在时一样。(因为绝对定位的框与文档流无关,所以它们可以覆盖页面上的其他元素并可以通过z-index来控制它层级次序。z-index的值越高,它显示的越在上层。)
3.父容器使用相对定位,子元素使用绝对定位后,这样子元素的位置不再相对于浏览器左上角,而是相对于父窗口左上角。
4.相对定位和绝对定位需要配合top、right、bottom、left使用来定位具体位置,这四个属性只有在该元素使用定位后才生效,其它情况下无效。另外这四个属性同时只能使用相邻的两个,不能即使用上又使用下,或即使用左,又使用右。
标签:定位元素标签
已有3位网友发表了看法:
访客 评论于 2022-07-15 12:54:38 回复
bsolute;表示绝对定位,位置将依据浏览器左上角开始计算。绝对定位使元素脱离文档流,因此不占据空间。普通文档流中元素的布局就像绝对定位的元素不存在时一样。(因为绝对定位的框与文档流无关,所以它们可以覆盖页面上的其他元素并可以通过z-index来控制
访客 评论于 2022-07-15 17:52:02 回复
多种,像是通过id、name、class_name、tag_name、link_text等等,但是这些方法局限性太大, 随着自动化测试的深入,和不同框架要求,会发现上面的定位方式无法解决一些元素定位。尤其对于这样一些元素:1、没有id、name、class等
访客 评论于 2022-07-15 12:50:19 回复
些元素:1、没有id、name、class等属性;2、标签的属性或文本信息特征没有或者不明显;3、标签嵌套复杂,层次太多等。所以这些方法了解一下即可,我们真正需要熟练掌握的是通过xpath和css定位,一般只要掌握一种就可以应对大部分定