SeleniumBase choose_file 上传文件时的处理-使用笔记(四)
自动化福音(爬虫、办公、测试等) SeleniumBase 使用笔记(四)
SeleniumBase choose_file 上传文件时的处理
我们知道 SeleniumBase
上传文件,可以直接使用 self.choose_file(selector, file_path, by="css selector",timeout=None)
方法
目录
常规情况上传
常规情况下,我们会有一个页面上直接找到<input type="file">
的输入框
# 常规情况处理很简单,直接对 input 用
self.choose_file('input[type="file"]', f'temp/upload_file/图片.jpg') # 上传
非常规情况上传
这里是指的是,需要点击上传元素后,才会显示出<input type="file">
的输入框,但是点击后,系统会弹出 文件选择框,如下图,只有点击上传后才会在整个body
中添加<input type="file">
的输入框
# 第1步,执行 JS 来禁用每个 <input type="file"> 元素的内部 click,使其被点击后,不会打开系统文件选择框
# 禁用方法1
self.execute_script("HTMLInputElement.prototype.click = function() {if(this.type !== 'file') HTMLElement.prototype.click.call(this);};")
# 禁用方法2
self.execute_script("""HTMLInputElement.prototype.click = function () {
if (this.type !== 'file') {
HTMLElement.prototype.click.call(this);
} else if (!this.parentNode) {
this.style.display = 'none';
this.ownerDocument.documentElement.appendChild(this);
this.addEventListener('change', () => this.remove());
}
}""")
# 第2步,点击上传元素
self.click('#files .upload-img')
# 第3步,上传
self.choose_file('input[type="file"]', f'temp/upload_file/图片.jpg') # 上传
Selenium Close File Picker Dialog
GitHub SeleniumBase
本文章的原文地址
GitHub主页
本文来自博客园作者:星尘的博客,转载请注明出处:https://www.cnblogs.com/yqbaowo/p/18309748