在做web自动化的时候,我碰到一些input 类型的radio (单选框),虽然也是联动的,但是我无法根据页面元素判断选中和非选中,也无法通过is_selected()方法判断,所以想到用元素截屏后对比两张图片是否一样。
附上元素截屏代码:
def find_element(self,loc): logger.info("正在准备查找{}元素".format(loc)) try: web_object=self.driver.find_element(*loc) logger.info("{}元素查找成功".format(loc)) return web_object except: logger.exception("{}元素查找失败") def get_ele_sreenshot(self,loc,filename): logger.info("正在准备对{}元素对象进行截屏操作") try: self.find_element(loc).screenshot(os.path.join(ele_screenshot_path,filename)) logger.info("{}元素对象截屏成功,并命名为{}".format(loc,filename)) except: logger.exception("{}元素对象截屏失败".format(loc))
附上两张图片对比代码(需要安装第三方模块openc):
def query_photo(self,filename_one,filename_other): logger.info("正在准备判断这张图片{}和这张图片{}是否一样".format(filename_one,filename_other)) try: image1 = cv2.imread(os.path.join(ele_screenshot_path,filename_one)) image2 = cv2.imread(os.path.join(ele_screenshot_path,filename_other)) difference = cv2.subtract(image1, image2) result = not np.any(difference) if result == True: logger.info("两张图片一样") return True else: logger.info("两张图片不一样") return False except: logger.exception("判断两张图片是否一样失败")