应用场景:
1.元素信息过长
2.动态属性元素
1、绝对路径 / 遇到同层级多个元素用下标表示,下标从1开始,自顶向下写
driver.find_element(By.XPATH,'/html/body/div[1]/div[1]/div[3]/div/div/form/span[1]/input').send_keys('我是丸子')
2、相对路径 // 自底向上尝试
driver.find_element(By.XPATH,'')
3、元素属性定位
driver.find_element(By.XPATH,'//input[@maxlength="255"]').send_keys('我是丸子')
4、多属性定位
driver.find_element(By.XPATH,'//input[@maxlength="255" and @id="kw"]').send_keys('我是丸子')
5、支持通配符 * 不管什么标签 只要任意属性=kw即可
driver.find_element(By.XPATH,'//*[@*="kw"]').send_keys('我是丸子')
6、模糊定位 成为部分属性值定位,starts-with(@属性名,"属性值")
#starts-with(字符串) 字符串以特定值开头
driver.find_element(By.XPATH,'//a[starts-with(@href,"http://news")]').click()
#ends-with() 是xpath语言2.0版本额度函数 而xpath1.0版本的语言没有此函数 selenium正好用的1.0版本的函数 所以不支持
driver.find_element(By.XPATH,'//a[ends-with(@href,"news.baidu.com")]').click()
7、切割字符串实现模糊匹配,substring(@属性名,字符长度)="属性值" 下标从1开始,substring(@href,8) 8代表从第八个字符开始
driver.find_element(By.XPATH,'//a[substring(@href,8)="news.baidu.com"]').click()
8、包含函数实现模糊匹配contains(@属性名,"属性值")
driver.find_element(By.XPATH,'//a[contains(@href,"news.baidu.com")]').click()
9、text()函数匹配
driver.find_element(By.XPATH,'//a[text()="新闻"]').click()
driver.find_element(By.XPATH,'//a[contains(text(),"新")]').click()