web自动化01

1.获取元素信息

为什么要学习获取元素信息的方法

主要为了获取相关的信息进行断言,判断自动化用例最终的执行结果。

  • size 获取元素的大小 返回的是一个字典,里面包含 元素高度和宽度的值
  • text 获取元素的文本内容
  • get_attribute("attribute") 获取元素对应属性名称的属性值 , attribute表示的是属性名
# 1).获取用户名输入框的大小
print(driver.find_element(By.ID, "userA").size)
# 2).获取页面上第一个超链接的文本内容
print(driver.find_element(By.LINK_TEXT, "新浪").text)
# 3).获取页面上第一个超链接的地址
print(driver.find_element(By.LINK_TEXT, "新浪").get_attribute("href"))
  • is_displayed() 判断元素是否可见 返回值为true或者false
  • is_enabled() 判断元素是否可用,返回值为true或者false
  • is_selected() 判断复选框或者单选框是否被选中,返回值为true或者false
# 4).判断页面中的span标签是否可见
print("判断元素是否可见,默认应该是False:", driver.find_element(By.NAME, "sp1").is_displayed())
# 5).判断页面中取消按钮是否可用
print("判断取消按钮是否可用,默认应该是False:", driver.find_element(By.ID, "cancelA").is_enabled())
# 6).判断页面中'旅游'对应的复选框是否为选中的状态
print("判断旅游复选框是否选中,默认应该是True:", driver.find_element(By.ID, "lyA").is_selected())

2. 鼠标操作

elenium提供鼠标操作的方法及步骤

需要导入ActionChains类

  • 通过ActionChains实例化鼠标对象 action = ActionChains(driver) # driver表示的是浏览器驱动对象

  • 调用鼠标的事件方法

  • 调用鼠标的执行方法 action.perform()

方法:

1. content_click(element)    右击,模拟鼠标右键点击效果

2. double_click(element)    双击

3. drag_and_drop(source,target)   拖动,

4. move_to_element(element)    悬停

5. perform()     执行,此方法用来执行以上所有鼠标操作,    因为所有的方法都需要执行才能生效

2.1 右击操作

action = ActionChains(driver)
# 在用户文本框上点击鼠标右键
action.context_click(driver.find_element(By.ID,'userA'))
#执行
action.perform()

2.2 悬停

action = ActionChains(driver)
# 鼠标悬停在注册按钮上
action.move_to_element(driver.find_element(By.XPATH, '//fieldset/form/p[5]/button'))
# 执行
action.perform()

2.3. 鼠标单元素拖动操作

  • 鼠标单元素拖动实现步骤

创建鼠标对象 action=ActionChains(driver)

调用鼠标单元素拖动事件方法 action.drag_and_drop_by_offset(element, x, y) x, y 表示的元素拖动时横向和纵向移动的距离,单位为像素, element表示的是元素对象 移动的像素最终要比在web页面中看到的移动像素值要大,最好大于5个像素或者10像素

调用鼠标执行方法 action.perform()

action = ActionChains(driver)
# 验证码拖动
element = driver.find_element(By.CSS_SELECTOR, '.handler_bg')
action.drag_and_drop_by_offset(element, 260, 0)
# 执行
action.perform()

3. 键盘操作

  • 模拟键盘上面的快捷键的操作
  • 调用键盘操作的快捷键的方法 element.send_keys(快捷键的键值)

需要导入Keys类, 第一个字母是大写

单键值: 直接传入对应的键值

组合键: 键值之间由逗号分隔

send_keys(Keys.CONTROL, Keys.SHIFT, 'i')

常用的快捷键

  1. send_keys(Keys.BACK_SPACE) 删除键(BackSpace)

  2. send_keys(Keys.SPACE) 空格键(Space)

  3. send_keys(Keys.TAB) 制表键(Tab)

  4. send_keys(Keys.ESCAPE) 回退键(Esc)

  5. send_keys(Keys.ENTER) 回车键(Enter)

  6. send_keys(Keys.CONTROL,'a') 全选(Ctrl+A)

  7. send_keys(Keys.CONTROL,'c') 复制(Ctrl+C)

  8. send_keys(Keys.CONTROL, 'v') 粘贴

4. 元素等待

HTML加载需要时间,影响HTML加载的因素:

* 服务器性能
* 网络速度
* 本身电脑的配置

4.1 隐式等待

概念:首先要等待整个页面加载完成,再去进行元素定位,如果在定位过程中找到了元素,直接返回该元素,继续后面的操作,如果在指定的时间内没有找到该元素,那么每隔0.5秒再去找,如果超过了指定时间,就会抛出NoSuchElementException的异常错误。

隐式等待实现方式:

driver.implicitlty_wait(timeout) # timeout表示的是最长的等待时间 单位为S

隐式等待只需要设置一次,对所有的元素定位的方法都是有效的。

driver.implicitly_wait(5) #隐式等待 设置为5s
driver.get("file://%s/注册A.html" % base_path)
# 针对第一延迟框,输入admin1
driver.find_element(By.XPATH, "//*[@id='wait']/input[1]").send_keys("admin1")
# 针对第二延迟框,输入admin2
driver.find_element(By.XPATH, "//*[@id='wait']/input[2]").send_keys("admin2")

 

4.2 显示等待

概念:定位指定元素时,如果能找到该元素,那么就直接返回该 元素,如果找不到,那么每隔指定的时间再去定位该 元素,如果超出最长等待时间,那么就抛出TimeOutException。

显示等待的实现:

WebDriverWait(driver, timeout, poll_frequency=0.5).until(lambda x:x.find_element(By.ID, "userA"))

WebDriverWait等待类需要导入

driver指的是浏览器驱动对象

timeout表示的是最长等待时间

poll_frequency表示的是检测的间隔时间,默认是0.5和

后面跟上until方法,在until方法跟上匿名函数来实现元素定位。

# 通过显示等待的方式定位延时输入框 输入admin
element = WebDriverWait(driver, 9, 1).until(lambda x: x.find_element(By.XPATH, "//*[@id='wait']/input[1]"))
element.send_keys("admin")

显示等待与隐式等待的区别:

1、抛出的异常不一样 , 隐式等待超时,报的NoSuchElementException ,显示等待超时,报的是 TimeOutException

2、作用域不一样, 隐式等待对所有元素定位的方法都有效,只需要定义一次, 显示等待只针对单个元素

3、显示等待不需要等待整个页面的HTML的DOM树加载完成,显式等待的效率更高,工作当中一般使用显示等待。而隐式等待需整个HTML DOM树加载完成。

4.3 强制等待

  • 强制等待就是让代码休眠,不做任何的操作

time.sleep(time) 单位为time

常用的场景:

  • 当要获取元素的文本内容时,而元素的文本内容是需要通过后台接口请求并渲染的,此时,如果使用隐式等待或显示等待是没有办法获取到文本内容,所以需要使用强制等待

  • 当要操作的元素已经存在,但是有其他的元素需要等待且与该操作的元素有业务关联,如果使用隐式等待或显示等待对该元素进行操作的话,是没有办法进行的,也需要使用强制等待。

5. 下拉框、弹出框、滚动条操作

5.1 下拉框操作

下拉选 择实现步骤:

1、导入Select类

2、实例化select对象 select=Select(element) # element对象表示的是select元素对象

3、通过select的相关方法选择option选项

  • select.select_by_index(index) 参数index表示的option索引

  • select.select_by_value(value) 参数value表示的是option元属中value的属性值

  • select.select_by_visible_text(visible_text ) 参数visible_text表示的是option的文本内容。

# 下拉框
time.sleep(1)
city_select = Select(driver.find_element(By.CSS_SELECTOR, '#selectA'))
city_select.select_by_index(1)
time.sleep(1)
city_select.select_by_value('gz')
time.sleep(1)
city_select.select_by_visible_text('深圳')

print("所在城市: ",city_select.all_selected_options[0].text)
print("所在城市: ",city_select.all_selected_options[0].get_attribute('value'))

5.2 弹出框操作

弹出框处理步骤:

  • driver.switch_to.alert 获取弹出框对象

  • 处理弹出框

    • alert.text 获取弹出框提示信息

    • alert.accept() 确定弹出框

    • alert.dismiss() 取消弹出框

# 下拉框
alert_element = driver.find_element(By.CSS_SELECTOR, '#alerta')
confirm_element = driver.find_element(By.CSS_SELECTOR, '#confirma')
prompt_element = driver.find_element(By.CSS_SELECTOR, '#prompta ')

alert_element.click()
time.sleep(2)
alert = driver.switch_to.alert
# 确定,取消弹出框
print("alert弹框信息:",alert.text)
alert.dismiss()

5.3 滚动条操作

  • 1、定义js

js = "window.scrollTo(0, 2000)" # 如果想要移动到最下方,y值给最大值就可以了。

  • 2、执行JS

driver.execute_script(js)

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值