操作元素,需要先查找定位到对应的元素。
查找单个元素:driver.find_element() 返回是一个web element 对象
查找多个元素:driver.find_elements() 返回是一个list对象
By 是 Selenium 中一个非常重要的类,用于定位网页元素。
使用需要导入By模块
from selenium.webdriver.common.by import By # 导入 By 模块
常用方法及示例
1. By.ID
根据元素的 ID 定位。
ID一般不会重复。
element = driver.find_element(By.ID, "kw")
2.By.NAME
根据元素的 名称 定位。
element = driver.find_element(By.NAME, "wd")
3.By.CLASS_NAME
根据元素的 类名 定位。
element = driver.find_element(By.CLASS_NAME, "s_ipt")
4.By.TAG_NAME
根据元素的 标签名 定位。
一般与driver.find_elements()
方法一起使用,因为一个页面中tag name非常容易重复。
element = driver.find_elements(By.TAG_NAME,'input')
print(type(element))
find_elements 返回的是list 可以通过遍历list的方法获取每个元素
5.By.LINK_TEXT
根据元素的 链接文本 定位。
element = driver.find_element(By.LINK_TEXT, "新闻")
6.By.PARTIAL_LINK_TEXT
根据元素的 部分链接文本 定位。
同样还是上面那个新闻链接。这样也能找到。
element = driver.find_element(By.PARTIAL_LINK_TEXT, "新")
7.By.XPATH
根据元素的 XPath 定位。
在对应元素上,右键,copy,可复制xpath路径。
#复制的相对路径element = driver.find_element(By.XPATH, "//*[@id='kw']")#复制的绝对路径 很长不推荐使用element = driver.find_element(By.XPATH, "/html/body/div/div[2]/div[5]/div[1]/div/form/span[1]/input")#自己手写路径匹配规则element = driver.find_element(By.XPATH, "//input[@id='kw' and @name='wd' ]")
8.By.CSS_SELECTOR
根据元素的 CSS选择器 定位。
这个同样也可以在对应元素上,右键,copy,复制CSS选择器。
# 复制的selector
driver.find_element(By.CSS_SELECTOR,"#kw")
#自己手写
element = driver.find_element(By.CSS_SELECTOR, "input[name='wd']")