selenium 获得页面cookie信息

本文介绍如何使用Selenium库在自动化测试中管理和操作浏览器的Cookie,包括添加、删除和获取Cookie等方法,并展示了如何获取JSESSIONID用于后续的接口测试。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

我们在做某些接口测试的时候,服务器接受客户端请求的时候要求返回客户端相应的一些cookie信息,否则不接受请求。比如客户端的接口请求要求带上客户端的jsessionid。
因为我们的测试框架是基于selenium的,为了跟同一个平台相融合。我查询了相关资料,在selenium的源码中发现Options类里就有对cookie进行相关操作的方法。
向浏览器增加cookie:

     def add_cookie(opts = {})
        raise ArgumentError, "name is required" unless opts[:name]
        raise ArgumentError, "value is required" unless opts[:value]

        opts[:path] ||= "/"
        opts[:secure] ||= false

        if obj = opts.delete(:expires)
          opts[:expiry] = seconds_from(obj).to_i
        end

        @bridge.addCookie opts
      end

删除cookie:

      def delete_cookie(name)
        @bridge.deleteCookie name
      end

      def delete_all_cookies
        @bridge.deleteAllCookies
      end

获取cookie:

      def all_cookies
        @bridge.getAllCookies.map do |cookie|
          {
            :name    => cookie["name"],
            :value   => cookie["value"],
            :path    => cookie["path"],
            :domain  => cookie["domain"] && strip_port(cookie["domain"]),
            :expires => cookie["expiry"] && datetime_at(cookie['expiry']),
            :secure  => cookie["secure"]
          }
        end
      end

而all_cookies正是我想要的方法。于是写了一个方法来获取页面cookie。

    def get_jsessionid_from_web
      Helper::staff_side_login_for_api_testing  #提前写好的为API测试用的登陆方法
      icookies=$driver.manage.all_cookies    # 通过all_cookies来获取页面cookie
      #循环判断得到jsessionid的值
      icookies.each do |cooki|
        return cooki[:value]  if cooki[:name] == 'JSESSIONID'
      end
    end

这样通过上面的方法获得jsessionid,然后通过get加上该id值发送接口请求

RestClient.get(url,{"Cookie" =>"JSESSIONID=#{id}"})

RestClient.get是ruby的Http方法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值