web自动化测试--元素定位

 (一)基础的定位方法

1.通过元素的属性,如

idfind_element_by_id("kw")
name ,find_element_by_name("wd")
class_name - 只支持一个class值    ,find_element_by_class_name("s_ipt") 
tag_name  ,find_element_by_tag_name("input")
只针对a元素:
link_text, find_element_by_link_text("地图")
partial_link_text ,find_elements_by_partial_link_text("hao")

(二)多个属性组合来找元素或者通过其它的关系来找元素

1.xpath定位,简单方法,浏览器F12中,右键copy--copy xpath。但是copy下来的定位,可能每次的表达式不一样

建议用相对定位,以//开头

(1)//标签名称[@属性=值],如://i[@class="ing"],//*[@*="ing"]

(2)如果找出来两个一样的元素,在通过上级来锁定二层//,表示一级一级的去找。具体用法://一级元素//二级元素 

注意:/表示查找的是父子关系,一般用//表示没有限制只是父子关系

(3)文本匹配://*[text()=值] ,//*[text()="百度首页"]

(4)包含//标签名[contains(@属性,"值")] 或者//标签名[contains(text(),"值")] 

(5)逻辑运算匹配 //标签名[@属性值=值 and/or @属性值=值]

(6)轴定位轴定位,通过关系来定位,注意要用/,因为需要限制下只是父子关系

已知元素/轴名称::标签名称[@属性=值]   

已知元素/轴名称::*没有限制某个标签

已知元素定位,可以用前面的定位方式

轴名称:
        ancestor:祖先结点 包括父
        parent:父结点   给g
        preceding: 当前元素节点标签之前的所有结点。(html页面先后顺序)
        preceding-sibling: 当前元素节点标签之前的所有兄弟结点
        following: 当前元素节点标签之后的所有结点。(html页面先后顺序)
        following-sibling:当前元素节点标签之后的所有兄弟结点
 
例子://p[@title="值"]/preceding-sibling::p[@class="stuno"]

 find_element_by_xpath('表达式')

element = driver.find_element(By.XPATH,'表达式'),默认取第一个

find_elements()

 2.css_selector css选择器定位

find_element_by_css_selector('input#kw.s_ipt')

ps:如果有些元素需要点击才会出现就不好定位,可以采用点击后,在右键审查/检查元素

原文地址:https://www.cnblogs.com/hherbk/p/14605435.html