selenium+python自动化测试脚本编写难点:关于上传图片、下拉框、时间选择框

这周写selenium+python编写自动化用例遇到的难点
首先是安装好selenium和python,不赘述
难点1:关于上传图片
自动化测试上传图片,借用了autoIt这个工具,编写脚本,然后把脚本转换成.exe,在代码中再调用这个 .exe应用程序来自动上传图片
脚本如下
在这里插入图片描述

然后用这个生成.exe
在这里插入图片描述
在selenium脚本里使用os.system来调用这个应用程序,要先点击上传图片那个div
在这里插入图片描述
出现这个的时候
在这里插入图片描述

再调用.exe来自动上传图片

代码如下:
import os
#点击上传授权证明
driver.find_element_by_xpath("//form/div[6]/div[2]/div/span/div/div/div[2]/span/div[2]/span/div").click()
#调用autoit上传图片
os.system(“D:\uploadlogo.exe”)

难点2:下拉框选择
因为我们前端使用的是react框架来编写的代码,所以遇到要定位下拉框的时候,刚开始无从下手,在百度上搜了很多解决办法,都不可行,定位不到,因为用开发者模式是看不到select组件的
最后用seleniumIDE录屏的时候发现了另外一个办法,那就是用contains来定位
首先是先点击下拉框使它展开,然后再用contains来定位要选择的哪一项
如图选择订购年份
在这里插入图片描述
首先定位请选择这个框,点击,使它出现下拉的选择
driver.find_element_by_xpath("//form/div[9]/div[2]/div/span/div/div/div/div").click()
然后再选择订购年份,这里选择1年
driver.find_element_by_xpath("//li[contains(.,‘1’)]").click()

再比如创建端口号的时候,选择所属省份
在这里插入图片描述
#下拉选择所属省份
driver.find_element_by_xpath("/html[1]/body[1]/div[1]/div[1]/section[1]/section[1]/main[1]/div[2]/div[1]/div[1]/div[1]/div[2]/div[1]/form[1]/div[5]/div[2]/div[1]/span[1]/div[1]/div[1]/div[1]/div[1]").click()
#点击选择全国
driver.find_element_by_xpath("//li[contains(.,‘全国’)]").click()

难点3:时间选择框
在我们这个后台系统里,有好几个地方要选择起始时间,这又是一个要攻克的地方,因为原始定位法又定位不到,我百度过要清除readonly模式,再send_keys,我在脚本里试过这个办法,可以清除readonly属性,但是没法把时间输入到框里,所以又找寻的另外办法,清除属性再输入这个方法在另外一篇日记里有写到
现在的方法是直接用定位法
在这里插入图片描述
driver.find_element_by_xpath("//span[@id=‘validUntil’]//input[@placeholder=‘请选择日期’]").click()
然后再定位要输入的时间的位置
比如要选择明年的9月20号9月30号,定位如下
在这里插入图片描述
driver.find_element_by_xpath("//tr[6]/td/div").click()

如果要选择下个月或下一年
在这里插入图片描述
点击下一年,这个图标的元素定位如下:
在这里插入图片描述
driver.find_element_by_css_selector(".ant-calendar-next-year-btn").click()
再选择9月20号,代码定位如下
在这里插入图片描述
time.sleep(5)
driver.find_element_by_xpath("//tr[3]/td[7]/div").click()

脚本代码如下

在这里插入图片描述
注意:我踩过一个坑,就是在点击之后弹出另外一个框的时候,这时一定要设置等待时间
time.sleep(时间秒)
不然会报错

猜你喜欢

转载自blog.csdn.net/shenshenruoxi/article/details/101053005