id属性在HTML中是唯一的,因此使用id定位可以确保找到页面上唯一的元素。
由于id是唯一的,浏览器在查找元素时可以快速定位到目标元素,提高了定位的效率。
import time #pip install selenium from selenium import webdriver from selenium.webdriver.common.by import By # 指定浏览器的位置,解决浏览器驱动和浏览器版本不匹配的问题 chrome_location = r'D:\pythonProject2023\SeleniumFirst\chrome-win64\chrome.exe' options = webdriver.ChromeOptions() options.binary_location = chrome_location driver = webdriver.Chrome(options=options) # 使用get方法,访问网址 driver.get('https://www.baidu.com/') #窗口最大化 driver.maximize_window() #1 找到输入框的位置,输入万笑佛博客园 element = driver.find_element(By.ID,'kw') element.send_keys("老虎资源分享") #2 找到搜索框的位置,点击搜索 #单数查找 driver.find_element(By.CLASS_NAME,'s_btn').click() time.sleep(3) driver.quit()
import time from selenium import webdriver from selenium.webdriver.common.by import By # 指定浏览器的位置,解决浏览器驱动和浏览器版本不匹配的问题 chrome_location = r'D:\pythonProject2023\SeleniumFirst\chrome-win64\chrome.exe' options = webdriver.ChromeOptions() options.binary_location = chrome_location driver = webdriver.Chrome(options=options) # 窗口最大化 driver.maximize_window() driver.get("https://www.bilibili.com/") # 只获取class属性的第一个元素 driver.find_element(By.CLASS_NAME,'nav-search-input').send_keys("老虎资源分享") time.sleep(3) driver.find_element(By.CLASS_NAME,'channel-link').click() # 获取class属性的所有元素 # driver.find_elements(By.CLASS_NAME,'channel-link')[4].click() # for ele in driver.find_elements(By.CLASS_NAME,'channel-link'): # print(ele.text) # 错误用法 #driver.find_element(By.CLASS_NAME,'icon-bg icon-bg__channel').click() time.sleep(3)
一个网页,相同的标签的元素的概率非常高,因为我们尽量少通过tag_name定位单个元素
import time from selenium import webdriver from selenium.webdriver.common.by import By # 指定浏览器的位置,解决浏览器驱动和浏览器版本不匹配的问题 chrome_location = r'D:\pythonProject2023\SeleniumFirst\chrome-win64\chrome.exe' options = webdriver.ChromeOptions() options.binary_location = chrome_location driver = webdriver.Chrome(options=options) # 窗口最大化 driver.maximize_window() driver.get("https://www.bilibili.com/") driver.find_element(By.TAG_NAME, "input").send_keys("老虎资源分享") time.sleep(3)