1.selenium中使用什么方法进行元素定位
①单个元素定位:find_element
②多个元素定位:find_elements
2.selenium中的定位方式
#先selenium导包
from selenium import webdriver
#以谷歌浏览器的百度网页为例
driver = webdriver.Chrome()
driver.get("http://www.baidu.com")
#id定位
date=driver.find_element_by_id('kw')
print(date.get_attribute('outerHTML'))# 打印定位的元素
#name定位
date=driver.find_element_by_name('wd')
print(date.get_attribute('outerHTML'))
#class定位
date=driver.find_element_by_class_name('s_ipt')
print(date.get_attribute('outerHTML'))
#tag_name 定位
date=driver.find_elements_by_tag_name('a')
print(date.get_attribute('outerHTML')) #返回一个列表
#超链接定位
date=driver.find_elements_by_link_text('图片')
print(date.get_attribute('outerHTML'))
2.1 xpath定位
语法:find_element_by_xpath()
①.基本语法
//标签名[@属性名=属性值]
②.父子层级
//标签名[@属性名=属性值]/子标签名 //标签名[@属性名=属性值]//子标签名
③.索引
//标签名[@属性名=属性值]/子标签名[索引] 注意:索引从1开始
④.模糊匹配
//标签名[contains(@属性名,部分属性值)]
⑤.多条件匹配
//标签名[@属性1=属性值1 and @属性2=属性值2]
# xpath 语法 find_element_by_xpath()
#标签+属性定位 //标签名[@属性名=属性值]
date=driver.find_element_by_xpath("//input[@id='kw']")
# 层级标签 //标签名[@属性名=属性值]/子标签 --->只会选该标签名下的子标签 ; //标签名[@属性名=属性值]//子标签--->会选该标签名下的子标签以及子标签下的标签
date=driver.find_element_by_xpath('//span[@class="bg s_btn_wr"]/input')
# 索引定位 //标签名[属性名=属性值]/子标签[索引] 索引从1开始
date=driver.find_element_by_xpath('//div[@id="s-top-left"]/a[2]')
# 模糊定位 //标签名[contains(@属性名,部分属性值)]
date=driver.find_element_by_xpath('//div[@id="s-top-left"]/a[contains(@target,"_blan")]')
# 多条件查找 //标签名[属性名1=属性值1 and 属性名2=属性值2]
date=driver.find_element_by_xpath('//div[@id="s-top-left"]/a[contains(@target,"_blan")]')
print(date.get_attribute('outerHTML'))
2.2css定位
语法:find_element_by_css_selector()
①.基本语法
标签名[属性名=属性值] #id名 .class名
②.父子层级
标签名[属性名=属性值] 子标签 标签名[属性名=属性值]>子标签
③.索引
标签名[属性名=属性值] :nth-child(索引) 标签名[属性名=属性值]>:nth-child(索引)
④.模糊匹配
标签名[属性名*=部分属性值]
⑤.多条件匹配
标签名[属性名1=属性值1][属性名2=属性值2]
#css 语法 find_element_by_css_selector()
#标签+属性定位
ele=driver.find_element_by_css_selector('input[id="kw"]')
#id 选择器定位 #id属性值 --->没有引号
ele=driver.find_element_by_css_selector('#kw')
# class 选择器定位 .class属性值---->没有引号
ele=driver.find_element_by_css_selector('.s_ipt')
# 层级定位
ele=driver.find_element_by_css_selector('form[name="f"] input[id="kw"]')
# 索引定位
ele = driver.find_element_by_css_selector('form[name="f"] :nth-child(8) input')
#模糊匹配
ele = driver.find_element_by_css_selector('input[type*="sub"]')
# 多条件查找
ele=driver.find_element_by_css_selector('span[class="soutu-hover-tip"][style="display: none;"]')
print(ele.get_attribute('outerHTML'))
driver.quit()