首页 > 其他分享 >selenium自动化测试-获取黄金实时价格

selenium自动化测试-获取黄金实时价格

时间:2023-09-22 14:44:56浏览次数:29  
标签:xpath price selenium 实时 str 自动化 print div

最近黄金比较火爆,想要获取黄金实时价格,方便后续监控预警价格,一般实时刷新的网页数据都是动态加载的,需要用到selenium自动化测试获取动态页面数据。

昨天学会了获取动态网页小说内容,同理也可以获取动态网页的黄金实时价格。

第一步:先确定目标网址

网上随便百度一下黄金实时价格: 网址地址:'https://gushitong.baidu.com/futures/ab-AU888'

第二步:确定章节目录和内容元素坐标

通过谷歌浏览器F12调试功能可以很快的定位页面元素位置.

 

 

 

这次定位采用 full XPath 方式,因为该网站通过id或者class属性不好定位,而且采用 full XPath 方式更加方便简单,无需分析元素层级转换格式。
同时采用 selenium 自动化测试工具的浏览器驱动模块访问定位元素值,不再使用bs4库的方式转换取html的元素值。

比如:实时价格,full XPath 值:/html/body/div/div/div/div[1]/div[2]/div/div/div/div[2]/div[1]/div/div/div/div/div[2]/div[1]/div[2]/div[1]/div/span[1]

代码中元素定位取值如下:

 

# 实时价格,full xpath 定位
real_price_xpath = '/html/body/div/div/div/div[1]/div[2]/div/div/div/div[2]/div[1]/div/div/div/div/div[2]/div[1]/div[2]/div[1]/div/span[1]'
# 实时价格
real_price = driver.find_element(By.XPATH, real_price_xpath).text

想要获取其他页面元素值,依次类推即可。

 

第三步:编写代码

依旧采用拆分步骤细化功能模块封装方法编写代码,便于后续扩展功能模块,代码中缺少的封装方法代码,详情参考之前的《selenium自动化测试》文章。

requests_webdriver.py:

def spider_gold_price():
    '''
    @方法名称: 爬取黄金实时价格
    @中文注释: 爬取黄金实时价格
    @入参:
    @出参:
        @返回状态:
            @return 0 失败或异常
            @return 1 成功
        @返回错误码
        @返回错误信息
        @param rsp_dict dict 响应容器
    @作    者: PandaCode辉
    @创建时间: 2023-09-22
    @使用范例: spider_gold_price()
    '''

    try:
        # 返回容器初始化
        rsp_dict = {}
        # 爬取黄金实时价格,网址
        gold_url = 'https://gushitong.baidu.com/futures/ab-AU888'
        # 实时价格,full xpath 定位
        real_price_xpath = '/html/body/div/div/div/div[1]/div[2]/div/div/div/div[2]/div[1]/div/div/div/div/div[2]/div[1]/div[2]/div[1]/div/span[1]'
        # 涨跌百分比,full xpath 定位
        ud_percent_xpath = '/html/body/div/div/div/div[1]/div[2]/div/div/div/div[2]/div[1]/div/div/div/div/div[2]/div[1]/div[2]/div[1]/div/span[4]'
        # 交易时间,full xpath 定位
        trans_datetime_xpath = '/html/body/div/div/div/div[1]/div[2]/div/div/div/div[2]/div[1]/div/div/div/div/div[2]/div[1]/div[2]/div[2]/span[2]'

        print('打开浏览器驱动')
        open_driver()

        # 打开网址网页
        print('打开网址网页')
        driver.get(gold_url)
        # 等待6秒启动完成
        driver.implicitly_wait(6)
        print('随机休眠')
        # 随机休眠 暂停0-2秒的整数秒
        time.sleep(random.randint(0, 2))

        # 实时价格
        real_price = driver.find_element(By.XPATH, real_price_xpath).text
        print('实时价格:' + str(real_price))
        rsp_dict["real_price"] = '实时价格:' + str(real_price)

        # 涨跌百分比
        ud_percent = driver.find_element(By.XPATH, ud_percent_xpath).text
        print('涨跌百分比:' + str(ud_percent))
        rsp_dict["ud_percent"] = '涨跌百分比:' + str(ud_percent)

        # UTC格式当前时区时间
        t = time.localtime()
        work_time = time.strftime("%Y-%m-%d %H:%M:%S", t)
        print('当前日期时间:' + str(work_time))
        now_year = str(work_time)[:4]
        # 交易时间
        trans_datetime = driver.find_element(By.XPATH, trans_datetime_xpath).text
        print('交易日期时间:' + str(now_year + '-' + trans_datetime))
        rsp_dict["trans_datetime"] = '交易日期时间:' + str(now_year + '-' + trans_datetime)

        print('随机休眠')
        # 休眠3秒
        time.sleep(3)
        print('关闭浏览器驱动')
        close_driver()

        # 返回容器
        return [1, '000000', '爬取实时黄金价格信息成功', [rsp_dict]]

    except Exception as e:
        print('关闭浏览器驱动')
        close_driver()
        print("爬取实时黄金价格信息异常," + str(e))
        return [0, '999999', "爬取实时黄金价格信息异常," + str(e), [None]]

 

第四步:运行测试效果

 

 -------------------------------------------end---------------------------------------

 

标签:xpath,price,selenium,实时,str,自动化,print,div
From: https://www.cnblogs.com/xh2023/p/17722326.html

相关文章

  • selenium库浅析
    selenium库浅析基于4.3pipinstallselenium安装好后,在sitepackages下2个主要的目录,common和webdriver1-common该目录一共就一个模块exceptions.py①exceptions.py其中定义了32个异常,竟然有个同学面试的时候被问过异常说明WebDriverException主异常,下面的都......
  • 综述 | 实时三维形状测量技术的综述
    原创|文BFT机器人随着人工智能和机器人技术的快速发展,实时三维形状测量技术变得愈发重要。由于机器人通常在动态环境中操作,因此机器人装备的三维形状测量技术需要能够实时从运动的物体中获取三维形状信息。未来的三维机器视觉技术实际上依赖于实时三维数据获取和测量技术的发展......
  • 中国核动力研究设计院使用 DolphinDB 替换 MySQL 实时监控仪表
    随着仪表测点的大幅增多和采样频率的增加,中国核动力研究设计院仪控团队原本基于MySQL搭建的旧系统已经无法满足大量数据并发写入、实时查询和聚合计算的需求。他们在研究DB-Engines时序数据库榜单时了解到国内排名第一的DolphinDB。经过测试,发现其非常符合业务需求,并且在2022......
  • Selenium超时等待问题的处理方案
    Selenium广泛应用于自动化测试和自动化业务开发,同时在网络爬虫中也有较多的应用,使用Selenium有两个核心的问题:第一个是如何在爬虫领域不被识别出来,另一个是在自动化领域如何解决超时加载的问题。今天来总结一下处理Selenium在自动化业务中的超时加载,让程序不在奔溃,同时能准确的获......
  • 自动化测试:fixture学得好,Pytest测试框架用到老
    From: https://mp.weixin.qq.com/s/agoipUlkQj3jaZ6cZc_80Q------------------------------------------------------------------------------------在pytest中,fixture是一种非常有用的特性,它允许我们在测试函数中注入数据或状态,以便进行测试。而参数化则是fixture的一个特性,......
  • selenium 报错 element not interactable: [object HTMLDivElement] has no size and
    selenium自动化识别验证码x,y坐标 命令move_to_element_with_offset报错:elementnotinteractable:[objectHTMLDivElement]hasnosizeandlocation由于>4.0是以中心点偏移,4.0是左上角偏移。卸载掉最新的seleniuim:pipuninstallselenium安装selenium4.0:pipinstalls......
  • selenium自动化测试-获取动态页面小说
    有的网站页面是动态加载的资源,使用bs4库只能获取静态页面内容,无法获取动态页面内容,通过selenium自动化测试工具可以获取动态页面内容。参考之前的"bs4库爬取小说工具"文章代码,稍微修改下,就可以转成获取动态页面小说工具。第一步:先确定目标网址先找到小说目录页面。网址首页:'ht......
  • 成功入选 2023 谷歌出海创业加速器,Tapdata 乘势远航Tapdata Connector 实用指南:如何将
    9月6日,2023Google开发者大会的收官之行于上海拉开帷幕。会间,官方正式公布了最新一期谷歌出海创业加速器入营名单,Tapdata成功入选:长期以来,Google开发者大会为开发者提供了一个独一无二的学习和合作机会,这是一场汇聚全球创新者的聚会,鼓励创新思维。从中能够深入了解最新的......
  • 大屏幕实时数据可视化解决方案?
    大屏幕实时数据可视化解决方案是一种将大量数据以直观并且易于理解的方式展示在大型显示屏上的技术方案。这种解决方案在很多领域都有广泛的应用,例如物流管理、生产监控、金融分析等。下面是一个详细介绍大屏幕实时数据可视化解决方案的示例。一、需求分析和目标设定在开始设计......
  • selenium自动化测试-登录网站用户
    昨天学习了selenium自动化测试工具的入门,知道了Selenium是用于自动化控制浏览器做各种操作,打开网页,点击按钮,输入表单等等。今天学习通过selenium自动化测试工具自动登录某网站用户操作。第一步:确定目标网址比如:天天基金网站登录页面"https://login.1234567.com.cn/login"第二......