51Testing软件测试论坛
标题:
UI 自动化高亮元素与截图小工具
[打印本页]
作者:
巴黎的灯光下
时间:
2017-6-28 12:09
标题:
UI 自动化高亮元素与截图小工具
做UI自动化时,写了2个方法,方便清晰辨识定位的元素and 保留定位证据,与大家分享下。
高亮元素
def highlight(func):
def apply_style(element):
# 实现的方式很简单,就是定位到元素后,执行js样式
driver.execute_script("arguments[0].style.border='6px solid red'", element)
@wraps(func)
def wrapper(self, *args, **kwargs):
element = func(self, *args, **kwargs)
apply_style(element)
return element
return wrapper
复制代码
截图定位的元素
def screenshot(func):
def screen_shot(screen_name):
driver.save_screenshot(screen_name)
@wraps(func)
def wrapper(self, *args, **kwargs):
element = func(self, *args, **kwargs)
screen_shot(str(args[-1]) + '.jpg') # 默认是以定位元素属性为文件名
return element
return wrapper
复制代码
使用
class Action(object):
def __init__(self, driver):
self.driver = driver
@screenshot
@highlight
def find_element(self, *loc):
try:
WebDriverWait(self.driver, 15).until(lambda driver: driver.find_element(*loc).is_displayed())
return self.driver.find_element(*loc)
except Exception as e:
return e
复制代码
测试(体现百度价值的时候到了.)
driver = webdriver.Chrome()
driver.get('http://www.baidu.com')
action = Action(driver)
action.find_element(By.ID, 'su')
time.sleep(3)
driver.quit()
复制代码
效果图(su.jpg)
如果没封装一层定位方法,可以使用如下方式,稍微和上面有些不同,该方法会在定位前后截图,可以用来对比。
def highlight(element, element_name=None, debug=True):
'''
debug 参数用来开关截图功能
'''
# 高亮元素
def apply_style():
driver.execute_script("arguments[0].style.border='6px solid red'", element)
# 截图
def screen_shot(screen_name):
driver.save_screenshot(screen_name)
if debug:
try:
screen_shot(str(element_name) + '_before.jpg')
apply_style()
screen_shot(str(element_name) + '_after.jpg')
except Exception as e:
return e
apply_style()
# 使用也很简单
element = driver.find_element(By.ID, 'kw')
highlight(element, 'kw')
复制代码
还有可以改进的地方,就这些,希望对你有帮助。O(∩_∩)O
作者:
草帽路飞UU
时间:
2017-6-28 16:06
谢谢分享,特别是高亮元素那里
作者:
乐哈哈yoyo
时间:
2017-6-28 16:06
优秀就来自于每一天的改进和创新,值得鼓励和肯定
作者:
八戒你干嘛
时间:
2017-6-28 16:07
实际测试中应该是要能高亮定位失败的元素才真的有用吧,既然元素已经定位到高亮有何意义呢
欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/)
Powered by Discuz! X3.2