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: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)]  
原文地址:https://www.cnblogs.com/zhaojiaxiaomei1/p/8873037.html