Web自动化注意事项

跟我发布的App自动化篇章,也是一样的首先就是如何去进行我们元素定位,因为自动化就是模拟手工测试的流程去进行的,所以需要测试那个功能点,就先定位都该元素再去做对应的操作,详情如下

常用web元素定位如下:

1.使用xpth定位,class、id、name(其中id和name一般是在页面上唯一的)写法如下

//*[@id="courseInfo"]

- 使用xpth的绝对定位(这种不建议使用,路径太长,定位时间过长

//*[@id="courseInfo"]/div[2]/div[2]/div[1]/div/div/span/div/span/input

- 使用层级定位 (原理:先定位上级然后使用绝对路径去定位)

//*[@class="site-layout-content"]//div[5]

2.使用CSS_SELECTOR 去定位,可以观察你想要定位的元素有什么唯一的值,可以直接拿过来进行定位,CSS_SELECTOR相对于xpth 定位速度更快,因为xpth是在整个dom树里面去进行查找,写法如下:

[class='desu']

3.使用LINK_TEXT 有些插入了href 链接的文本可以直接拿取文本,进行定位的,写法很简便

self.driver.find_element_by_link_text("图片")

掌握以上的定位方法基本上就可以应对工作上的绝大部份的工作了,当然定位不仅仅只有上面的这几种哈,还有很多注意:(selenium和appium在做自动化的时候,app是定位整个activity页面,而selenium是查找整个页面

下面是我遇到的坑点和我如何去解决的方法:

坑点1

- 在做web自动化的时候,我们会遇到点击某项会弹出到一个新的页面,这个时候,你不做任何处理去定位的话,是定位不到的。需要去做一个窗口切换的 操作

windows = self.driver.window_handles 
# 切换 windows 为列表里的最后一个
self.driver.switch_to.window(windows[-1])

坑点2

- 如果有frame标签的话,你也要先切换到你想要定位的frame标签里面去,才可以定位成功

 self.driver.switch_to_frame("iframeResult")

坑点3

- 在定位下拉框的时候,这个时候你可以使用chrome的sources 先点击下拉框,让下拉框选项打开,然后再使用快捷键 ctrl+\ 或者 F8 对应到你的mac电脑也是一样的 command + \ 然后在点击elements 选项里面 去定位就可以了,这也是一个小技巧,本人也踩坑了好久对于这个小点

坑点4

- 断言的时候去获取属性值去断言,使用get_attribute ,先定位预期后结果展现在页面上的元素,然后再去执行测试用例,用实际结果和预期的进行对比就可以了

# 先进行定位元素
ele = self.find(By.CSS_SELECTOR,"[data-text='true']")
# 然后在去获取元素的属性值
ele_introduce = ele.get_attribute('data-text')

坑点5

- 如何去上传图片 ,现在很多网页大多数都有这个功能,遇到了这个不可能说不去进行测试的

一般带有input标签, 我们可以直接使用定位先将元素在页面上定位到,然后再去使用send_keys就可以了,send_keys里面填写图片的全路径,如下

ps(find_and_send_keys 这个是我自己封装的一个方法,大家看的时候使用正常的写法就可以了)

self.find_and_send_keys(By.XPATH,'//*[@id="courseInfo"]/div[2]/div[2]/div[1]/div/div/span/div/span/input').send_keys( r"/Users/chenhao/PycharmProjects/graduate_design_project/public_class_web/usr_resource/upload_pictures.JPG")

坑点6 

- 显示等待的使用方法,写法有很多,我常用的写法如下,我们在进行自动化的时候,强制等待不建议使用,只是在进行代码调试的时候使用,一般使用显示等待和隐式等待

# 下面第一行代码
locator = (By.XPATH,"//*[@class='ant-modal-footer']//button[2]")

# 下面第二行代码
WebDriverWait(self.driver,3).until(EC.visibility_of_element_located(locator))

# 下面第三行代码
self.find_and_click(By.XPATH,"//*[@class='ant-modal-footer']//button[2]")
  • 第一行代码:定义一个变量 locator = () 括号里面除了://*[@class='ant-modal-footer']//button[2] 其他的都是固定写法,你根据自己定位的元素来  
  • 第二行代码:visibility_of_element_located 意思是:直到某个元素出现
  • 第三行代码:然后在跟你想对这个元素做的操作,就可以了
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值