基于selenium的自动化测试脚本编写-python

基于selenium的自动化测试脚本编写

1 浏览器操作

1.1 启动浏览器并打开网页

from selenium import webdriver

driver = webdriver.Chrome() #打开浏览器
driver.get("http://www.baidu.com") #访问url
driver.maximize_window() #最大化窗口

**ps.**webdriver会自动等待直到页面加载完成,但是如果页面采用了AJAX来更新的话,webdriver不能准确的判断加载完成的时间,这就会导致异常。

如果需要等待页面完全加载完成,请参考后续2.1 等待章节

1.2 拖拽操作

这里指将一个页面元素移动到指定位置

element = driver.find_element_by_name("source")
target = driver.find_element_by_name("target")

from selenium.webdriver import ActionChains
action_chains = ActionChains(driver)
action_chains.drag_and_drop(element, target).perform()

1.3 弹窗处理

alert = driver.switch_to_alert()

返回当前打开的alert对象,确定,取消或者读取这个对象的操作等同于直接操作弹窗。

1.4 后退前进关闭

driver.forward()
driver.back()
driver.close()
driver.refresh()

1.5 cookies操作

driver.get("http://www.example.com")

#添加cookies
cookie = {‘name’ : ‘foo’, ‘value’ : ‘bar’}
driver.add_cookie(cookie)

#获取cookies
driver.get_cookies()

2 异常处理

很多时候页面加载的速度是赶不上我们代码的运行速度的,这就导致一个问题,在我们操作一个元素的时候可能该元素并没有加载出来。这样就会返回异常,严重影响代码的健壮性。

2.1 等待

等待可以通过四种方式实现,通过等待并配合python的异常处理,可以保证代码的健壮性。

2.1.1 sleep函数

调用Thread.sleep(),预估需要等待的时间。这是最简单的方式,但是灵活性并不好。
时间单位是

import time
time.sleep(7)

2.1.2 隐示例等待

隐示等待,隐性等待是指当要查找元素,而这个元素没有马上出现时,
告诉WebDriver查询Dom一定时间。默认值是0,但是设置之后,这个时间将在WebDriver对象实例整个生命周期都起作用。
(这是一段java代码的demo)

WebDriver dr = new FirefoxDriver(); 
dr.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS); 

2.1.3 使用javascript

WebElement element = driver.findElement(By.xpath(test));
((JavascriptExecutor)driver).executeScript("arguments[0].style.border="5px solid yellow"",element);

2.1.4 显示等待

显示等待,就是在超时时间内,每隔10ms去查询一次元素是否可以进行设定的操作。

  • 只有满足显式等待的条件满足,测试代码才会继续向后执行后续的测试逻辑
  • 如果超过设定的最大显式等待时间阈值,这测试程序会抛出异常。

显式等待可以自定义等待的条件,用于更加复杂的页面等待条件

WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.XPATH, xpath)))

2.2 异常处理举例

异常处理就是首先判断要操作的元素时候出现了,然后再进行操作。

下面列举了几个常用页面操作的异常处理:点击页面元素,填表单,等待页面出现(主要用于有弹窗的情况)

2.2.1 点击页面元素


                
  • 27
    点赞
  • 179
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值