ID = "id"
XPATH = "xpath"
LINK_TEXT = "link text"
PARTIAL_LINK_TEXT = "partial link text"
NAME = "name"
TAG_NAME = "tag name"
CLASS_NAME = "class name"
CSS_SELECTOR = "css selector"
# 查找节点 find_element 只会返回第一个满足条件的标签
# 1. 根据id属性的值进行查找,在web中,id是唯一的,因此如果有id,优先使用
tag_id = driver.find_element(By.ID,'id属性的值')
# 2. 根据name属性的值进行查找
driver.find_element(By.NAME,'name属性的值')
# 3. 根据class属性的值进行查找
# 如果class属性的值有多个(值中间有空格的),需要将空格换成点(.)
driver.find_element(By.CLASS_NAME,'class属性的值')
# 4. 根据标签名进行查找
driver.find_element(By.TAG_NAME,'标签名')
# 5. 根据链接的文本(完全匹配)进行查找,只针对a标签
driver.find_element(By.LINK_TEXT,'a标签的文本')
# 6. 根据链接的文本(可以部分匹配)进行查找,只针对a标签
driver.find_element(By.PARTIAL_LINK_TEXT,'a标签的文本,可以是部分')
CSS_SELECTOR
# ID、NAME、TAG_NAME、CLASS_NAME 本质上都是CSS_SELECTOR
# CSS_SELECTOR
# 1. 查找拥有name属性的标签
driver.find_element(By.CSS_SELECTOR,'[name]')
# 2. 查找name属性的的值为value的标签
driver.find_element(By.CSS_SELECTOR,'[name="value"]')
# 3. 查找name属性的值包含value单词的标签
driver.find_element(By.CSS_SELECTOR,'[name~="value"]')
# 4. 查找name属性的值包含value的标签
driver.find_element(By.CSS_SELECTOR,'[name*="value"]')
# 5. 查找class属性的值为"title-content c-link c-font-medium"的标签
driver.find_element(By.CSS_SELECTOR,'[class="title-content c-link c-font-medium"]')
# class属性的值如果有多个,采用.代替class时,需要把所有的空格全换成.
driver.find_element(By.CSS_SELECTOR,'.title-content.c-link.c-font-medium')
# 6. 查找ID属性的值为div1的标签
driver.find_element(By.ID,'div1')
driver.find_element(By.CSS_SELECTOR,'#div1')
driver.find_element(By.CSS_SELECTOR,'[id="div1"]')
# 7. 查找p标签下面的a标签
driver.find_element(By.CSS_SELECTOR,'p a')
# 8. 查找class="div1p1"的p标签下面的a标签
driver.find_element(By.CSS_SELECTOR,'p[class="div1p1"] a')
driver.find_element(By.CSS_SELECTOR,'p.div1p1 a')
# 9. 查找父元素是p标签的a标签
driver.find_element(By.CSS_SELECTOR,'p>a')
# 10. 查找p标签和div标签
driver.find_element(By.CSS_SELECTOR,'p,div')
# 11. 查找class属性以div开头的p标签
driver.find_element('p[class^="div"]')
# 12. 查找class属性以div结尾的p标签
driver.find_element('p[class$="div"]')
# 查找class属性的值为test的div标签下面
# id属性的值为test1的p标签下面的name属性的值为test2的a标签
'div.test p#test1 a[name="test2"]'
XPATH
# XPATH 采用路径表达式,上下级用/,不关注位置用//,属性前面加@,获取文本用text(),包含用contains
# 1. 查找拥有name属性的标签
driver.find_element(By.XPATH,'//*[@name]')
# 2. 查找name属性的的值为value的标签
driver.find_element(By.XPATH,'//*[@name="value"]')
# 3. 查找name属性的值包含value的标签
driver.find_element(By.XPATH,'//*[contains(@name,"value")')
# 4. 查找文本包含value的标签
driver.find_element(By.XPATH,'//*[contains(text(),"value")')
# 查找文本等于value的标签
driver.find_element(By.XPATH,'//*[text()="value"]')
# 5. 查找class属性的值为"title-content c-link c-font-medium"的标签
driver.find_element(By.XPATH,'//*[@class="title-content c-link c-font-medium"]')
# 6. 查找ID属性的值为div1的标签
driver.find_element(By.XPATH,'//*[@id="div1"]')
# 7. 查找p标签下面的a标签
driver.find_element(By.XPATH,'//p//a')
# 8. 查找class="div1p1"的p标签下面的a标签
driver.find_element(By.XPATH,'//p[@class="div1p1"]//a')
# 9. 查找父元素是p标签的a标签
driver.find_element(By.XPATH,'//p/a')
# 10. 查找p标签和div标签
driver.find_element(By.CSS_SELECTOR,'//p|//div')
除非注明,否则均为予夜以星博客原创文章,转载或复制请以超链接形式并注明出处。
-- 展开阅读全文 --
还没有评论,来说两句吧...