python+selenium做ui自动化测试用法必会_python+slenium ui自动化测试项目(1)

img
img

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

driver.find_element_by_id(“dl_an_submit”).submit()

size=driver.find_element_by_id(“kw”).size #返回百度输入框的宽高 text=driver.find_element_by_id(“cp”).text #返回百度页面底部备案信息

返回元素的属性值,可以是 id、name、type 或元素拥有的其它任意属性

attribute=driver.find_element_by_id(“kw”).get_attribute(‘type’) #返回元素的结果是否可见,返回结果为 True 或 False

result=driver.find_element_by_id(“kw”).is_displayed()

driver.quit() #退出

4.鼠标键盘事件

from selenium import webdriver #引入 Keys 类包

from selenium.webdriver.common.keys import Keys #引入 ActionChains 类

from selenium.webdriver.common.action_chains import ActionChains

… #鼠标事件 #定位到要操作的元素

right =driver.find_element_by_xpath(“xx”) #对定位到的元素执行鼠标右键操作

ActionChains(driver).context_click(right).perform() #对定位到的元素执行鼠标双击操作

ActionChains(driver).double_click(right).perform() #对定位到的元素执行鼠标移动到上面的操作

ActionChains(driver).move_to_element(right).perform() #对定位到的元素执行鼠标左键按下的操作

ActionChains(driver).click_and_hold(right).perform() #定位元素的原位置

element = driver.find_element_by_name(“xxx”) #定位元素要移动到的目标位置

target = driver.find_element_by_name(“xxx”) #执行元素的移动操作

ActionChains(driver).drag_and_drop(element, target).perform() #键盘事件 #删除多输入的一个 值

driver.find_element_by_id(“kw”).send_keys(Keys.BACK_SPACE) #输入空格键+“教程”

driver.find_element_by_id(“kw”).send_keys(Keys.SPACE)

driver.find_element_by_id(“kw”).send_keys(u"教程") #ctrl+x 剪切输入框内容

driver.find_element_by_id(“kw”).send_keys(Keys.CONTROL,‘x’) #其余的键盘操作类似

5.等待时间

coding=utf-8
from selenium import webdriver #导入 WebDriverWait 包

from selenium.webdriver.support.ui import WebDriverWait

from selenium.webdriver.support import expected_conditions as EC #导入 time 包

import time

driver = webdriver.Chrome()

driver.get(“http://www.baidu.com”) #WebDriverWait()方法使用,显示等待,WebDriverWait(driver,超时时长,调用频率,忽略异常).until(可执行方法,超时返回的信息),这里可以调用EC来实现可执行方法

is_disappeared = WebDriverWait(driver, 30, 1, (ElementNotVisibleException)).until_not(lambda x: x.find_element_by_id(“kw”).is_displayed()) #until(method, message=’ ’),调用该方法提供的驱动程序作为一个参数,直到返回值不为 False

element.send_keys(“selenium”) #添加智能等待,隐时等待

driver.implicitly_wait(30)

driver.find_element_by_id(“su”).click() #添加固定休眠时间,强制等待

time.sleep(5)

driver.quit()

6.组对象定位及层级定位

7.多窗口处理

coding=utf-8

from selenium import webdriver import time

driver = webdriver.Chrome()

driver.get(“百度一下,你就知道”) #获得当前窗口

nowhandle=driver.current_window_handle #打开注册新窗口

driver.find_element_by_name(“tj_reg”).click()

allhandles=driver.window_handles #循环判断窗口是否为当前窗口

for handle in allhandles: if handle != nowhandle:

driver.switch_to_window(handle) print ‘now register window!’

切换到邮箱注册标签

driver.find_element_by_id(“mailRegTab”).click()

time.sleep(5)

driver.close() #回到原先的窗口

driver.switch_to_window(nowhandle)

driver.find_element_by_id(“kw”).send_keys(u"注册成功!")

time.sleep(3) #ifrome处理 #这里会自动识别id,name,如果没有则可以将元素通过选择器找到,然后输入该元素即可

driver.switch_to_frame(“f1”)

element = driver.find_element_by_id(“kw”)

driver.switch_to_frame(element)

driver.quit()

8.提示窗口处理

coding=utf-8

from selenium import webdriver import time

driver = webdriver.Chrome()

driver.get(“百度一下,你就知道”) #点击打开搜索设置

driver.find_element_by_name(“tj_setting”).click()

driver.find_element_by_id(“SL_1”).click() #点击保存设置

driver.find_element_by_xpath(“//div[@id=‘gxszButton’]/input”).click() #获取网页上的警告信息

alert=driver.switch_to_alert() #接收警告信息

alert.accept() #取消对话框(如果有的话)

alert.dismiss() #输入值(如果有的话)

alert.send_keys(“xxx”)

9.控制浏览器滚动条

这个运用之前提示的jq语句即可实现。

10.cookie处理,主要用途在于处理验证码问题

coding=utf-8

from selenium import webdriver import time

driver = webdriver.Chrome()

driver.get(“http://www.youdao.com”) #向 cookie 的 name 和 value 添加会话信息。

driver.add_cookie({‘name’:‘key-aaaaaaa’, ‘value’:‘value-bbbb’}) #遍历 cookies 中的 name 和 value 信息打印,当然还有上面添加的信息

for cookie in driver.get_cookies(): print “%s -> %s” % (cookie[‘name’], cookie[‘value’]) ##### 下面可以通过两种方式删除 cookie ##### # 删除一个特定的 cookie

driver.delete_cookie(“CookieName”) # 删除所有 cookie

driver.delete_all_cookies()

time.sleep(2)

driver.close()

四、小结

在熟悉了selenium常见的API基本操作后,这里便可以开展实际测试用例的设计了,一个良好的自动化测试用例起码符合一下六个条件:

1.一个脚本是一个完整的场景,从用户登陆操作到用户退出系统关闭浏览器。

2.一个脚本脚本只验证一个功能点,不要试图用户登陆系统后把所有的功能都进行验证再退出系统。

3.尽量只做功能中正向逻辑的验证,不要考虑太多逆向逻辑的验证,逆向逻辑的情况很多(例如手号输错有很多种情况),验证一方面比较复杂,需要编写大量的脚本,另一方面自动化脚本本身比较脆弱,很多非正常的逻辑的验证能力不强。(我们尽量遵循用户正常使用原则编写脚本即可)

4.脚本之间不要产生关联性,也就是说编写的每一个脚本都是独立的,不能依赖或影响其他脚本。

img
img

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

llGvEUei-1715279864128)]

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

  • 9
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值