100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > web自动化测试理论之浏览器操作 -(3)

web自动化测试理论之浏览器操作 -(3)

时间:2020-09-01 18:06:57

相关推荐

web自动化测试理论之浏览器操作 -(3)

浏览器操作

设置浏览器显示范围:

1、窗口最大化 dirver.maxmize_window()

2、设置窗口大小 dirver.set_window_size(width, height)

3、设置窗口位置 dirver.set_window_position(x, y)

浏览器显示页面操作:

1、页面后退操作 dirver.back()

2、页面前进操作 dirver.forword()

3、页面刷新操作 dirver.refresh()

"""需求:打开注册A.html页面,完成以下操作1).最大化窗口2).打印当前窗口的标题和地址3).暂停3s,点击界面 访问 百度 网站 超链接4).暂停3s,再次打印当前窗口的标题和地址5).暂停3s,关闭当前窗口6).暂停3s,关闭浏览器"""# 最大化浏览器driver.maximize_window()sleep(3)# 设置窗口大小driver.set_window_size(500, 700)sleep(3)driver.set_window_position(0, 500)sleep(3)# 点击新浪driver.find_element_by_partial_link_text("新浪").click()sleep(3)# 后退driver.back()sleep(3)# 前进driver.forward()sleep(3)driver.refresh()

浏览器关闭操作:

关闭当前窗口dirver.close()

关闭浏览器 dirver.quit()

获取浏览器操作:

获取标题:dirver.title

获取网页地址:dirver.current_url

当前窗口:创建驱动时第一个打开的窗口,对于当前窗口的元素一般都可以直接定位和操作,如果弹出新的窗口, 对于新的窗口元素是不能直接进行操作,需要学习后续的窗口切换。

"""需求:打开注册A.html页面,完成以下操作1).最大化窗口2).打印当前窗口的标题和地址3).暂停3s,点击界面 访问 百度 网站 超链接4).暂停3s,再次打印当前窗口的标题和地址5).暂停3s,关闭当前窗口6).暂停3s,关闭浏览器"""# 最大化浏览器driver.maximize_window()# 获取当前窗口标题print("当前窗口title:", driver.title)# 获取当前窗口urlprint("当前窗口url:", driver.current_url)sleep(3)driver.find_element_by_partial_link_text("注册A网页").click()# 获取当前窗口标题print("当前窗口title:", driver.title)# 获取当前窗口urlprint("当前窗口url:", driver.current_url)sleep(3)

页面交互操作

1、下拉框

方式1:使⽤css或xpth (推荐)

元素定位的方式操作下拉框: 操作繁琐 、影响脚本运行效率

定位元素后调用点击的操作方法进行选择

"""需求:使用‘注册A.html’页面,完成对城市的下拉框的操作:1).选择‘广州’ 2).暂停2秒,选择‘上海’ 3).暂停2秒,选择‘北京"""driver.find_element(By.CSS_SELECTOR, '[value="gz"]').click()sleep(2)driver.find_element(By.CSS_SELECTOR, '[value="sh"]').click()sleep(2)driver.find_element(By.CSS_SELECTOR, '[value="bj"]').click()

方式2:使⽤专属Select类

步骤:

1、导包

2、创建Select类

3、选择选项

# 使用Select类来实现# 1、定位下拉框元素 selectel = driver.find_element(By.CSS_SELECTOR, "#selectA")# 2、实例化Select对象select = Select(el)# 3、使用下标定位广州select.select_by_index(2)sleep(2)# 使用value定位上海select.select_by_value("sh")# 使用文本定位 北京sleep(2)select.select_by_visible_text("A北京")

注意:

Select类实现选项只适用于HTML原生态的<select> + <option>的下拉框

2、弹出框

为什么要处理弹框:如果⻚⾯操作过程中,有弹窗出现,不处理,⽆法继续对⻚⾯操作。

类型:

1、js原⽣弹窗(警告框、输⼊框、提示框)必须处理

2、开发使⽤标签⾃定义弹窗效果 (不⽤处理,正常操作即可。)

步骤:

1、获取弹出框对象

alert = driver.switch_to.alert

alert.text 获取弹窗框文本

三种弹窗框,在获取对象的时候都一样

2、弹出框处理方法

alert.accept() 接受弹出框

alert.dismiss() 取消弹出框

确认框没有取消按钮,取消方法一样生效

"""需求:打开注册A.html页面,完成以下操作:1).点击 alert 按钮2).关闭警告框3).输入用户名:admin"""# 点击弹窗driver.find_element(By.ID,"alerta").click()sleep(2)# 获取弹窗对象el = driver.switch_to.alert# 处理弹窗 同意/取消# el.dismiss() # 取消# print("弹出文本:",el.text)el.accept() # 同意sleep(2)# 输入用户名driver.find_element(By.CSS_SELECTOR,"#userA").send_keys("admin")

3、滚动条

所要操作的元素不在当前展示页,需要 滑动滚动条才能找到。

有些⻚⾯场景,必须滚动条拉倒最底下才做某事 。如:注册⻚⾯,阅读完需求,协议才能勾选,此时就必须拖动滚动条。

步骤:

1、定义Js字符串 js = "window.scrollTo(0,1000)"

2、执行Js字符串 driver.execute_script(js)

"""需求:打开新浪官网页面,完成以下操作1).暂停2s,控制滚动条滑动到页面最底部2).暂停2s,点击返回顶部按钮"""driver.get('/')# js -> 向下滑动10000像素# js_down = "window.scrollTo(0,10000)"# 动态执⾏滑倒底部 向下滑动滚动条⾼度# js(0,10000) 第⼀个0为⽔平滚动条js_down = "window.scrollTo(0,document.body.scrollHeight)"# 执⾏js⽅法driver.execute_script(js_down)sleep(2)# js—> 向上js_top = "window.scrollTo(0,0)"driver.execute_script(js_top)

滚动条扩展 -- 动态滚动

滚动到页面底部 js ="window.scrollTo(0,document.body.scrollHeight)" 比如:新浪页面太长,在超过10000像素时动态滑动到最底部

鼠标操作

ActionChains鼠标类 :点击、右击、双击、 、拖拽等

步骤:

1、导包from selenium.webdriver import ActionChains

2、实例化鼠标对象 action = ActionChains(driver)

3、调用鼠标方法:

action.move_to_element(element) 鼠标悬停

action.context_click(element) 鼠标右击

action.double_click(element) 鼠标双击

action.drag_and_drop(source, target) 鼠标拖拽

4、执行鼠标操作action.perform()

调用鼠标方法并不会去执行鼠标操作,必须调用perform才会执行

"""需求:打开注册页面A,模拟鼠标悬停在‘注册’按钮上"""from selenium.webdriver import ActionChains# 获取ActionChains对象action = ActionChains(driver)el = driver.find_element(By.CSS_SELECTOR,"button")sleep(2)# 调用悬停方法action.move_to_element(el).perform()

# 需求:打开注册页面A,在用户名文本框上点击鼠标右键# 获取ActionChains对象action = ActionChains(driver)username = driver.find_element(By.CSS_SELECTOR,"#userA")# 鼠标右击action.context_click(username).perform()sleep(2)

"""需求:打开注册A,输入用户名admin,暂停3秒钟后,双击鼠标左键,选中admin"""from selenium.webdriver import ActionChains# 获取ActionChains对象action = ActionChains(driver)username = driver.find_element(By.CSS_SELECTOR,"#userA")username.send_keys("admin")sleep(3)# 鼠标双击action.double_click(username).perform()

# 鼠标拖拽方法sleep(3)# 获取ActionChains对象action = ActionChains(driver)div1 = driver.find_element(By.CSS_SELECTOR, "#div1")div2 = driver.find_element(By.CSS_SELECTOR, "#div2")action.drag_and_drop(div1, div2).perform()

元素等待----隐式等待和显示等待

元素等待概念:在等位元素时如未定位到,会在指定时间内一直等待的过程

代码执⾏过程中,第⼀次未找到元素,先不抛出异常。激活等待时间,在等待过程中如果找到元素 就执⾏

为什么有元素等待:

1、网络配置低

2、电脑配置低

3、服务器处理速度请求慢

由于⽹络或配置原因,导致元素未加载出来,⽽代码已执⾏,会触发异常。

元素类型类型 : 隐式等待、显示等待、强制等待

1、隐式等待

说明: 针对全部元素⽣效

⽅法: driver.implicitly_wait(timeout秒)

提示:在项⽬中,如果未封装⾃动化框架时,推荐使⽤。

定位元素时,如果能定位到元素则直接返回该元素,不触发等待;

如果不能定位到该元素,则间隔一段时间后再去定位元素;

如果在达到最大时长时还没有找到指定元素,则抛出元素不存在的异常NoSuchElementException

# 全局生效,所有元素第一次未找到触发 等待10秒driver.implicitly_wait(10)# 验证隐式等待driver.find_element(By.CSS_SELECTOR,"#userAA")

2、显示等待

说明: 针对单个元素⽣效,可以修改查找频率和超时时间。

特点: 查找并返回元素

提示:在封装框架时,高手使用,灵活

定位 元素时,如果能定位到元素则直接返回该元素,不触发等待;

如果不能定位到该元素,则间隔一段时间后再去定位元素

如果在达到最大时长时还没有找到指定元素,则抛出超时异常TimeoutException

步骤:

1、导包from selenium.webdriver.support.wait import WebDriverWait

2、创建显示等待类对象WebDriverWait(driver, timeout, poll_frequency=0.5)

3、调用utils方法 until(method):直到...时

4、element = WebDriverWait(driver,10,1).until(lambda x: x.find_element(By.CSS_SELECTOR,"#userAA"))

# 1、导包from selenium.webdriver.support.wait import WebDriverWait# 2、显示等待 -> 返回查找到的元素el = WebDriverWait(driver,10,0.5).until(lambda x: x.find_element(By.CSS_SELECTOR,"#userAA"))el.send_keys("admin")

3、强制等待

语法: sleep(10)

提示: 执⾏到这句必须等待10秒,不灵活。

time.sleep()影响运行效率

from time import sleepsleep(10)

元素等待比较

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。