一.在selenium里面使用什么方法进行元素定位
单个元素定位:find_element
多个元素定位:find_elements
二.在selenium里面有多少种元素定位方式
ID定位:find_element(By.ID,value)
name定位:find_element(By.NAME,value)
class定位:find_element(By.CLASS_NAME,value)
tag定位:find_element(By.TAG,value)
link定位:
find_element(By.LINK_TEXT,value)
find_element(By.PARTIAL_LINK_TEXT,value)
xpath定位:
1.基本语法
//标签名[@属性名=属性值]
2.父子层级
//标签名[@属性名=属性值]/子标签名 //标签名[@属性名=属性值]//子标签名
3.索引
//标签名[@属性名=属性值]/子标签名[索引] 注意:索引从1开始
4.模糊匹配
//标签名[contains(@属性名,部分属性值)]
5.多条件匹配
//标签名[@属性1=属性值1 and @属性2=属性值2]
from selenium import webdriver
import time
driver = webdriver.Chrome()
driver.get("http://www.baidu.com")
# 标签+属性进行xpath定driver.find_element_by_xpath('//input[@autocomplete="off"]').send_keys('软件测试')
# 层级定位
ele = driver.find_element_by_xpath('//form[@action="/s"]/input')
# 索引定位
ele = driver.find_element_by_xpath('//form[@action="/s"]/input[2]')
# 模糊匹配
ele = driver.find_element_by_xpath('//a[contains(@id,"result_")]')
# 多条件查找
ele = driver.find_element_by_xpath('//input[@type="hidden" and @name="rn"]')
ele = driver.find_element_by_xpath('//span[@class="soutu-hover-tip"]')
print(ele.get_attribute('outerHTML'))
time.sleep(5)
driver.quit()
css定位:
1.基本语法
标签名[属性名=属性值] #id名 .class名
2.父子层级
标签名[属性名=属性值] 子标签 标签名[属性名=属性值]>子标签
3.索引
标签名[属性名=属性值] :nth-child(索引) 标签名[属性名=属性值]>:nth-child(索引)
4.模糊匹配
标签名[属性名*=部分属性值]
5.多条件匹配
标签名[属性名1=属性值1][属性名2=属性值2]
from selenium import webdriver
import time
from selenium.webdriver.common.by import By
driver = webdriver.Chrome()
driver.get("http://www.baidu.com")
# 标签+属性
ele = driver.find_element_by_css_selector('input[id="kw"]')
# id选择器
ele = driver.find_element_by_css_selector('#kw')
# class选择器
ele = driver.find_element_by_css_selector('.s_ipt')
ele = driver.find_element_by_css_selector("form[id='form'] input")
# 模糊匹配
ele = driver.find_element_by_css_selector('input[autocomplete*="of"]')
# 多条件匹配
ele = driver.find_element(By.CSS_SELECTOR,'input[type="hidden"][name="f"]')
print(ele.get_attribute('outerHTML'))
time.sleep(10)
driver.quit()