selenium 元素标红高亮的两种实现方式

一、使用js将元素属性修改

这也是网上大部分的实现方式,但有时候会有点小问题,代码如下:

  1. 只写其实某一段函数
  2. ......
  3.  
  4. def apply_style(self, element):
  5. self.driver.execute_script("arguments[0].setAttribute('style', arguments[1]);", element)
  6.  
  7. def set_xxx(self,element):
  8. original_style = element.get_attribute('style')
  9. self.apply_style(element, "background:green; border:2px solid red;")
  10. screen_shot = self.driver.get_screenshot_as_png() #比如这里截图动作
  11. self.apply_style(element, original_style) # 截图完了还原元素属性

二、比较复杂了,但相对稳定点

基本思路是:先截图,然后再拿到元素的位置,再使用pillow模块对图进行处理

拿图的坐标,之前我写过一个文章中有说明:

  1. 先将图存下,然后读取
  2. img = Image.open(BytesIO(png_data))
  3. brush = ImageDraw.Draw(img)
  4. imgelement = driver.find_element_by_xpath('//img[@src="rand!loginRand.action"]')
  5. location = imgelement.location #获取元素x,y轴坐标
  6. size=imgelement.size #获取元素的长宽
  7. blank_height = 150
  8.  
  9. rect = (0, blank_height, location.width, size.height)
  10. canvas = Image.new('RGB', (width, height), (255, 255, 255))
  11. out_data = BytesIO()
  12. canvas.save(out_data, format('PNG'))

posted on 2022-08-02 18:06  帅胡  阅读(197)  评论(0编辑  收藏  举报

导航