selenium备忘录


环境安装

相关链接

  1. Selenium+Webdriver环境部署:Mac下的Python+Selenium环境部署
  2. Chromedriver安装: Chromedriver

Chromedriver安装

  1. 打开Chrome浏览器,选择“帮助”->“关于Google Chrome”,查看版本,如:版本 120.0.6099.234(正式版本) (arm64);
  2. 基于浏览器版本,下载对应版本的Chromedriver即可,下载时,如果有4个版本号完全一致的,则下载完全一致的Chromedriver,如果没有完全一致的,则关注Chrome的前三位版本号即可;
  3. mac下的Chromedriver有两个版本,需参考自己的mac是否为m1处理器,如果不是m1处理器,就下载普通版即可,如果是m1处理器,则下载m1版本;
  4. 下载后,将zip包解压,然后在终端处,通过mv指令将chromedriver文件移动到/usr/local/bin路径下;
  5. 进入到/usr/local/bin路径下,输入指令:xattr -d com.apple.quarantine chromedriver,将chromedriver的com.apple.quarantine属性去除,避免运行时因为系统的安全机制导致chromedriver无法正常运行;
  6. 测试是否安装完成:
    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()

学习文档

  1. selenium + python 中文文档
  2. Selenium with Python中文翻译文档
  3. 爬虫链接:awesome-spider

遇到的问题

  1. 关于新版本selenium定位元素报错:‘WebDriver‘ object has no attribute ‘find_element_by_id‘等问题
  2. 标签元素的class属性包含空格的情况
  3. python+selenium获取元素的源码

常用操作

元素定位与操作

浏览器定位元素属性

  1. 浏览器中进入开发者模式(F12)
  2. 找到目标元素的代码:使用选择器,选择到目标元素

创建元素对象

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()           # 元素是否可见

备注:元素是否可见,指元素是否出现在网页中,无论元素在不在浏览器的可视窗口内


文章作者: lilso
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 lilso !
  目录