python webdriver API

web端的UI 自动化

原理

webdriver是按照server – client的经典设计模式设计的。
server端就是remote server,可以是任意的浏览器(如chrome.exe)。当我们的脚本启动浏览器后,该浏览器就是remote server,它的职责就是等待client发送请求并做出相应;
client端简单说来就是我们的测试代码,我们测试代码中的一些行为,比如打开浏览器,转跳到特定的url等操作是以http请求的方式发送给被 测试浏览器,也就是remote server;remote server接受请求,并执行相应操作,并在response中返回执行状态、返回值等信息;

引入库

#coding=utf-8

from selenium import webdriver #基础库
from selenium.webdriver.common.action_chains import ActionChains #鼠标操作使用库
from selenium.webdriver.common.keys impoet Keys #键盘操作使用库
import time #time包
import os #上传文件需要的包

详解

一、浏览器基础操作

#coding=utf-8
from selenium import webdriver

driver = webdriver.Edge()     #打开edge(重命名为“MicrosoftWebDriver.exe”)浏览器,这个exe需要放在python.exe同目录下
url = 'https://www.baidu.com/'
driver.get(url)     #浏览器输入网址,并回车效果

driver.maximize_window()    #最大化浏览器
driver.set_window_size(480,800)   #设置浏览器宽480、高800

driver.back()    #浏览器后退(等同于浏览器左上角的“<-”)
driver.forward()    #浏览器前进(等同于浏览器左上角的“->”)

driver.quit()       #关闭浏览器

二、简单对象的定位

id -------> driver.find_element_by_id()
name -------> driver.find_element_by_name()
class name -------> driver.find_element_by_class_name()
tag name -------> driver.find_element_by_tag_name()
css selector -------> driver.find_element_by_css_selector()
xpath -------> driver.find_element_by_xpath()
link text -------> driver.find_element_by_link_text()
partial link text -------> driver.find_element_by_partial_link_text()

注:浏览器F12打开开发者模式,选择元素后,右【Copy Xpath】,如下所示:
在这里插入图片描述

三、操作测试对象

  • clear 清除元素的内容 driver.find_element_by_id(‘user’).clear()
  • send_keys 在元素上模拟按键输入 driver.find_element_by_id(‘user’).send_keys(‘user_name’)
  • click 单击元素 driver.find_element_by_id(“user”).click()
  • submit 提交表单 driver.find_element_by_id(“user”).submit()
  • size 返回元素的尺寸 size = driver.find_element_by_id(‘user’).size
  • text 获取元素的文本 text = drier.find_element_by_id(‘user’).text
  • get_attibute(name) 获取属性值 attribute = driver.find_element_by_id(‘user’).get_attribute(‘type’)
  • is_displayed() 返回元素的结果是否可见 res = driver.find_element_by_id(‘user’).is_dispalyed()

四、鼠标事件

ActionChains 类鼠标操作的常用方法

  • context_click() 右击 ActionChains(driver).context_click(element.perform()
  • double_click() 双击 ActionChains(driver).double_click(element).perform()
  • drag_and_drop() 拖动 ActionChains(driver).drag_and_drop(element,target).perform()
  • move_to_element() 鼠标悬停在一个元素上
  • click_and_hold() 按下鼠标左键在一个元素上

注: element = driver.find_element_by_id(‘user’)
target = driver.find_element_by_id(‘password’)

五、键盘事件

Keys类键盘操作常用的方法

  • 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,‘v’) 粘贴(Ctrl+V)
  • send_keys(Keys.CONTROL,‘x’) 剪切(Ctrl+X)

例:driver.find_element_by_id(‘user’).send_keys(Keys.ENTER)

六、设置等待时间

  • time.sleep(60) #固定休眠60秒
  • driver.implicitly_wait(60) #全局使用,设置1次,找不到元素时,最长等待时间(60秒),如果发现不必强制等待直接进行下一条语句
  • element = WebDriverWait(driver,10).until(lambda driver:driver.find_element_by_id(‘user’))
    element.send_keys(‘selenium’)
    说明:
    WebDriverWait(driver,timeout,poll_frequency=0.5,igbored_exceptions=None)
    –timeout 最长超时时间 --poll_frequency 休眠时间的间隔(步长) --ignored_exceptions 超长后的异常提示信息,默认NoSuchElementException
    WebDriverWait(driver,10,0.5,‘超时异常报错’) #在10秒内每0.5秒检测一次,不满足则给出提示信息“超时异常报错”
    搭配until() 或 until_not()方法使用

七、定位frame中的对象

遇到frame嵌套,切换frame后,才能定位到对应frame中的元素
switch_to_frame

八、对话框处理

在这里插入图片描述

九、alert/confirm/prompt处理

alert = driver.switch_to_alert() #首先,获取网页的警告信息

  • text = alter.text() #获取弹窗中的文本信息
  • alert.accept() #接收警告信息,点击【确认】
  • alert.dismiss() #取消对话框,点击【取消】
  • alert.send_keys(‘输入值’), #输入值

十、上传文件

  • driver.find_element_by_id(‘user’).send_keys(‘D:\upload_file.txt’) #点击【上传】按钮,添加本地文件

十一、控制浏览器滚动条

  • 滚动到顶部
    js = "var q=document.documentElement.scrollTop=0“
    driver.execute_script(js)
  • 滚动到底部
    js = "var q=document.documentElement.scrollTop=10000“
    driver.execute_script(js)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值