我们一生之中,要牢记和要忘记的东西一样多。其实人生最好的贵人,就是不断努力的自己!靠自己,最踏实!假期很短暂,快乐却无边,工作很苦闷,赚钱最重要,陶醉在假期的快乐中,奋斗在工作的战线中,苦中寻乐一点甜,快乐与你长相伴。
chrome 右键有copy xpath地址
但是有些时候获取的可能不对
可以自己用代码验证一下
如果还是不行 可以考虑从源码当中取出来
趁热打铁,使用前一篇文章中 XPath 节点来定位HTML 页面。
HTML文件如下(您可以将其拷贝,保存成html文件,跟我笔者实验):
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Storm</title> </head> <body> <h1 id="h1" name="hname" class="cname">这是一个h1标签</h1> <form> 文本域1:<input type="text" name="first_name"> <br> 文本域2:<input type="text" name="last_name"> </form> <form> 密码字段:<input type="password" name="password"> </form> <form> 单选按钮1: <input type="radio" name="radio1" value="nan">male <input type="radio" name="radio1" value="nv">female </form> <form> 宠物: <input type="checkbox" name="cw">猫 <input type="checkbox" name="cw">狗 <input type="checkbox" name="cw">兔子 </form> </body> </html>
1、节点
上面的HTML文件,<html> 为根节点,他有个lang的属性,他有两个子节点<head>和<body>。
2、选取节点实验
(1)/,从根节点选取
下面的代码从根节点开始选取所有的html元素(这里只有一个),打印tag name,就是html
from selenium import webdriver driver = webdriver.Chrome() driver.get(r'file:///E:\python\test1\day1\test0.html') eles = driver.find_elements_by_xpath('/html') for ele in eles: print(ele.tag_name) driver.quit()
运行结果
C:\Python36\python.exe E:/python/test1/day1/test9.py html Process finished with exit code 0
(2)//,从目标节点下选取
下面的xpath,意思就是我要去找head,找到就保存到eles里面,不一定需要在根目录下面找
from selenium import webdriver driver = webdriver.Chrome() driver.get(r'file:///E:\python\test1\day1\test0.html') eles = driver.find_elements_by_xpath('//head') for ele in eles: print(ele.tag_name) driver.quit()
运行结果:
C:\Python36\python.exe E:/python/test1/day1/test9.py head Process finished with exit code 0
如果我换成下面的xpath,结果会如何呢?
from selenium import webdriver driver = webdriver.Chrome() driver.get(r'file:///E:\python\test1\day1\test0.html') eles = driver.find_elements_by_xpath('/head') for ele in eles: print(ele.tag_name) driver.quit()
从根节点选取head元素,跟节点不是head元素,所以找不到,打印为空
(3). ,选取当前节点;.. ,选取父节点
下面的xpath,第一个,匹配到head元素,然后分配找head当前节点(就是head);head父节点(是html)
from selenium import webdriver driver = webdriver.Chrome() driver.get(r'file:///E:\python\test1\day1\test0.html') eles2 = driver.find_elements_by_xpath('//head/.') eles3 = driver.find_elements_by_xpath('//head/..') for ele in eles2: print(ele.tag_name) for ele in eles3: print(ele.tag_name) driver.quit()
运行结果:
C:\Python36\python.exe E:/python/test1/day1/test9.py head html Process finished with exit code 0
(4)@ 选取属性
下面xpath为,匹配任意元素,其有个属性charset,值为UTF-8。
from selenium import webdriver driver = webdriver.Chrome() driver.get(r'file:///E:\python\test1\day1\test0.html') eles3 = driver.find_elements_by_xpath('//*[@charset="UTF-8"]') for ele in eles3: print(ele.tag_name) driver.quit()
运行结果为: