好久没有使用selenium,重新安装之后发现原来的代码都不能用了,原来版本更新了。
使用pip list查看,selenium版本4.8.2。
首先更新chrome驱动 http://chromedriver.storage.googleapis.com/index.html,
chrome版本:版本 102.0.5005.115(正式版本) (64 位)。
驱动列表,选了比较接近的 102.0.5005.61版本。
下载解压缩,放在chrome安装目录下。
原来的执行路径不太好用了,不报错,有警告,提示“executable_path has been deprecated, please pass in a Service object”。
根据更新,换成:
#导入库
from selenium.webdriver.chrome.service import Service
# 初始化浏览器为chrome浏览器
s=Service(r'C:\Crowser\Chrome\App\chromedriver.exe')
browser = webdriver.Chrome(service=s)
原来的find_element_by_id会报错:AttributeError: ‘WebDriver’ object has no attribute ‘find_element_by_id’
改成:driver.find_element(By.ID,“kw”),需要导入库:
from selenium.webdriver.common.by import By
其他几种定位方式也做了相应改变:
# 利用ID定位
searchTag = driver.find_element(By.ID, "value")
# 利用name属性定位
searchTag = driver.find_element(By.NAME, "value")
# 利用类名定位
searchTag = driver.find_element(By.CLASS_NAME, "value")
# 利用标签名定位
searchTag = driver.find_element(By.TAG_NAME, "value")
#利用链接文本
searchTag = driver.find_element(By.LINK_TEXT, "value")
#利用部分链接文本
searchTag = driver.find_element(By.PARTIAL_LINK_TEXT, "value")
# 利用xpath定位
searchTag = driver.find_element(By.XPATH, "value")
# 利用CSS选择器定位
searchTag = driver.find_element(By.CSS_SELETOR, "value")
完整代码示例:
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.common.by import By
import time
s=Service(r'C:\Crowser\Chrome\App\chromedriver.exe')
#C:\Crowser\Chrome\App\为chrome安装目录
driver=webdriver.Chrome(service=s)
driver.get('http://www.baidu.com')#打开百度网页
driver.implicitly_wait(5)
driver.find_element(By.ID,"kw").send_keys('selenium4教程')
driver.find_element(By.ID,"kw").send_keys(Keys.ENTER)
selenium还增加了相对定位(Relative Locators),above、below、to_left_of、to_right_of、near。具体可参考:
定位器:
https://www.selenium.dev/zh-cn/documentation/webdriver/elements/locators/
元素定位之find_elements()、层级定位与selenium4相对定位-基础篇5:
https://micheng.blog.csdn.net/article/details/117194464