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)
# 获取当前窗口url
print("当前窗口url:", driver.current_url)
sleep(3)
driver.find_element_by_partial_link_text("注册A网页").click()
# 获取当前窗口标题
print("当前窗口title:", driver.title)
# 获取当前窗口url
print("当前窗口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、定位下拉框元素 select
el = 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('https://www.sina.com.cn/')

# 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 sleep
sleep(10)

元素等待比较

 

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Web页面设计中的cron定时器页面是指一个用来设置和管理cron定时任务的页面。cron定时器是一种在特定时间或者固定间隔执行任务的工具,常用于后台任务和自动化操作。 这个页面通常包含以下几个主要功能: 1. 设置定时任务:用户可以在页面上设置任务的执行时间和间隔。通常,这些设置包括分钟、小时、日期、月份等。用户可以根据实际需求选择适当的时间和间隔来执行任务。 2. 管理定时任务:页面还提供了对已经设置的定时任务的管理功能。用户可以查看已经设置的任务列表,包括任务的执行时间、间隔和状态等信息。用户可以对这些任务进行编辑、删除或者暂停。 3. 日志记录:为了方便用户查看定时任务的执行情况,页面会记录每个任务的执行日志。用户可以通过页面查看任务的执行日志,包括执行时间、执行结果等信息。 4. 通知和提醒:为了确保任务的准时执行,页面还会提供通知和提醒功能。用户可以选择以邮件、短信或者推送的形式接收任务执行结果的通知。这样,用户就可以随时随地了解任务的执行情况。 总之,cron定时器页面是一个用于设置和管理定时任务的工具,它可以帮助用户在Web环境下方便地管理后台任务和自动化操作。用户可以通过这个页面灵活地设置任务的执行时间和间隔,并且可以随时查看任务的执行情况和结果。通过这个页面,用户可以更好地掌握各种任务的执行进度,从而提高工作效率。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值