2024现烤现卖热乎的自动化测试之《元素定位大法》最新版本教程
环境配置:
Python版本:Python3.11.8
Selenium版本:Selenium4.18.1
Firfox版本:123.0.1(64位)
元素定位总结#(1) id#格式---browser.find_element(By.ID, 'kw')#(2) name#格式---browser.find_element(By.NAME, 'wd')#(3) class_name#格式---browser.find_element(By.CLASS_NAME, 's_ipt')#(4) tag_name#格式---browser.find_element(By.TAG_NAME, 'input')#(5) link_text#格式---browser.find_element(By.LINK_TEXT,'京公网安备11000002000001号')#(6) partial_link_text#格式---browser.find_element(By.PARTIAL_LINK_TEXT,'京ICP证030173号')#(7) Xpath#格式---browser.find_element(By.XPATH,'/html/body/div[2]/div[1]/div[5]/div/div/div[3]/ul/li[2]/a/span[2]')#(8) CSS#格式---browser.find_element(By.CSS_SELECTOR,"#kw")#(9) find_element 与 find_elements 区别用法#find_element---只查找一个元素使用;获取元素.txe内容,href链接内容使用#find_elements---返回多个元素;返回格式列表;获取指定元素需读取下标browser.find_elements(By.TAG_NAME,'a')[0]#(10) 组合条件定位使用and: 层级+属性、逻辑+属性#举个栗子 层级+属性---元素Xpath=//*[@id="kw"]and元素id="kw"#browser.find_element(By.XPATH,'//*[@id="kw"]') and browser.find_element(By.ID,"kw")#(11) Xpath扩展#--(1)文本内容是"xxx"的元素#--owser.find_element(By.XPATH,"//*[text()='京公网安备11000002000001号']")#--(2)以xxx开头的元素#browser.find_elements(By.XPATH,'//*[starts-with(@id,"k")]')[0]#--(3)属性包含xxx的元素#browser.find_element(By.XPATH,'//*[contains(@id,"k")]')#(12) CSS扩展#css_selector 元素必须用#修饰#browser.find_element(By.CSS_SELECTOR,"#kw")#---(1) input[type^'p'] ---type属性以字母'P'开头的元素#如:input[id^='d']---id属性以"d"开头的所有元素# browser.find_element(By.CSS_SELECTOR,"input[id^='k']")#---(2) input[type$'d'] ---type属性以字母'd'结尾的元素#如:input[name$='d']---name属性以'd'结尾的所有元素# browser.find_element(By.CSS_SELECTOR,"input[name$='d']")#---(3) input[type*'w'] ---type属性包含字母'w'的元素# #如:input[name*='w']---name属性包含'w'的所有元素# browser.find_elements(By.CSS_SELECTOR,"input[name*='w']")[0]