Python自动化

目录

一.自动化环境的搭建

二.使用selenium

三.元素定位

四.元素等待

五.操控元素

六.Selenium  WebDriver的属性 

七.Selenium屏幕截图

八.Selenium定位frame和iframe

九.下载Selenium的IDE(帮助初学者去录制测试的过程) 


一.自动化环境的搭建

  • 在pycharm终端上输入  pip  insatll  selenium来安装
  • 安装浏览器对应驱动
  1.   查看浏览器对应版本
  2. 下载对应版本浏览器驱动
  3. 下载好的放在path里       

二.使用selenium

from selenium import webdriver
#启动浏览器
driver=webdriver.Edge()
#输入网址
driver.get('https://baidu.com')
#关闭浏览器
driver.quit()

三.元素定位

  • 根据元素id去定位元素
from selenium import webdriver
from selenium.webdriver.common.by import By  #需要去导入by
#开始驱动
driver=webdriver.Edge()
#输入网址
driver.get("https://baidu.com")
#查找输入框元素,使用id
element=driver.find_element(By.ID,'kw')
element.send_keys('通讯')
#关闭浏览器
driver.quit()
  • 根据元素class  name属性进行元素定位Python自动化_第1张图片

find_elements:选择符合条件的所有元素,没有符合条件元素,返回空列表

find_element:选择符合条件的第一个元素,没有符合条件元素,会抛出异常

  •  根据标签名定位元素(tag_name) ,一般是<>后面的名称

Python自动化_第2张图片

  • 通过CSS  Selector来选择元素

定义:CSS告诉浏览器选择什么元素,显示成什么样子      Python自动化_第3张图片

Python自动化_第4张图片

  • 通过XPATH来选择元素

Python自动化_第5张图片

四.元素等待

  • 隐式等待 implicitly_wait(当发现元素没有找到时,不立即返回找不到元素的错误,而是周期性的寻找,直到找到元素或者超过最长参数会报异常)

缺点:JavaScript一般都是放在body后面加载,实际上页面元素已经加载完毕,还要等待全部页面加载结束

优点:隐式等待对整个driver周期都起作用,在最开始设置一次就可以        

Python自动化_第6张图片

  • 强制等待  time.sleep(程序执行的速度比浏览器渲染的时间长,所有有时候会找不到元素,此时需要强制等待,但这个等待时长不能很好控制)

from  time  import sleep

优点:在脚本调试时使用,方便快捷

缺点:导致项目自动化时间无线延长

Python自动化_第7张图片

  • 显示等待 WebDriverWait
引入显示等待模块路径  from selenium.webdriver.support.wait import WebDriverWait WebDriverWait的参数:

Python自动化_第8张图片

五.操控元素

  • 点击元素(调用click方法)

Python自动化_第9张图片

  • 输入框输入元素(需要先把输入框已有元素清除,调用clear)

Python自动化_第10张图片

  • 获取元素展示在界面上的内容(用text)

Python自动化_第11张图片

  • 获取元素属性(get_attribute)

Python自动化_第12张图片

  • 获取整个元素的HTML
  1. 获取整个元素对应的HTML的文本内容,使用   element.get_attribute('outerHTML')

Python自动化_第13张图片

    2.获取某个元素内部的HTML内容,使用     element.get_attribute('innerHTML')

Python自动化_第14张图片

  •  获取input输入框的内容,不能用text来获取,需要使用  element.get_attribute('value')

Python自动化_第15张图片   

  •  切换窗口(使用句柄)

Python自动化_第16张图片

  • 选择框
  1. radio框   Python自动化_第17张图片

Python自动化_第18张图片

     2.checkbox选择框   Python自动化_第19张图片

Python自动化_第20张图片

3.select选择框Python自动化_第21张图片

Python自动化_第22张图片

多选(先清除所有选项,在选择需要的内容)

Python自动化_第23张图片

  •  鼠标的点击、拖拽、移动等(通过selenium里提供的ActionChains类)

Python自动化_第24张图片

1.通过鼠标的动作来操作

单击鼠标左键 :click(on_element=None)
单击鼠标右键:context_click(on_element=None)
单击鼠标左键不松开:click_and_hold(on_element=None) 
双击鼠标左键:double_click(on_element=None) 
将鼠标从某个元素(source)按下去拖拽到某个元素(target)然后松开:drag_and_drop(source, target)
将鼠标从某个元素(source)拖拽到某个坐标然后松开:drag_and_drop_by_offset(source, xoffset, yoffset)
鼠标从当前位置移动到某个坐标:move_by_offset(xoffset, yoffset) 
鼠标移动到某个元素:move_to_element(to_element)
移动到距某个元素(左上角坐标)多少距离的位置:move_to_element_with_offset(to_element, xoffset, yoffset)
在某个元素位置松开鼠标左键:release(on_element=None)
执行链条中所有操作:perform()
 

from selenium import webdriver
from selenium.webdriver.common.by import By
from  selenium.webdriver.common.action_chains import ActionChains
#开始启动驱动
driver=webdriver.Edge()
#输入网址
driver.get('http://baidu.com')
#页面放大
driver.maximize_window()
#隐式等待
driver.implicitly_wait(10)

#鼠标移动到某个元素进行点击

#调用这个实例对象
ac=ActionChains(driver)
#先定位这个元素
# soutu_btu=driver.find_element(By.LINK_TEXT,'新闻')
#调用这个实例对象
# ac=ActionChains(driver)
#鼠标移动
# ac.move_to_element(soutu_btu).click().perform()
#隐式等待
# driver.implicitly_wait(10)

  • 冻结界面(当光标移动走后,我们界面消失,就不能选取显示界面里的一些工具)

在控制台里面加上     setTimeout(function(){debugger},5000)

  • 对话框 
  1.  alert弹出框(显示通知信息,用户看完信息后,点击OK就可以)         
driver.switch_to.alert.accept() #点击OK按钮
driver.switch_to.alert.text() #获取弹出框的信息内容

    2.confirm弹出框(需要用户确认,是确定还是取消)

driver.switch_to.alert.accept() #点击OK按钮
driver.switch_to.alert.dismiss() #点击取消按钮

   3.prompt弹出的框需要输入信息

driver.switch_to.alert.accept() #点击OK按钮
driver.switch_to.alert.dismiss() #点击取消按钮
driver.switch_to.alert.send_keys() #输入内容

六.Selenium  WebDriver的属性 

Python自动化_第25张图片

from selenium import webdriver
from selenium.webdriver.common.by import By
#开始浏览器的驱动
driver=webdriver.Edge()
#输入网址
driver.get('https://baidu.com')
#隐式等待
driver.implicitly_wait(5)
#放大窗口
driver.maximize_window()
#打印浏览器名称
print(driver.name)
#打印浏览器的url
print(driver.current_url)
#打印浏览器的title
print(driver.title)
#打印句柄
print(driver.window_handles)
#打印源码
print(driver.page_source)

#关闭浏览器
driver.quit()

七.Selenium屏幕截图

Python自动化_第26张图片

  • 截图,自己命名图片名称
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.action_chains import ActionChains
from time import sleep,strftime,localtime,time
#启动驱动
driver=webdriver.Edge()
#输入网址
driver.get('http:baidu.com')
#找到输入框输入selenium点击
element=driver.find_element(By.XPATH,'//*[@id="kw"]').send_keys('selenium')
#点击百度一下
driver.find_element(By.XPATH,'//*[@id="su"]').click()
sleep(2)
#截图
# driver.get_screenshot_as_file('selenium自动化.png')
  •  通过时间来保存文件
from time import sleep,strftime,localtime,time
#字符串格式化时间
st=strftime("%Y-%m-%d-%H-%M-%S",localtime(time()))
fime_name=st + '.png'
driver.get_screenshot_as_file(fime_name)
  • 把所有截图都放在一个目录里面
import os
#字符串格式化时间
st=strftime("%Y-%m-%d-%H-%M-%S",localtime(time()))
fime_name=st + '.png'

#找到路径
path=os.path.abspath('scrennshot')
#路径命名
file_path=path+"/"+fime_name
driver.get_screenshot_as_file(file_path)

八.Selenium定位frame和iframe

Python自动化_第27张图片

Python自动化_第28张图片

Python自动化_第29张图片

九.下载Selenium的IDE(帮助初学者去录制测试的过程) 

1.更多---chrom应用商店---扩展程序----搜索selenium IDE---进行下载

2.selenium IDE的界面

Python自动化_第30张图片

3.实现录制的步骤

创建一个项目---创建一个测试用例--输入测试地址--点击开始录制--进行测试操作--停止录制

你可能感兴趣的:(python,python)