1.1 通过id定位元素

  • 语法:find_element_by_id(‘kw’)

kw 为该页面元素的id

  • 举个栗子:实现在百度首页输入框输入selenium

image.png

  • 代码: ```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’)

  1. <a name="Ve79m"></a>
  2. ### 1.2 通过xpath定位
  3. - 语法:find_element_by_xpath('//*[@id="kw"]')
  4. //*[@id="kw"] 为该元素的xpath路径
  5. - 举个栗子:实现在百度首页输入框输入selenium
  6. ![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)
  7. - 代码:
  8. ```python
  9. # 只改动1.1 代码的最后一行,其他都是一样的
  10. # 在百度首页输入框输入 selenium
  11. driver.find_element_by_xpath('//*[@id="kw"]').send_keys('selenium')

1.3 通过链接文本定位

  • 语法:find_element_by_link_text(‘新闻’)

新闻 为该标签的文本

  • 举个栗子:实现点击百度首页的新闻

image.png

在百度首页点击‘新闻’,跳转到新闻页面

driver.find_element_by_link_text(‘新闻’).click()

  1. <a name="i1T9j"></a>
  2. ### 1.4 通过部分链接文本定位
  3. - 语法:find_element_by_partial_link_text('新')
  4. 新 为该<a>标签的部分文本
  5. - 举个栗子:实现点击百度首页的新闻
  6. - 代码:
  7. ```python
  8. # 只改动1.1 代码的最后一行,其他都是一样的
  9. # 在百度首页点击‘新闻’,跳转到新闻页面
  10. driver.find_element_by_partial_link_text('新').click()

1.5 通过标签name值定位

  • 语法:find_element_by_name(‘wd’)

wd 为该标签的name属性的值

  • 举个栗子:实现在百度首页输入框输入selenium

image.png

  • 代码: ```python

    只改动1.1 代码的最后一行,其他都是一样的

在百度首页输入框输入 selenium

driver.find_element_by_name(‘wd’).send_keys(‘selenium’)

  1. <a name="wqAOa"></a>
  2. ### 1.6 通过标签名称定位
  3. - 语法:find_element_by_tag_name('input')
  4. input 为该标签名称
  5. - 举个栗子:实现在百度首页定位input输入框
  6. - 代码:
  7. ```python
  8. # 只改动1.1 代码的最后一行,其他都是一样的
  9. # 在百度首页定位输入框并打印结果
  10. print(driver.find_element_by_tag_name('input'))

1.7 通过class定位

  • 语法:find_element_by_class_name(‘s_ipt’)

s_ipt 为该标签的class属性的值

  • 举个栗子:实现在百度首页定位input输入框

image.png

  • 代码: ```python

    只改动1.1 代码的最后一行,其他都是一样的

在百度首页输入框输入 selenium

driver.find_element_by_class_name(‘s_ipt’).send_keys(‘selenium’)

  1. <a name="r7xyr"></a>
  2. ### 1.8 通过css选择器定位
  3. - 语法:find_element_by_css_selector('#kw')
  4. #kw 为该标签的css选择器
  5. - 举个栗子:实现在百度首页定位input输入框
  6. ![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)
  7. - 代码:
  8. ```python
  9. # 只改动1.1 代码的最后一行,其他都是一样的
  10. # 在百度首页输入框输入 selenium
  11. 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 的所有元素的代码为:

  1. # 获取多个元素,返回的结果是一个list
  2. kw = driver.find_elements_by_class_name('kw')
  3. # 可以通过下标来获取指定元素
  4. # 例如将第一个元素赋值给kw1
  5. kw1 = driver.find_elements_by_class_name('kw')[0]
  6. # 如果用错方法,用成find_element_by_class_name是,会只返回第一个元素
  7. # find_element_by_class_name('kw') 跟 find_elements_by_class_name('kw')[0] 结果是一样的