selenium的元素定位
针对元素有哪些常见的简单操作:
1、点击
2、输入内容、清除内容
3、返回元素尺寸、坐标
4、获取元素标签文本
5、获取元素属性值
6、检查元素:是否可见、是否可点击、是否已被选择
7、表单提交
针对元素进行简单的操作之前,要先定位元素,如下为几种元素定位方法:
1、ID 定位
find_element_by_id()
2、name 定位
find_element_by_name()
3、class name 定位
find_element_by_class_name()
4、tag name 定位
find_element_by_tag_name()
5、link_text 定位
find_element_by_link_text()
6、partial_link_text定位
find_element_by_partial_link_text()
7、xpath 定位
find_element_by_xpath()
1)绝对路径定位
使用标签名的层级关系来定位元素的绝对路径,从最外层的 html 到 body 到 div ...,这样一级一级往下找;如果同一个层级中有多个相同的标签名,就按上下顺序来确定是第几个,如:/html/body/div/div[2]/form,div[2]表示当前层级下的第二个div标签
2)利用元素属性定位
使用相对路径定位 + 元素的属性值定位,xpath定位不局限于id,class, name属性值,还有其它的能唯一标识的元素,如:
find_element_by_xpath( ‘//input[@id='kw']’ )
find_element_by_xpath(‘//*[@name='wd]’)
find_element_by_xpath('//input[@type='submit]') # type属性值是可以唯一标识的,故可用于定位
3)层级与属性结合
当一个元素本身没有可以唯一标识的属性值,可以查询上一级元素
find_element_by_xpath(‘//form[@id='form]/input’)
4)使用逻辑运算符
使用逻辑运算符连接多个属性来确定唯一标识元素
find_element_by_xpath(‘//input[@id='kw' and @class='s_ipt]’)
5)使用contains方法
contains()方法是匹配一个属性中包含的字符串,如:
find_element_by_xpath(‘//span[contains(@class,'s_ipt)]’)
find_element_by_xpath('//span[contains(text(), '新闻')]')
6)使用text()方法
find_element_by_xpath(‘//a[text(),''新闻]’)
7、css 定位
find_element_by_css_selector()
CSS是一种语言,用来描述HTML和XML文档的表现。CSS使用选择器为页面元素绑定属性,CSS定位速度比XPATH定位速度快,因为css是xml文档,xpath是HTML文档,以下为css选择器常见语法:

1)通过class定位
find_element_by_css_selector('.class')
2)通过id定位
find_element_by_css_selector(‘#id’)
3)通过标签名定位
find_element_by_css_selector(‘input’)
4)通过标签层级关系定位
find_element_by_css_selector(‘input>span’)
5)通过属性定位
find_element_by_css_selector(‘[name='kw']’)
6)通过组合定位
把以上的几种定位方法组合起来应用,就更容易定位到元素的唯一性
find_element_by_css_selector(‘form.fm > span > input#kw’)
7)其它定位方法
查找class属性包含‘s_ipt_wr’字符串的元素
find_element_by_css_selector(‘[class*=s_ipt_wr]’)
查找class属性以‘bg’开头的元素
find_element_by_css_selector(‘class^='bg'’)
查找class属性以‘warp’字符串结尾的元素
find_element_by_css_selector(‘class$='warp'’)
查找from标签下面第2个input标签的元素
find_element_by_css_selector(‘form > input:nth-child(2)’)
8)更多的css定位方法可以查看W3CSchool网站中的css选择器参考手册((http://www.w3school.com.cn/cssref/css_selectors.asp)
By定位元素
除了前面的8大元素定位方法之外,WebDriver还提供了另外一种写法,即统一调用find_element()方法,通过By来声明定位,并且传入对应定位方法的定位参数
find_element(By.ID, 'kw')
find_element(By.NAME, 'wd')
find_element(By.CLASS_NAME, 's_ipt')
find_element(By.TAG_NAME, 'input')
find_element(By.LINK_TEXT, '新闻')
find_element(By.PARTIAL_LINK_TEXT, '新')
find_element(By.XPATH, '//a[@class='bg_s_btn']')
find_element(By.CSS_SELECTOR, '#su')

浙公网安备 33010602011771号