selenium上传本地文件,selenium上传文件弹出窗口如何处理
本文主要介绍如何在Selenium浏览器自动化中上传文件。通过示例代码进行了非常详细的介绍,对大家的学习或工作有一定的参考价值。有需要的朋友就跟着下面的边肖学习吧。
目录
1.输入元素上传文件2。输入元素隐藏3。文件选择对话框4。使用pywinauto上传文件5。pyautogui键盘6。并发问题Selenium封装了现成的文件上传操作。但是随着现代前端框架的发展,上传文件的方式越来越多。但是上传文件有一些控件,做自动控制会比较复杂。本文主要讨论如何在复杂情况下通过自动化完成文件上传。
1. input 元素上传文件
如果页面需要文件上传,那么在大多数情况下,可以在页面源代码中找到input元素。
输入类型=文件名称=文件名
如果可以在页面中直接看到这个input元素,那么可以通过selenium的send_keys方法上传文件,本地文件的路径可以传入参数中。
driver . get( https://test pages . heroku app.com/styled/file-upload-test . html )
el=driver.find_element(id , fileinput )
El . send _ keys(/path/of/file . png )
2. input 元素隐藏
通过修改元素属性来更改隐藏的元素属性。
el=driver.find_element(xpath ,//input[@type=file])
driver . execute _ script( arguments[0]. style . visibility=\ \ visible \ \ ,el)
El . send _ keys(r c : \ \ Users \ \ muji \ \ Desktop \ \ avatar . png )
比如百度的图片搜索就可以这样实现。
driver.get(http://www.baidu.com )
driver.find_element(css选择器,)。soutu-BTN’)。单击()
时间.睡眠(3)
el=driver.find_element(xpath ,//input[@type=file])
driver . execute _ script( arguments[0]. style . visibility=\ \ visible \ \ ,el)
El . send _ keys(r c : \ \ Users \ \ muji \ \ Desktop \ \ avatar . png )
3. 文件选择对话框
对于某些元素,直接通过selenium自己的send_keys方法上传文件不会成功。如果不想过多分析输入元素,更直接的方法是使用文件上传对话框来处理。
一般来说,如果你需要上传一个文件,那么当你点击这个元素时,会出现一个文件上传对话框,要求你选择一个文件,点击确定。这个对话框属于系统,所以selenium不能直接控制。我们可以使用系统的自动化工具或者直接调用键盘来操作这个对话框。
在操作对话框之前,首先我们通过selenium点击文件上传的元素。
el=driver.find_element(id , fileinput )
动作链(驱动程序)。单击(el)。执行()
input元素不能被点击,所以不能使用元素的el.click()方法。您需要使用ActionChains下的click方法。两者的区别在于元素的el.click方法更严格,它会检查元素是否可见或可点击。点击事件完全生效后,将执行以下操作。如果不满足这些条件,可能会报告错误。Action下的click方法就粗暴多了。它几乎检测不到元素,直接在元素上移动鼠标来执行点击操作。至于点击是否生效,根本不重要。
4. 使用 pywinauto 上传文件
Pywinauto是Windows系统下的一个自动化工具,可以直接得到Windows系统下的子弹框,所以当文件上传窗口出现时,我们可以用这个工具输入文件的路径,然后点击打开按钮。
从pywinauto导入桌面
app=桌面()
Dialog=app[ open] #根据名字找到弹出窗口
对话框[编辑]。type _ keys (/path/of/file.md) #在输入框中输入一个值
对话框[按钮]。单击()
另一个系统自动化工具叫做pyautogui。这个工具最大的特点是使用坐标系定位元素,可以很容易的跨平台。无论你是Windows、mac还是Linux,都可以用这个工具实现自动化。
但是这个工具目前不支持中文输入,所以我们需要使用剪贴板来实现中文输入。首先我们把对应的中文复制到剪贴板上,然后通过ctrl v热键粘贴到文件路径输入框中。
5. pyautogui
导入pyperclip
pyperclip . copy( d : \ \ \ \ \ user . html )
pyautogui.hotkey(ctrl , v )
pyautogui.press(enter ,presses=2)
键盘
keyboard . write( c : \ \ \ \ Users \ \ \ \ muji \ \ \ \ Desktop \ \ \ \ avatar . png )
时间.睡眠(1)
键盘。按(回车)
注意:百度已经禁用了图片搜索的爬虫,所以上传文件时会提示“图片上传失败,请重新上传”。
6. 并发问题
通过系统窗口上传文件简单粗暴,但是当你的程序需要并发执行时,这种方式上传文件比较麻烦。如果您的程序需要并发执行,最好通过控制input元素并使用send_keys方法来上传文件。
关于如何使用Selenium browser automation上传文件的文章到此结束。关于使用Selenium浏览器自动化上传文件的更多信息,请搜索流行的IT软件开发工作室以前的文章或继续浏览下面的相关文章。希望大家以后多多支持热门IT软件开发工作室!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。