Web自动化,如何判断字体颜色?

发表于:2021-7-05 09:23

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:测试安静    来源:51Testing软件测试网原创

  前言
  在做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的属性值。这不就解决了获取元素的颜色属性值了吗?

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

  通过代码的形式查看下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。

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

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

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

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

  总结
  安静简单的通过一个案例,演示了如何进行判断页面中的字体颜色。
  在实践中也遇到了一些困难,通过查阅官方文档进行解决了,也学习了两个方法,一个是获取CSS属性,以及颜色的转换支持。所以说遇到问题不要着急,看看官方文档,说不定就有意外的收获。
  好了,我是安静,感谢您的阅读。

      版权声明:本文出自51Testing会员投稿,51Testing软件测试网及相关内容提供者拥有内容的全部版权,未经明确的书面许可,任何人或单位不得对本网站内容复制、转载或进行镜像,否则将追究法律责任。
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号