xpath定位等用法
基础用法
//标签名[@属性="属性值"]
可以使用xpath方法做如下定位
from selenium import webdriver
driver = webdriver.Firefox()
driver.get("http://www.baidu.com")
# 使用xpath通过id属性定位
driver.find_element_by_xpath('//*[@id="kw"]').send_keys("python")
# 使用xpath通过name属性定位
driver.find_element_by_xpath('//*[@name="wd"]').send_keys("python")
# 使用xpath通过class属性定位
driver.find_element_by_xpath('//*[@class="s_ipt"]').send_keys("python")
逻辑运算
- xpath还有一个比较强的功能,是可以多个属性逻辑运算的,可以支持与(and)、或(or)、非(not)
- 一般用的比较多的是and运算,同时满足多个条件
from selenium import webdriver
driver = webdriver.Firfox()
driver.get("http://www.baidu.com")
driver.find_element_by_xpath('//*[@id="kw" and @autocomplete="off"]')
模糊匹配
- xpath还有一个非常强大的功能,模糊匹配
from selenium import webdriver
driver = webdriver.Firfox()
driver.get("http://www.baidu.com")
# xpath模糊匹配功能
driver.find_element_by_xpath('//*[contains(text(), "hao123")]').click()
# xpath也可以模糊匹配某个属性
driver.find_element_by_xpaht('//*[contains(@id, "kw")]').click()
# 模糊匹配以什么开头
driver.find_element_by_xpath('//*[starts-with(@id, "s_kw_")]').click()
# 模糊匹配以什么结尾
driver.find_element_by_xpath('//*[ends-with(@id, "kw_wrap")]').click()
# 支持正则表达式
driver.find_element_by_xpath('//*[matchs(text(), "hao13")]').click()