• selenium


    简介

    selenium:浏览器自动化的工具
    链接: 文档

    使用

    1.Python环境中安装selenium

    pip install selenium
    
    • 1

    2.把驱动程序放在pycharm开发目录中

    • 下载与浏览器对应的驱动程序:
      • http://chromedriver.storage.googleapis.com/index.html
    • 驱动和浏览器版本的对应表
      • http://blog.csdn.net/huilan_same/article/details/51896672

    入门

    import time
    from selenium import webdriver
    # 取得谷歌浏览器驱动
    driver = webdriver.Chrome()
    # 打开网页
    driver.get('https://www.jd.com/')
    # 页面最大化
    driver.maximize_window()
    # 得到页面大小
    print(driver.get_window_size())
    # 得到网址
    print(driver.current_url)
    # 得到所有窗口句柄
    print(driver.window_handles)
    # 睡5秒,等待
    time.sleep(5)
    # close driver,resource recovery
    driver.quit()
    
    # driver.close() # 关闭页面
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20

    元素定位

    • 常用的有以下几种:
    driver.find_element(By.XPATH,'XPATH')
    driver.find_element(By.CLASS_NAME,'CLASS_NAME')
    driver.find_element(By.CSS_SELECTOR,'CSS_SELECTOR')
    driver.find_element(By.ID,'ID')
    driver.find_element(By.LINK_TEXT,'LINK_TEXT')
    driver.find_element(By.PARTIAL_LINK_TEXT,'PARTIAL_LINK_TEXT')
    driver.find_element(By.TAG_NAME,'TAG_NAME')
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • id定位
    driver.get('https://www.jd.com/')
    eli = driver.find_element(By.ID,'key')
    
    • 1
    • 2
    • 超链接,根据文本进行定位,精确定位,文本不能缺错
    eli = driver.find_element(By.LINK_TEXT,'抢大牌好价')
    eli.click()
    
    • 1
    • 2
    • 超链接,部分文本匹配,click()摸拟点击行为
    eli = driver.find_element(By.PARTIAL_LINK_TEXT,'牌好价').click()
    
    • 1
    • Xpath定位
    字符说明
    input选择所有input标签,同理,可以选选div等其他标签
    *选择所有元素
    /从当前开始选择
    //从当前及以下的任意节点选择
    .当前节点
    父节点
    @根据属性进行选择
    [n]返回结果的第n项

    在京东搜索栏里找“奶粉”

    eli = driver.find_element(By.XPATH,'//*[@id="key"]').send_keys('奶粉')
    eli = driver.find_element(By.XPATH,'//*[@id="search"]/div/div[2]/button').click()
    
    • 1
    • 2

    节点交互

    • 输入文字时用send_keys()方法
    • 清空文字时用clear()方法
    • 点击按钮时用click()方法。

    等待

    因网速等原因,网页未能全部加载而找不到相应元素,需要等待加载完毕,再找查找元素

    • 强制等待
    time.sleep(10)
    
    • 1
    • 隐式等待
    driver.implicitly_wait(15)
    
    • 1

    执行js

    模拟运行JavaScript,此时使用execute_script()方法即可实现。

    driver.execute_script('document.documentElement.scrollTo(0,2000)')
    
    • 1

    动作链

    链接: 演示网址

    import time
    from selenium import webdriver
    from selenium.webdriver import ActionChains
    from selenium.webdriver.common.by import By
    
    # 取得谷歌浏览器驱动
    driver = webdriver.Chrome()
    url = ''
    # 打开网页
    driver.get('https://www.runoob.com/try/try.php?filename=jqueryui-api-droppable')
    driver.implicitly_wait(15)
    # eli = driver.find_element(By.ID,'key')
    # eli = driver.find_element(By.PARTIAL_LINK_TEXT,'牌好价').click()
    # eli = driver.find_element(By.LINK_TEXT,'牌好价')
    # eli = driver.find_element(By.XPATH,'//*[@id="key"]').send_keys('奶粉')
    # eli = driver.find_element(By.XPATH,'//*[@id="search"]/div/div[2]/button').click()
    # 如果定位的标签在iframe标签中,需要以下语句,frame的参数可以是iframe标签的id属性
    driver.switch_to.frame('iframeResult')
    drag_block = driver.find_element(By.XPATH, '//*[@id="draggable"]')
    # 创建动作链对象,绑定浏览器
    my_action = ActionChains(driver)
    # 点击并长按指定标签
    my_action.click_and_hold(drag_block)
    # 移动标签,perform()表示立即执行
    for i in range(6):
        my_action.move_by_offset(25,25).perform()
        time.sleep(0.5)
    # 睡5秒,等待
    time.sleep(1)
    # 释放动作链对象
    my_action.release()
    # close driver,resource recovery
    # driver.quit()
    
    # driver.close() # 关闭页面
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
  • 相关阅读:
    为什么需要 TIME_WAIT 状态
    2023-2028年中国高纯度氢气市场投资分析及前景预测报告
    【HCIA】华为 VRP 命令行基础
    Mybatis - 核心配置解读
    C#表达树
    【EXCEL】详解使用python读写EXCEL文件(xlrd,xlwt)
    Recursion Function 递归和栈的笔记
    Java进阶(JVM调优)——阿里云的Arthas的使用 & 安装和使用 & 死锁查找案例,重新加载案例,慢调用分析
    Docker从入门到部署项目
    C#实现生成Markdown文档目录树
  • 原文地址:https://blog.csdn.net/qq_37755459/article/details/134443812