环境安装
相关链接
- Selenium+Webdriver环境部署:Mac下的Python+Selenium环境部署
- Chromedriver安装: Chromedriver
Chromedriver安装
- 打开Chrome浏览器,选择“帮助”->“关于Google Chrome”,查看版本,如:版本 120.0.6099.234(正式版本) (arm64);
- 基于浏览器版本,下载对应版本的Chromedriver即可,下载时,如果有4个版本号完全一致的,则下载完全一致的Chromedriver,如果没有完全一致的,则关注Chrome的前三位版本号即可;
- mac下的Chromedriver有两个版本,需参考自己的mac是否为m1处理器,如果不是m1处理器,就下载普通版即可,如果是m1处理器,则下载m1版本;
- 下载后,将zip包解压,然后在终端处,通过mv指令将chromedriver文件移动到/usr/local/bin路径下;
- 进入到/usr/local/bin路径下,输入指令:xattr -d com.apple.quarantine chromedriver,将chromedriver的com.apple.quarantine属性去除,避免运行时因为系统的安全机制导致chromedriver无法正常运行;
- 测试是否安装完成:
from selenium import webdriver import time driver = webdriver.Chrome() driver.get('http://www.baidu.com') driver.implicitly_wait(10) time.sleep(2) driver.find_element('xpath', '//*[@id="kw"]').send_keys('测试测试') time.sleep(1) driver.find_element('id', 'su').click() time.sleep(5) driver.close()
学习文档
遇到的问题
- 关于新版本selenium定位元素报错:‘WebDriver‘ object has no attribute ‘find_element_by_id‘等问题
- 标签元素的class属性包含空格的情况
- python+selenium获取元素的源码
常用操作
元素定位与操作
浏览器定位元素属性
- 浏览器中进入开发者模式(F12)
- 找到目标元素的代码:使用选择器,选择到目标元素
创建元素对象
selenium一共提供了八种定位方式,通过这些定位方式即可创建元素对象。分别为:
from selenium import webdriver
from selenium.webdriver.common.by import By
driver = webdriver.Chrome()
element_id = driver.find_element(By.ID, 'id属性值') # id定位
element_name = driver.find_element(By.NAME, 'name属性值') # name定位
element_class = driver.find_element(By.CLASS_NAME, 'class属性值') # class定位
element_tag = driver.find_element(By.TAG_NAME, 'html标签名称') # tag定位
element_linktext = driver.find_element(By.LINK_TEXT, '文本信息') # 文本定位:仅可用于<a>标签
element_partiallinktext = driver.find_element(By.PARTIAL_LINK_TEXT, '文本信息') # 文本模糊定位:仅可用于<a>标签
element_css = driver.find_element(By.CSS_SELECTOR, 'css表达式') # css定位
element_xpath = driver.find_element(By.XPATH, 'xpath表达式')
元素操作
备注:element代指元素对象
element.click() # 点击
element.send_keys("helloworld") # 输入
element.clear() # 清空
element.submit() # 提交表单
获取属性
element.tag_name # 获取标签名称
element.text # 获取文本
element.get_attribute('class') # 获取属性
element.get_attribute("innerHTML") # 获取元素源码
element.id # 获取selenium内部元素编号
element.size # 获取大小,返回值:{"height": xx,"width": xx}
element.location # 获取坐标,返回值:{"x": xx),"y": xx}
元素状态
element.is_selected() # 元素是否被选中
element.is_enabled() # 元素是否可操作
element.is_displayed() # 元素是否可见
备注:元素是否可见,指元素是否出现在网页中,无论元素在不在浏览器的可视窗口内