Selenium 经常使用的定位方式8种。css
对于 Web 页面,id
是最理想的定位方式,通常前端 HTML 代码都会尽可能保证 id
的惟一性。前端
# find_element_by_id 的应用1:定位百度输入框 from selenium import webdriver # 导入 webdriver 模块 from time import sleep # 导入 sleep 模块,能够使程序强制休眠 driver = webdriver.Chrome() # 调用 Chrome 浏览器 driver.get('https://www.baidu.com') # 打开百度网站 kw_element = driver.find_element_by_id("kw") # 经过 id 属性定位到输入框 kw_element.send_keys("selenium") # 向输入框写入"selenium" sleep(5) # 强制休眠 5 秒 driver.quit() # 关闭浏览器
# find_element_by_id 的应用2:定位中国知网首页的搜索输入框 driver = webdriver.Chrome() # 调用 Chrome 浏览器 driver.get('https://www.cnki.net/') # 打开中国知网 search_element = driver.find_element_by_id("txt_SearchText") # 经过 id 属性定位到搜索输入框 search_element.send_keys("自动化测试") # 输入内容 sleep(5) # 强制休眠 5 秒 driver.quit() # 关闭浏览器
经过 HTML 代码中的 name
属性来定位元素。 name
属性的值有可能不是惟一的,这时,会找到多个元素,遇到此类状况,程序会优先选择第一个定位元素。python
# find_element_by_name 的应用1:定位百度输入框 from selenium import webdriver # 导入 webdriver 模块 from time import sleep # 导入 sleep 模块,能够使程序强制休眠 driver = webdriver.Chrome() # 调用 Chrome 浏览器 driver.get('https://www.baidu.com') # 打开百度网站 kw_element = driver.find_element_by_name("wd") # 经过 name 属性定位输入框 kw_element.send_keys("selenium") # 向输入框写入"selenium" sleep(5) # 强制休眠 5 秒 driver.quit() # 关闭浏览器
# find_element_by_name 的应用2:定位拉钩首页的手机号码输入框 driver = webdriver.Chrome() # 调用 Chrome 浏览器 driver.get('https://www.lagou.com/') # 打开拉勾网 search_element = driver.find_element_by_name("phone") # 经过 name 属性定位手机号码输入框 search_element.click() # 点击搜索按钮 sleep(5) # 强制休眠 5 秒 driver.quit() # 关闭浏览器
经过 HTML 代码中的 class
属性来定位元素。web
通常不建议使用此定位方式:浏览器
class
属性通常是不惟一的class
属性存在复合类:如下这段 class
属性就是一个复合类,每一个类用空格分隔,若是经过全匹配定位,程序会报错测试
# 如下程序会报错 driver = webdriver.Chrome() # 调用 Chrome 浏览器 driver.get('https://www.baidu.com') # 打开百度网站 kw_element = driver.find_element_by_class_name("btn self-btn bg s_btn") # 经过 class 属性定位搜索按钮 kw_element.click() # 点击搜索按钮 sleep(5) # 强制休眠 5 秒 driver.quit() # 关闭浏览器 # 报错信息 # selenium.common.exceptions.NoSuchElementException: # Message: no such element: Unable to locate element: # {"method":"css selector","selector":".btn self-btn bg s_btn"}
# find_element_by_class_name 的应用1:定位百度输入框 from selenium import webdriver # 导入 webdriver 模块 from time import sleep # 导入 sleep 模块,能够使程序强制休眠 driver = webdriver.Chrome() # 调用 Chrome 浏览器 driver.get('https://www.baidu.com') # 打开百度网站 kw_element = driver.find_element_by_class_name("s_ipt") # 经过 class 属性定位输入框 kw_element.send_keys("selenium") # 向输入框写入"selenium" sleep(5) # 强制休眠 5 秒 driver.quit() # 关闭浏览器
# find_element_by_class_name 的应用2:定位中国知网首页的搜索输入框 driver = webdriver.Chrome() # 调用 Chrome 浏览器 driver.get('https://www.cnki.net/') # 打开中国知网 search_element = driver.find_element_by_class_name("search-input") # 经过 class 属性定位到搜索输入框 search_element.send_keys("自动化测试") # 输入内容 sleep(5) # 强制休眠 5 秒 driver.quit() # 关闭浏览器