• 13
  • 13
分享

  前言

  在做web自动化的时候,对于一些弹出的提示信息的字体颜色,当然一般都是红色的。那么当我们跑自动化时候,如何判断提示新的字体颜色是否我们预期的结果呢?

  个人思路

  安静这里先介绍下自己的思路:

  ·先获取到提示信息的元素坐标点;

  ·想办法获取到前端中该元素的颜色属性值;

  ·最后通过获取的属性值与我们的预期值进行比较。

  猛然一看该思路,啥用没有。但是我们可以先翻阅selenium中的官方文档,看看官方文档中有没有一些帮助内容。

  安静从官方文档中找到了:

def value_of_css_property(self, property_name):
    """The value of a CSS property."""
    return self._execute(Command.GET_ELEMENT_VALUE_OF_CSS_PROPERTY, {
        'propertyName': property_name})['value']

  该方法意思就是可以获取到元素的CSS的属性值。这不就解决了获取元素的颜色属性值了吗?

  实战演示

  安静这里随便找个网站先查看下错误提示信息的元素坐标,以及错误提示信息的字体颜色内容。

2-1.png

  通过代码的形式查看下CSS的属性值是否和我们的预期一样。

from selenium import webdriver
import time
driver = webdriver.Chrome()
# 随便找了个经常逛的网站。
driver.get('https://passport.juhe.cn/cas/login')
# 输入账号名
driver.find_element_by_name('username').send_keys('12345')
# 输入密码
driver.find_element_by_id('password-o').send_keys('1111111')
# 点击登录
driver.find_element_by_id('loginBtn').click()
time.sleep(1)
# 获取提示字体信息
xx = driver.find_element_by_xpath('//*[@class="sysError"]').text
print(xx)
aa = driver.find_element_by_xpath('//*[@class="sysError"]')
# 获取该元素的CSS属性值
print(aa.value_of_css_property('color'))

  通过执行后发现获取的CSS属性值基本上和我们在web页面上的一样,为啥说基本上呢,因为这web页面CSS区域显示的是rgba(254 ,81 , 74),没有1。

2-2.png

  安静也不确定对不对,于是再次查看selenium中的官方文档,发现了selenium中有对字体颜色的标识内容。

2-3.png

  从文档中可以看出来,可以对其颜色的格式内容进行转换,这样我们就可以来判断是否字体颜色是否正确。

from selenium import webdriver
import time
from selenium.webdriver.support.color import Color
driver = webdriver.Chrome()
# 随便找了个经常逛的网站。
driver.get('https://passport.juhe.cn/cas/login')
# 输入账号名
driver.find_element_by_name('username').send_keys('12345')
# 输入密码
driver.find_element_by_id('password-o').send_keys('1111111')
# 点击登录
driver.find_element_by_id('loginBtn').click()
time.sleep(1)
# 获取提示字体信息
xx = driver.find_element_by_xpath('//*[@class="sysError"]').text
print(xx)
aa = driver.find_element_by_xpath('//*[@class="sysError"]')
# 获取该元素的CSS属性值
print(aa.value_of_css_property('color'))
# 查看#fe514a格式的rgb格式
print(Color.from_string('#fe514a').rgba)
# 查看颜色的hex格式。
print(Color.from_string('rgba(254, 81, 74, 1)').hex)

  通过执行后发现,颜色内容是一致的。

2-4.png

  PS:这里的rgba和hex表示颜色的标识,其实hex是十六进制。

  总结

  安静简单的通过一个案例,演示了如何进行判断页面中的字体颜色。

  在实践中也遇到了一些困难,通过查阅官方文档进行解决了,也学习了两个方法,一个是获取CSS属性,以及颜色的转换支持。所以说遇到问题不要着急,看看官方文档,说不定就有意外的收获。

  好了,我是安静,感谢您的阅读。



作者:测试安静   

来源:51Testing软件测试网原创

  • 【留下美好印记】
    赞赏支持
登录 后发表评论
+ 关注

热门文章

    最新讲堂

      • 推荐阅读
      • 换一换
          • 前几天过了两个电话面试,其中有一个问题:给你一支签字笔,你要如何测试它。大白如我,后来才知道,这是一个软测的面试老题目了,当时稀里糊涂答了一通,后来才回味过来,其实HR是想看我的测试思想之类的的,虽然过了,但是还是想重新回想并补充。首先回想一下当天我提到的方面:形状、颜色、舒适度、笔筒开合方式、笔芯替换方式、出墨的快慢、笔头的粗细,笔芯的颜色、笔芯的寿命、还有材质是否容易损坏。面试的姐姐提示了边界测试,我又补充了高温对笔壳的影响和压力的测试,包括握笔的压力对笔壳的影响和笔尖的压力对出墨的影响。姐姐:压力如何测试?我着重回答了握笔的压力的影响,还说了什么对手型的影响,还谈到了建模==,现在看来真...
            0 0 1251
            分享
          •       前言:想知道jmeter压测的原理是什么,得先知道性能测试的核心三原则:基于协议,多线程,场景模拟!      基于协议:基于应用层和传输层的各种协议。比如http,udp,ftp,tcp等      多线程:通过进程下启动线程的方式来模拟并发用户实现负载      场景模拟:通过模拟用户使用的真实场景,来提高性能测试的准确性      jmeter压测的核心原理就是:基于各种协议,通过多线程的...
            0 0 2242
            分享
          •   需要提前说明下的是到目前为止,笔者还没有达到一个合格的测试架构师的标准,但是应该是已经走在这条路上了,所以想通过自己的成长经历给其他想朝这个方向发展的同学有点启发,同时也期望能够抛砖引玉。       先说说笔者的初始条件(应该很多人看了都会有更多的自信吧):一个普通本科学校,虽然是科班出身,但是除了大学的课程设计以及其他需要写代码的功课外,基本上没有去主动写过代码,更别说去研究linux内核等等高大上的事情了,反正基础是很差的(你别问我大学都干嘛去了,我也不知道,反正兼职,泡妞,打球,游戏,图书馆,考研等全都干过,就是没有去专研过代码),所以,毕业后程序猿的...
            14 14 2726
            分享
          •   bug是测试工作的主要产物,同时也是开发和测试产生矛盾的原因之一。有的同学会觉得测试过程中发现的一些问题直接当面找开发解决了就好了,减少沟通成本,提高修复效率,反正提不提都不影响项目进度;而有的测试则是无论大小,甚至还未和开发沟通确认这个是否有效缺陷,就提上jira了。其实有效的bug对个人、团队、项目都是有非常重要的作用的。  1、bug有助于衡量项目质量。测试组长需要通过缺陷统计和分析,识别项目当前风险,及时调整测试策略。在项目进行中,其他团队成员要了解当前项目质量情况,也需要依赖bug面板。项目进行总结时,可以从bug列表中分析出项目在需求、开发、测试阶段存在的问题,总结项目经验,避...
            0 0 2549
            分享
          •   前端自动化测试框架:如何选择最适合你的方案  前端自动化测试是指使用代码或工具来模拟用户在浏览器上的操作,以检验网页或应用程序的功能和性能是否符合预期。前端自动化测试可以提高开发效率,减少人工错误,保证软件质量和用户体验。  但是,在众多的前端自动化测试框架中,如何选择最适合你的方案呢?不同的框架有不同的实现方式,优缺点和适用场景。本文将介绍目前几种主流的前端自动化测试框架:selenium, cypress, taiko 和 testcafe,并比较它们之间的异同点。  selenium: 基于webdriver 的跨平台、跨语言、跨浏览器解决方案  selenium 是一个开源项目,它...
            0 0 57
            分享
      • 51testing软件测试圈微信