3.使用Xpath定位元素
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:\Users\asus\Desktop\sele\test.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)] |
浙公网安备 33010602011771号