Xpath是通过绝对路径定位元素
Xpath定位元素
1.xml路径语言:用来确定XML文档中某部分位置的语言;
2.Xpath用于在XML文档中通过元素和属性进行导航
3.Xpath是一个W3C标准
4.将html看成树形结构
表达式 | 结果 | 说明 |
/xxx | 选取跟节点xxx | |
/xxx/yyy | 根据绝对路径选择元素yyy | |
//xxx | 整个文档扫描,找到所有xxx元素 | |
//xxx/yyy | 所有父元素为xxx的yyy元素 | |
. | 选取当前节点的父元素节点 | |
.. | 选取父元素地址 | |
//xxx[@id] | 选取所有xxx元素中有id属性的元素 | |
//xxx[@id=yyy] | 选取所有xxx元素id属性为yyy的元素 |
写一个html小例子便于练习test.html
<!DOCTYPE html> <html> <head> <title>selenium</title> </head> <body> <form> firstname <input type="text" name="firstname" id="f"> <br> lastname <input type="text" name="lastname" > </form> <br> <p> age <input type="text" name="age" id="a"> </p> </body> </html>
b.get(r'C:UsersasusDesktopsele est.html') #加载页面
inputs = b.find_elements_by_xpath('/html/body/form/input') #查找form下的input有两个
inputs.__len__() #2
>>> inputs[0].get_attribute('name')
'firstname'
>>> inputs[1].get_attribute('name')
'lastname'
inputs[0].send_keys('zhang')
inputs[1].send_keys('san')
看到界面
>>> inputs = b.find_elements_by_xpath('//input') #查找本页面的所有input标签
>>> inputs.__len__()
3
inputs[2].send_keys(30)#给张三输入年龄30
>>> inputs = b.find_elements_by_xpath('//input[@id]') #查找含有id属性的input
>>> inputs.__len__()
2
表达式 | 结果 |
//*[count(xxx)=2] | 统计xxx元素个数=2的节点 |
//*[local-name()='xxx'] | 找到tag为xxx的元素 |
//*[starts-with(loacal-name(),'x')] | 找到所有tag以x开头的元素 |
//*[contains(loacal-name(),'x')] | 找到所有tag包含x的元素 |
//*[string-length(loacal-name())=3] | 找到所有tag长度为3的元素 |
//xxx|//yyy | 多个路径查找 |
//[not(@id)] |