IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 开发测试 -> python之selenium模块【操纵浏览器】 -> 正文阅读

[开发测试]python之selenium模块【操纵浏览器】

selenium模块

  • 为什么需要使用selenium模块?
    • selenium可以更快捷的获取网站中动态加载的数据
    • 便捷的实现模拟登录
  • 什么是selenium模块?
    • 基于浏览器自动化的一个模块
  • selenium使用
    • 环境安装:pip install selenium
    • 下载一个浏览器的驱动程序
      • https://developer.microsoft.com/en-us/microsoft-edge/tools/webdriver/(edge浏览器)
      • 可以自己查找对应浏览器的驱动下载网站
    • 实例化一个selenium对象
    • 编写浏览器自动化代码
    • 初始用
    from selenium import webdriver
    from lxml import etree
    from time import sleep
    # 实例化一个浏览器对象(传入浏览器的驱动器)
    # 直接写路径也行,也可以不用写
    # bro=webdriver.Edge('msedgedriver.exe')
    bro=webdriver.Edge('msedgedriver.exe')
    # 让浏览器发起一个指定url对应请求
    bro.get('http://scxk.nmpa.gov.cn:81/xk/')
    # 获取浏览器当前页面的页面源码数据
    page_text=bro.page_source
    tree=etree.HTML(page_text)
    li_list=tree.xpath('//ul[@id="gzlist"]/li')
    for li in li_list:
        name=li.xpath('./dl/@title')[0]
        print(name)
    # 睡眠5秒后关闭浏览器
    sleep(5)
    bro.quit()
    
    • 相关基础语法
      • 发起请求:get()
        • 在selenium对象发送请求时的url必须带上超文本协议前缀
      • 标签定位:find系列方法
      • 标签交互:send_keys(‘xxx’)
      • 执行js程序:excut_script(‘就js代码’)
      • 前进、后退:forward()、back()
      • 关闭浏览器:quit()
    • 实战之操纵淘宝
    from selenium import webdriver
    from time import sleep
    bro=webdriver.Edge()
    bro.get('https://www.taobao.com/')
    # 标签定位
    serch_input=bro.find_element_by_id('q')
    # 标签交互,搜索框输入内容
    serch_input.send_keys('Iphone')
    # 执行一组js程序
    # 向下滚动
    bro.execute_script('window.scrollTo(0,document.body.scrollHeight)')
    btn=bro.find_element_by_css_selector('.btn-search')
    # 点击搜索按钮
    btn.click()
    bro.get('https://www.baidu.com')
    # 后退
    sleep(2)
    bro.back()
    # 前进
    sleep(2)
    bro.forward()
    sleep(5)
    bro.quit()
    
  • selenium处理iframe以及动作链
    • 如果定位的标签在iframe中则必须要使用switch_to.frame(‘id’)
    • 动作链(拖动):from selenium.webdriver import ActionChains导入动作链包
      • 实例化一个动作链对象
        • action=ActionChains(bro)
      • 触发长按且点击操作
        • action.click_and_hold(div)
      • 进行拖动
        • action.move_by_offset(17,10)
      • 动作立即执行
        • perform()
      • 释放动作链
        • action.release()
    • 实操:
    from selenium import webdriver
    from time import sleep
    # 导入动作链的类
    from selenium.webdriver import ActionChains
    bro=webdriver.Edge()
    bro.get('https://www.runoob.com/try/try.php?filename=jqueryui-api-droppable')
    # 如果要定位的标签在iframe标签中,则进行操作
    bro.switch_to.frame('iframeResult')# 切换定位的作用域
    div=bro.find_element_by_id('draggable')
    # 动作链
    action=ActionChains(bro)
    # 点击长安指定的标签
    action.click_and_hold(div)
    for i in range(5):
        # perform()立即 执行动作链操作
        action.move_by_offset(17,10).perform()
        sleep(0.2)
    # 释放动作链
    action.release()
    bro.quit()
    
    • 模拟登录
    • 实战之QQ空间登录
    from selenium import webdriver
    from time import sleep
    bro=webdriver.Edge()
    bro.get('https://qzone.qq.com/')
    bro.switch_to.frame('login_frame')
    a_tag=bro.find_element_by_id("img_out_2609320777")
    a_tag.click()
    
    • 无头浏览器和规避检测
    from selenium import webdriver
    from time import sleep
    # 实现无可视化界面
    # 实现规避检测
    from selenium.webdriver.edge.options import Options
    edge_options=Options()
    edge_options.add_argument('--headless')
    edge_options.add_argument('--disable-gpu')
    # 如何实现让selenium规避被检测到的风险
    edge_options.add_experimental_option('excludeSwitches',['enable-automation'])
    bro=webdriver.Edge(options=edge_options)
    # 无可视化界面(无头浏览器),phantomJs
    bro.get('https://baidu.com')
    print(bro.page_source)
    bro.quit()
    
  开发测试 最新文章
pytest系列——allure之生成测试报告(Wind
某大厂软件测试岗一面笔试题+二面问答题面试
iperf 学习笔记
关于Python中使用selenium八大定位方法
【软件测试】为什么提升不了?8年测试总结再
软件测试复习
PHP笔记-Smarty模板引擎的使用
C++Test使用入门
【Java】单元测试
Net core 3.x 获取客户端地址
上一篇文章      下一篇文章      查看所有文章
加:2022-02-04 11:19:58  更:2022-02-04 11:20:15 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/18 2:38:16-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码