selenium自动化之Headless模式下上传图片

headless mode,无头模式。Headless模式是系统的一种配置模式。在该模式下,系统缺少了显示设备、键盘或鼠标。对于需要在无头模式下运行的项目,selenium的send_keys、win弹窗、或者借助第三方工具Autolt等传统方式并不能满足上传图片/文件的需求。此时需要借助JS修改页面属性进行上传。

有些上传图片的元素隐藏了input标签的属性,此时若用send_keys方法直接上传的话selenium会报错,如图所示,下面上传图片的元素隐藏了一个Upload按钮:

可以看到input标签的上级div标签存在一个style=display:none的属性,此时更改style属性的值,即可将upload按钮显示出来:

此时再用selenium的send_keys方法即可正常上传图片此方法适用于headless模式下上传图片的情况,但仅限于标签名为input,type='file'属性的文件上传表单

示例代码如下:

js='var q=document.evaluate("{}", document).iterateNext();q.{} = {};'.format("//form[@class='el-form el-form--label-top']//div[@class='upload-box']/div[1]//button[@class='el-button el-button--default']/../..",'style.display','\"block\"') #更改input上级标签div的style属性。'//form[@class='el-form el-form--label-top']//div[@class='upload-box']/div[1]//button[@class='el-button el-button--default']/../..'为需要更改的属性的标签定位;'style.display'为需要更改的属性;'\"block\"'为更改后的值
driver.execute_script(js) #执行js
driver.find_element_by_css_selector('.el-upload__input').send_kyes('test.jpg')#定位input标签,上传图片

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值