软件测试工具(二)Selenium相关API

1.selenium原理

之后叙述!

2.Webdriver常用API介绍

2.1元素的定位

driver = webdriver.Chrome()
url = "http://www.baidu.com"
driver.get(url)
# 用id来定位(全局唯一)
# driver.find_element_by_id("kw").send_keys("鹿晗")
# driver.find_element_by_id("su").click()
# 用class_name来定位(不一定唯一)
# driver.find_elements_by_class_name("s_ipt nobg_s_fm_hover").send_keys("鹿晗")
# driver.find_elements_by_class_name("btn self_btn bg s_btn btn_h btnhover").click()
# 用link_text来定位
# driver.find_element_by_link_text("新闻").click()
# 用partial_link_text
# driver.find_element_by_partial_link_text("123").click()
# 用tag_name 定位
# driver.find_element_by_tag_name("input").send_keys("鹿晗")
# driver.find_element_by_tag_name("input").click()
# 用css_selector
# driver.find_element_by_css_selector("#kw").send_keys("追风筝的人")
# driver.find_element_by_css_selector("#su").click()
# 用xpath定位(肯定可以唯一定位)
# driver.find_element_by_xpath("//*[@id='kw']").send_keys("海棠依旧")
# driver.find_element_by_xpath("//*[@id='su']").click()
# driver.quit()

2.2操作测试对象

click 用于点击一个按钮
send-keys 用于在一个输入框里输入内容

# 清除输入框的内容
# driver.find_element_by_css_selector("#kw").clear()
# driver.find_element_by_css_selector("#kw").send_keys("杨紫")
# 提交表单
# driver.find_element_by_id("su").submit()
# text获取文本内容
# text = driver.find_element_by_id("s-top-left").text

2.3添加等待

# 固定等待
# time.sleep(10)
# 智能等待
# driver.implicitly_wait(10)

2.4打印信息

#打印url和title
# title = driver.title
# url = driver.current_url
# print(title)
# print(url)

2.5浏览器的操作

# 将浏览器最大化显示
# driver.maximize_window()
# 设置浏览器宽480、高800显示
# driver.set_window_size(480, 800)
# 前进、
# driver.forward()
# 浏览器的后退
# driver.back()
# 将滚动条移动到页面的顶部
# js2 = "var q=document.documentElement.scrollTop=0"
# driver.execute_script(js2)
# 控制浏览器滚动条:将页面滚动条拖到底部(下拉)
# js1 = "var q=document.documentElement.scrollTop=10000"
# driver.execute_script(js1)

2.6键盘事件

要想调用键盘按键操作需要引入keys 包:
from selenium.webdriver.common.keys import Keys
通过send_keys()调用按键:
send_keys(Keys.TAB) # TAB
send_keys(Keys.ENTER) # 回车

# 键盘按键
driver.find_element_by_id("account").send_keys("admin")
time.sleep(3)
# 模拟tab键
driver.find_element_by_id("account").send_keys(Keys.TAB)
time.sleep(6)
# driver.find_element_by_name("password").send_keys("y123456!")
# enter登录
# driver.find_element_by_name("password").send_keys(Keys.ENTER)
# driver.find_element_by_id("submit").click()

# 键盘组合键
kw.send_keys(Keys.CONTROL, 'a')
kw.send_keys(Keys.CONTROL, 'x')

2.7鼠标事件

# 右击
ActionChains(driver).context_click(su).perform()
time.sleep(3)
# 双击
ActionChains(driver).double_click().perform()
time.sleep(6)

context_click() 右击
double_click() 双击
drag_and_drop() 拖动
move_to_element() 移动

2.8定位一组元素

webdriver 可以很方便的使用findElement 方法来定位某个特定的对象,不过有时候我们却需要定位一组对象,这时候就需要使用findElements 方法.
定位一组对象一般用于以下场景:
批量操作对象,比如将页面上所有的checkbox 都勾上
先获取一组对象,再在这组对象中过滤出需要具体定位的一些对象。比如定位出页面上所有的checkbox,然后选择最后一个

# 1.
# driver.find_element_by_id("c1").click()
# driver.find_element_by_id("c2").click()
# driver.find_element_by_id("c3").click()
# inputs = driver.find_elements_by_tag_name("input")
#2.定位一组元素
# for input in inputs:
#     if input.get_attribute('type') =='checkbox':
#         input.click()

2.9多层框架/窗口定位

switch_to_frame() 把当前定位的主体切换了frame里
switch_to_window()
switch_to_default_content:从frame中嵌入的页面里跳出,跳回到最外面的原始页面中

# 转换层级
# driver.switch_to.frame("f1")
# driver.switch_to.frame("f2")
# 回到默认页面
# driver.switch_to.default_content()
# driver.switch_to.frame("f1")

2.10层级定位

# 定位下拉列表的特定元素
# ele = driver.find_element_by_id("dropdown1").find_element_by_link_text("Another action")

2.11下拉框处理

下拉框里的内容需要进行两次定位,先定位到下拉框,再定位到下拉框内里的选项

# 下拉框处理xpath  css_selector  一组元素  数组
# driver.find_element_by_xpath("//*[@id='ShippingMethod']/option[3]").click()
# driver.find_element_by_css_selector("#ShippingMethod > option:nth-child(3)").click()
# options = driver.find_element_by_id("ShippingMethod").find_elements_by_tag_name("option")
# for option in options:
#     if option.get_attribute('value') == '10.69':
#         option.click()
# options[2].click()

2.12 alert/confirm/prompt

text 返回alert/confirm/prompt 中的文字信息
accept 点击确认按钮
dismiss 点击取消按钮,如果有的话
send_keys 输入值,这个alert\confirm 没有对话框就不能用了,不然会报错
switch_to_alert()只能处理原生的alert

# alert
# driver.find_element_by_tag_name("input").click()
# time.sleep(3)
# alert = driver.switch_to.alert
# alert.send_keys("java00")
# alert.accept()
# 关闭弹框
# time.sleep(3)
#  得到弹框的操作句柄
# alert = driver.switch_to.alert
# alert.accept()

2.13DIV对话框处理

# div对话框
# div0 = driver.find_element_by_class_name("modal-body")
# div0.find_element_by_id("click").click()
# div1 = driver.find_element_by_class_name("modal-footer")
# div1.find_element_by_class_name("btn").click()
# 关闭对话框
# buttons = div1.find_elements_by_tag_name("button")
# buttons[0].click()

2.14上传文件操作

# 上传文件
driver.find_element_by_tag_name('input').send_keys("F:\\s1.png")
# driver.find_element_by_link_text("Click").click()
  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值