1.1 通过id定位元素
- 语法:find_element_by_id(‘kw’)
kw 为该页面元素的id
- 举个栗子:实现在百度首页输入框输入selenium
- 代码: ```python from selenium import webdriver
打开Chrome浏览器
driver = webdriver.Chrome()
窗口最大化
driver.maximize_window()
打开百度
driver.get(‘https://www.baidu.com/‘)
在百度首页输入框输入selenium
driver.find_element_by_id(‘kw’).send_keys(‘selenium’)
<a name="Ve79m"></a>
### 1.2 通过xpath定位
- 语法:find_element_by_xpath('//*[@id="kw"]')
//*[@id="kw"] 为该元素的xpath路径
- 举个栗子:实现在百度首页输入框输入selenium
![image.png](https://cdn.nlark.com/yuque/0/2022/png/26098777/1644393006934-95dae82d-db82-4f15-8698-310059667c3e.png#clientId=u0c023b2f-cb37-4&crop=0&crop=0&crop=1&crop=1&from=paste&height=276&id=u6c535dc7&margin=%5Bobject%20Object%5D&name=image.png&originHeight=580&originWidth=1505&originalType=binary&ratio=1&rotation=0&showTitle=false&size=121964&status=done&style=none&taskId=ua6d94cb5-5d41-4b0c-b3e5-277b47e09d9&title=&width=716)
- 代码:
```python
# 只改动1.1 代码的最后一行,其他都是一样的
# 在百度首页输入框输入 selenium
driver.find_element_by_xpath('//*[@id="kw"]').send_keys('selenium')
1.3 通过链接文本定位
- 语法:find_element_by_link_text(‘新闻’)
新闻 为该标签的文本
- 举个栗子:实现点击百度首页的新闻
- 代码:
```python
只改动1.1 代码的最后一行,其他都是一样的
在百度首页点击‘新闻’,跳转到新闻页面
driver.find_element_by_link_text(‘新闻’).click()
<a name="i1T9j"></a>
### 1.4 通过部分链接文本定位
- 语法:find_element_by_partial_link_text('新')
新 为该<a>标签的部分文本
- 举个栗子:实现点击百度首页的新闻
- 代码:
```python
# 只改动1.1 代码的最后一行,其他都是一样的
# 在百度首页点击‘新闻’,跳转到新闻页面
driver.find_element_by_partial_link_text('新').click()
1.5 通过标签name值定位
- 语法:find_element_by_name(‘wd’)
wd 为该标签的name属性的值
- 举个栗子:实现在百度首页输入框输入selenium
在百度首页输入框输入 selenium
driver.find_element_by_name(‘wd’).send_keys(‘selenium’)
<a name="wqAOa"></a>
### 1.6 通过标签名称定位
- 语法:find_element_by_tag_name('input')
input 为该标签名称
- 举个栗子:实现在百度首页定位input输入框
- 代码:
```python
# 只改动1.1 代码的最后一行,其他都是一样的
# 在百度首页定位输入框并打印结果
print(driver.find_element_by_tag_name('input'))
1.7 通过class定位
- 语法:find_element_by_class_name(‘s_ipt’)
s_ipt 为该标签的class属性的值
- 举个栗子:实现在百度首页定位input输入框
在百度首页输入框输入 selenium
driver.find_element_by_class_name(‘s_ipt’).send_keys(‘selenium’)
<a name="r7xyr"></a>
### 1.8 通过css选择器定位
- 语法:find_element_by_css_selector('#kw')
#kw 为该标签的css选择器
- 举个栗子:实现在百度首页定位input输入框
![image.png](https://cdn.nlark.com/yuque/0/2022/png/26098777/1644396115515-e892f83e-189e-48fb-b33c-3b91dfb884f8.png#clientId=u0c023b2f-cb37-4&crop=0&crop=0&crop=1&crop=1&from=paste&height=748&id=u14b07112&margin=%5Bobject%20Object%5D&name=image.png&originHeight=748&originWidth=1516&originalType=binary&ratio=1&rotation=0&showTitle=false&size=127086&status=done&style=none&taskId=u673db0f3-256d-4eb0-97a5-7532b2b29d2&title=&width=1516)
- 代码:
```python
# 只改动1.1 代码的最后一行,其他都是一样的
# 在百度首页输入框输入 selenium
driver.find_element_by_css_selector('#kw').send_keys('selenium')
以上举例的是定位单个元素的用法。定位单个元素用 find_element_by_xxx,当要定位具有相同 id、name、class值等的多个元素时,则用过使用 find_elements_by_xxx。
例如:页面中有多个元素的class值为 kw , 获取页面中class值为 kw 的所有元素的代码为:
# 获取多个元素,返回的结果是一个list
kw = driver.find_elements_by_class_name('kw')
# 可以通过下标来获取指定元素
# 例如将第一个元素赋值给kw1
kw1 = driver.find_elements_by_class_name('kw')[0]
# 如果用错方法,用成find_element_by_class_name是,会只返回第一个元素
# find_element_by_class_name('kw') 跟 find_elements_by_class_name('kw')[0] 结果是一样的