自动化测试之基础操作

自动化测试之基础操作

一、元素定位

find_element_by_id()
find_element_by_name()
find_element_by_class_name()
find_element_by_tag_name()
find_element_by_link_text()
find_element_by_partial_link_text()
find_element_by_xpath()
find_element_by_css_selector()
  • 在element变成elements就是找所有满足的条件,返回数组

二、控制浏览器操作

  1. 控制浏览器窗口大小
driver.set_window_size(500,800)  # 直接设置窗口的大小,宽度和高度,单位像素

driver.maximize_winsow()  # 窗口最大化
  1. 浏览器后退,前进
driver.forward()  # 浏览器前进

driver.back()  # 浏览器后退
  1. 浏览器刷新
driver.refresh() # 刷新
  1. 关闭浏览器
close() 关闭单个窗口(相当于关闭标签页)
quit() 关闭所有窗口(退出浏览器)

三、网页元素定位后的操作

  1. 点击和输入
driver.find_element_by_id("kw").clear() # 清空文本 
driver.find_element_by_id("kw").send_keys("selenium") # 模拟按键输入字符串 
driver.find_element_by_id("su").click() # 单击元素
  1. 提交(可以在搜索框模拟回车操作)
search_text = driver.find_element_by_id('kw') 
search_text.send_keys('selenium') 
search_text.submit()
  1. 其他
size: 返回元素的尺寸
text: 获取元素的文本
get_attribute(name): 获得属性值
is_displayed(): 设置该元素是否用户可见

四、鼠标操作

  1. 在 WebDriver 中, 将这些关于鼠标操作的方法封装在 ActionChains 类提供
from selenium.webdriver.common.action_chains import ActionChains
  1. ActionChains 类提供了鼠标操作的常用方法:
perform(): 执行所有 ActionChains 中存储的行为;
context_click(): 右击;
double_click(): 双击;
drag_and_drop(): 拖动;
move_to_element(): 鼠标悬停
  1. 示例
from selenium import webdriver
# 引入 ActionChains 类
from selenium.webdriver.common.action_chains import ActionChains

driver = webdriver.Chrome()
driver.get("https://www.baidu.cn")

# 定位到要悬停的元素
above = driver.find_element_by_link_text("设置")
# 对定位到的元素执行鼠标悬停操作
ActionChains(driver).move_to_element(above).perform()

五、键盘事件

send_keys(Keys.BACK_SPACE) 删除键(BackSpace)
send_keys(Keys.SPACE) 空格键(Space)
send_keys(Keys.TAB) 制表键(Tab)
send_keys(Keys.ESCAPE) 回退键(Esc)
send_keys(Keys.ENTER) 回车键(Enter)
send_keys(Keys.CONTROL,'a') 全选(Ctrl+A)
send_keys(Keys.CONTROL,'c') 复制(Ctrl+C)
send_keys(Keys.CONTROL,'x') 剪切(Ctrl+X)
send_keys(Keys.CONTROL,'v') 粘贴(Ctrl+V)
send_keys(Keys.F1) 键盘 F1
……
send_keys(Keys.F12) 键盘 F12
  • 示例
# 输入框输入内容
driver.find_element_by_id("kw").send_keys("seleniumm")

# 删除多输入的一个 m
driver.find_element_by_id("kw").send_keys(Keys.BACK_SPACE)

六、调用JavaScript代码

from selenium import webdriver

driver = webdriver.Chrome()
driver.get('https://www.jd.com/')
driver.execute_script('window.scrollTo(0, document.body.scrollHeight)')
driver.execute_script('alert("123")')
  • 通过 execute_script() 方法执行JavaScripts代码来移动滚动条的位置

七、文件上传和窗口截图

  1. 文件上传
driver.find_element_by_name("file").send_keys('D:\\upload_file.txt')  # 定位上传按钮,添加本地文件
  1. 窗口截图
driver.get_screenshot_as_file("D:\\baidu_img.jpg") # 截取当前窗口,并指定截图图片的保存位置

八、cookie操作

  1. WebDriver操作cookie的方法:
get_cookies(): 获得所有cookie信息。
get_cookie(name): 返回字典的key为“name”的cookie信息。
add_cookie(cookie_dict) : 添加cookie。“cookie_dict”指字典对象,必须有name 和value 值。
delete_cookie(name,optionsString):删除cookie信息。“name”是要删除的cookie的名称,“optionsString”是该cookie的选项,目前支持的选项包括“路径”,“域”。
delete_all_cookies(): 删除所有cookie信息

九、获取页面源码数据

  • 通过 page_source 属性可以获取网页的源代码,接着就可以使用解析库(如正则表达式、Beautiful Soup、pyquery等)来提取信息了。

from selenium import webdriver

driver = webdriver.Chrome()
driver.get('https://www.jd.com/')
page = driver.page_source
print(page)

十、谷歌无头浏览器

  • 由于PhantomJs最近已经停止了更新和维护,所以推荐大家可以使用谷歌的无头浏览器,是一款无界面的谷歌浏览器
from selenium import webdriver
from selenium.webdriver.chrome.options import Options

# 创建一个参数对象,用来控制chrome以无界面模式打开
chrome_options = Options()
chrome_options.add_argument('--headless')
chrome_options.add_argument('--disable-gpu')

# 创建浏览器对象
browser = webdriver.Chrome(chrome_options=chrome_options)
# 上网
url = 'http://www.baidu.com/'
browser.get(url)

browser.save_screenshot('baidu.png')
browser.quit()
posted @ 2021-05-27 10:03  廿九九  阅读(75)  评论(0)    收藏  举报