Selenium+Python 下载文件与上传文件
目录
本文记录了我做的使用Selenium编写的自动化测试脚本,功能是从网页下载文件,并将下载的文件上传至另一页面。同时记录了一些编写过程中遇到的问题及解决方法
下载文件功能
谷歌浏览器下载设置
进入设置页面->高级,勾选下载内容的【下载前询问每个文件的保存位置】为勾选,以确保后面能够更改下载文件的名称以及保存地址。
切换iframe框架
在定位导出按钮时出现webdriver在处理定位元素报错,提示没有这样的元素的问题。查询后发现页面使用了frame技术。网页划分成多个子页面。webdriver默认查找的元素都是Top window这层。导出元素内嵌在了frame内部,需要先使用switch to语句,切换到frame内部,然后去操作元素,操作完了之后,需要switch out到default区域,也就是Top window。
上图红框位置标签后的内容均在iframe框架中,通过标签的name属性,定位此标签,代码如下
// An highlighted block
driver.switch_to.frame("671a7d8e-d2a0-43fd-8b23-0901a7b8f687")
定位元素进行操作后,需要回到Top window
// An highlighted block
driver.switch_to.default_content()
鼠标悬浮元素定位
使用悬停实现鼠标放置在导出元素上,弹出选项
鼠标悬停 move_to_element()
// An highlighted block
mouse = driver.find_element_by_xpath('//*[@class="bi-show bi-abs"]/div[2]/div/div[2]/div')
# a = driver.find_elements_by_xpath('//body/*[@id="wrapper"]/div[2]/div/div[2]/div')
time.sleep(1)
ActionChains(driver).move_to_element(mouse).perform()
try:
driver.find_element_by_xpath("//*[@id='wrapper']/div[2]/div/div[2]/div[2]/div/div/div/div[2]").