软件测试:web自动化之selenium API

1、浏览器驱动对象

from selenium import webdriver
# 创建一个浏览器对象
driver = webdriver.Firefox()
# 设置浏览器全屏
driver.maximize_window()
# 获取当前浏览器尺寸
size = driver.get_window_size()
print(size)
# 设置浏览器尺寸
driver.set_window_size(400, 400)
size = driver.set_window_size(400, 400)
print(size)
# 获取浏览器位置
position = driver.get_window_position()
print(position)
# 设置浏览器位置
driver.set_window_position(200, 300)

2、页面操作

from selenium import webdriver
import time
# 创建一个浏览器对象
driver = webdriver.Firefox()
# 访问百度
url1 = "http://www.baidu.com"
driver.get(url1)
print("欢迎来到:", url1)
# 访问知乎
url2 = "https://zhuanlan.zhihu.com"
time.sleep(2)
driver.get(url2)
print("欢迎来到:", url2)
# 后退
time.sleep(2)
driver.back()
print("回退到", url1)
# 前进到
time.sleep(2)
driver.forward()
print("前进到:", url2)
driver.close()

3、断言操作

from selenium import webdriver
import time
# 创建一个浏览器对象
driver = webdriver.Firefox()
# 访问百度
url1 = "http://www.baidu.com"
driver.get(url1)
print("欢迎来到:", driver.current_url)
# 访问知乎
url2 = "https://zhuanlan.zhihu.com"
time.sleep(2)
driver.get(url2)
print("欢迎来到:", driver.current_url)
# 后退
time.sleep(2)
driver.back()
print("回退到", driver.current_url)
# 前进到
time.sleep(2)
driver.forward()
print("前进到:",driver.current_url)
driver.close()

from selenium import webdriver
# 创建一个浏览器对象
driver = webdriver.Firefox()
# 访问新浪
url = "http://www.sina.com.cn"
driver.get(url)
# 显示当前的url
print(driver.current_url)
# 显示当前页面的标题
print(driver.title)
# 保存快照操作
driver.get_screenshot_as_file("xinlang.png")
str数据类型(data)转换成bytes(二进制类型)
b_data=data.encode()
data=b_data.decode()

from selenium import webdriver
import time
# 创建一个浏览器对象
driver = webdriver.Firefox()
# 访问百度
url = "http://www.baidu.com"
driver.get(url)
# 定位搜索框
el = driver.find_element_by_id("kw")
# print(el)
# print(type(el))
# 向输入框输入数据
el.send_keys("传智播客")
# 定位百度一下按钮
el_click = driver.find_element_by_id("su")
el_click.click()
time.sleep(3)
driver.close()

4、selenium 8种定位操作

通过id值进行定位

# 通过id值进行定位
driver.find_element_by_id()


通过name值进行定位

# 通过name值进行定位
driver.find_element_by_name()

例:

from selenium import webdriver
# 创建一个浏览器
driver = webdriver.Firefox()
# 打开人人网
url = "http://www.renren.com/"
driver.get(url)
# 定位到输入框
el_1 = driver.find_element_by_name("email")
# 输入账号
el_1.send_keys("15332093562")
# 定位到密码框
el_pwd = driver.find_element_by_name("password")
# 输入密码
el_pwd.send_keys("wo249821")
# 定位登录按钮
el_click = driver.find_element_by_id("login")
# 点击操作
el_click.click()


通过class值进行定位

# 通过class值进行定位
driver.find_element_by_class_name()


通过标签名进行定位,该元素要么唯一,要么第一位

# 通过标签名进行定位,该元素要么唯一,要么第一位
driver.find_element_by_tag_name()

通过链接文本进行定位

# 通过链接文本进行定位
river.find_element_by_link_text()

通过部分链接文本进行定位

# 通过部分链接文本进行定位
driver.find_element_by_partial_link_text()

通过xpath进行定位

# 通过xpath进行定位
driver.find_element_by_xpath()

通过css选择器进行定位

# 通过css选择器进行定位
driver.find_element_by_css_selector()

5、定位一组元素

driver.find_elements_by_css_selector()

6、元素的操作

输入数据
element.send_keys()
提交
element.submit()
清除
element.clear()
获取文本内容
element.text()
获取属性值
element_get_attribute()

7、多标签切换
例:

from selenium import webdriver
# 创建一个浏览器对象
driver = webdriver.Firefox()
# 访问58
url = "https://tj.58.com/"
driver.get(url)
el = driver.find_element_by_link_text("租房")
# 打印当前浏览器句柄
print("点击之前的浏览器身份证列表是:", driver.window_handles)
print("点击之前的浏览器窗口是:", driver.current_url)
el.click()
print("点击之后的浏览器身份证列表是:", driver.window_handles)
print("点击之后的浏览器窗口是:", driver.current_url)

8、多表单多框架的切换

# 定位表单
el_frame = driver.find_element_by_name("")
# 切换到表单
driver.switch_to.frame(el_frame)

9、本地加载-表单切换
学习内容:

driver.switch_to.frame()  切换表单
driver.switch_to.default_content()  切换到最外层表单
driver.switch_to.parent_frame()  切换到上一层 表单

例如:

# 导包
from selenium import webdriver
# 导入os库,用于获取文件路径
import os
import time
# 创建浏览器
driver =  webdriver.Firefox()
# 获取网页访问路径,os.path.abspath(文件名)获取文件的绝对路径
file_path = 'file:///' + os.path.abspath('example_frame.html')
print(file_path)
# 访问本地文件
driver.get(file_path)
time.sleep(5)
# 切换到第一个表单中
driver.switch_to.frame('itcast_frame1')
# 切换到第二层表单
driver.switch_to.frame('itcast_frame2')
# 定位到输入框
el = driver.find_element_by_id('sb_form_q')
# 输入
el.send_keys('selenium')
# 定位点击按钮
el_sub = driver.find_element_by_id('sb_form_go')
el_sub.click()
# 定位一个元素,验证已经到达深层表单
el_search = driver.find_element_by_id('sb_form')
print('依然在最深层表单中')
driver.switch_to.default_content()
try:
    el_search = driver.find_element_by_id('sb_form')
except:
    print('已经从表单中退出')

10、鼠标右键操作

先导入:from selenium.webdriver import ActionChains
ActionChains(driver).context_click(定位到的元素).perform()

例:

from selenium import  webdriver
# 导入动作链类
from selenium.webdriver import ActionChains
# 打开浏览器
driver = webdriver.Firefox()
url = "https://www.baidu.com/"
driver.get(url)
# 定位图片位置
el_pic = driver.find_element_by_css_selector("#lg > map:nth-child(3) > area:nth-child(1)")
ActionChains(driver).context_click(el_pic).perform()

11、鼠标双击

先导入:from selenium.webdriver import ActionChains
ActionChains(driver).double_click(定位到的元素).perform()

12、鼠标悬停

先导入:from selenium.webdriver import ActionChains
ActionChains(driver).move_to_element(定位到的元素).perform()

例如:

from selenium import webdriver
# 导入动作链类
from selenium.webdriver import ActionChains
import time
# 开一个浏览器
driver = webdriver.Firefox()
driver.maximize_window()
# 访问京东
url = 'http://www.jd.com'
driver.get(url)
# 获取分类组元素
el_list = driver.find_elements_by_class_name('cate_menu_item')
for el in el_list:
    ActionChains(driver).move_to_element(el).perform()
    time.sleep(1)
driver.quit()

13、键盘操作

先导入:from selenium.webdriver.common.keys import Keys
send_keys(Keys.CONTROL,"a")
send_keys(Keys.CONTROL,"c")
send_keys(Keys.CONTROL,"x")
send_keys(Keys.CONTROL,"v")

14、弹出框操作,警告框操作

进入警告框并接受

driver.switch_to.alert.accept()

进入警告框并解散

driver.switch_to.alert.dismiss()

15、下拉框

先导入:
from selenium.webdriver.support.select import Select
创建Select对象
selsub = Select(定位到的元素)
selsub.select_by_index(0)
selsub.select_by_value()
selsub.select_by_visible_text()
# 查看第一个已选
selsub.first_selected_option
# 查看所有已选
selsub.all_selected_options
# 查看是否多选
selsub.is_multiple

16、js滚动

第一种方法:

# js滚动,x管水平,y管垂直
js = "window.scrollTo(0,1000)"
driver.execute_script(js)

第二种方法:

js1= "var q=document.documentElement.scrollTop=0"
driver.execute_script(js1)

一直往下拉:

for i in range(100):
    # x管水平,y管垂直
    js = 'window.scrollTo(0,%s)'%(i*100)
    driver.execute_script(js)
    time.sleep(0.5)

17、显式等待

from selenium import webdriver
# 导入By
from selenium.webdriver.common.by import By
# 导入webdriver等待类
from selenium.webdriver.support.ui import WebDriverWait
# 导入预期条件设置类
from selenium.webdriver.support import expected_conditions as EC
# 创建一个浏览器
driver = webdriver.Firefox()
# 访问百度
url = 'http://www.baidu.com'
driver.get(url)


# 浏览器总共等待10秒,在10秒内,每隔0.5秒去使用id的方式定位一下元素,如果定位到,就结束等待,如果定位不到同时没有大于10秒,则继续等待
el = WebDriverWait(driver,10,0.5).until(EC.presence_of_element_located((By.ID,'lg')))

18、隐式等待

from selenium import webdriver
# 创建浏览器
driver = webdriver.Firefox()
url = 'https://www.amazon.cn/'
driver.get(url)
driver.implicitly_wait(20)
driver.close()

优先隐式等待,显式等待次之,最后固定等待

19、cookies

from selenium import webdriver
# 创建浏览器
driver = webdriver.Firefox()
# 访问有道
url = 'http://www.youdao.com/'
driver.get(url)
# 获取cookies,直接调用,不需要参数
data = driver.get_cookies()
print(data)
# 删除所有cookies
driver.delete_all_cookies()
# 设置cookies
cookie = {"name":"itcast","value":"soft_test"}
driver.add_cookie(cookie)
# 获取
data1 = driver.get_cookies()
print(data1)
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值