对Selenium自动化已有了解,最近开始做h5端的自动化,所以总结了下Python+Selenium自动化基本语法

一、启动浏览器

1、普通方式启动

#coding=utf-8
import time
from selenium import webdriver
driver = webdriver.Chrome()  #启动Chrome浏览器
driver = webdriver.Firefox()  #启动Firefox浏览器
driver = webdriver.Ie  #启动IE浏览器
driver.get("http://www.taobao.com")
time.sleep(3)

2、Headless方式启动

Headless Chrome是Chrome浏览器的无界面形态,可以在不打开浏览器的条件下,使用Chrome所有支持的特性

#coding=utf-8
import time
from selenium import webdriver
options=webdriver.ChromeOptions()
options.add_argument('--headless')  #设置无界面选项
options.add_argument('--disable-gpu')
driver=webdriver.Chrome(options=options)
driver.get('http://www.taobao.com')
print(driver.page_source)

3、加载配置启动浏览器

Selenium操作浏览器是不加载配置的,加载配置需要手动配置,但是我的代码老报错,具体如下,求指点

'''
遇到问题没人解答?小编创建了一个Python学习交流QQ群:778463939
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
#coding=utf-8
from selenium import webdriver
option=webdriver.ChromeOptions()
option.add_argument('--user-data-dir=')
driver=webdriver.Chrome(options=option)
driver.get('http://www.taobao.com')

二、元素定位

自动化的核心是定位元素,Selenium提供了八种定位元素的方法,常见如下

1、定位单个元素

  • id定位:driver.find_element_by_id()

  • name定位:driver.find_element_by_name()

  • class定位:driver.find_element_by_class_name()

  • link定位:driver.find_element_by_link_text()

  • partial link定位:driver.find_element_by_partial_link_text()

  • tag定位:driver.find_element_by_tag_name()

  • css定位:driver.find_element_by_css_selector()

  • xpath定位:driver.find_element_by_xpath()

2、定位一组元素取下标定位

  • id定位:driver.find_elements_by_id()[]

  • name定位:driver.find_elements_by_name()[]

  • class定位:driver.find_elements_by_class_name()[]

  • link定位:driver.find_elements_by_link_text()[]

  • partial link定位:driver.find_elements_by_partial_link_text()[]

  • tag定位:driver.find_elements_by_tag_name()[]

  • css定位:driver.find_elements_by_css_selector()[]

  • xpath定位:driver.find_elements_by_xpath()[]

3、class定位

class定位主要是利用元素的css样式表所引用的伪类名称来进行元素查找,实际定位时,会经常发现一个元素的class name是由多个class组成的复合类,以空格隔开

class含空格解决办法有

(1)class属性唯一但有空格,选择空格两边唯一的那一个

(2)空格隔开的class不唯一,用索引定位

(3)通过css方法定位,空格用.代替

4、xpath定位

xpath就是XML path,可以用xpath来定位html文档中的任意元素,xpath定位是对整个文档进行扫描来定位元素,效率比较低

  • a.xpath有绝对路径和相对路径,绝对路径用/,相对路径用//

  • b.xpath以/开头表示让解析引擎从文档的根节点开始,以//开头表示让解析引擎从文档的任意符合的元素节点开始解析

  • c.xpath路径中有/表示寻找父节点的直接子节点,路径中有//表示寻找父节点所有符合的子节点

5、css定位

css定位和xpath定位类似,但是css执行速度比较快

6、xpath和css定位

三、等待

1、强制等待

强制等待就是不管程序是否加载完成,都需要等待对应的时间

#coding=utf-8
from selenium import webdriver
import time
driver=webdriver.Chrome()
driver.get('http://www.taobao.com')
time.sleep(5)
driver.quit()

2、隐式等待

隐式等待通过添加webdriver的implicitly_wait()方法,隐式等待设置了一个最长等待时间,如果在规定的时间内页面加载完成后,会立马执行下一步,否则会等待时间截止才执行下一步,隐式等待对webdriver整个周期起作用,所以只需要设置一次

'''
遇到问题没人解答?小编创建了一个Python学习交流QQ群:778463939
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
#coding=utf-8
from selenium import webdriver
import time
driver=webdriver.Chrome()
driver.get('http://www.taobao.com')
driver.implicitly_wait(10)
driver.quit()

3、显式等待

显式等待使用WebDriverWait,配合该类的until()或者until_not()方法,根据判断条件灵活等待,显式等待是程序每隔几秒检查一下条件是否成立,成立了则执行下一步,不成立则继续等待,直到超过了最长等待时间,再抛出异常

WebDriverWait调用方法:

WebDriverWait(driver,超时时长,调用频率,忽略异常).until(可执行方法,超时时返回的信息)

  • driver:WebDriver实例
  • timeout:超时时间

调用频率是调用until或until_not中的方法的间隔时间,默认是0.5秒
忽略的异常,如果在调用until或until_not的过程中抛出这个元组中的异常,则不中断代码,继续等待,如果抛出的是这个元组外的异常,则中断代码,抛出异常

until或者until_not的可执行方法参数一定要是可调用的,即一定要用call()方法,否则会抛出异常,可以用selenium提供的expected_conditions模块中的条件

#coding=utf-8
from selenium import webdriver
from selenium.webdriver.support.wait  import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
driver=webdriver.Chrome()
driver.get('http://www.taobao.com')
driver.implicitly_wait(10)
WebDriverWait(driver,5).until(EC.title_is(u"淘宝网 - 淘!我喜欢"))
#判断某个元素是否被加到dom树种,该元素不一定可见
WebDriverWait(driver,5).until(EC.presence_of_element_located((By.CSS_SELECTOR,'.btn-login.ml1.tb-bg.weight')))
#判断某个元素是否可见
WebDriverWait(driver,5).until(EC.visibility_of_element_located((By.CSS_SELECTOR,)))
#判断元素是否可见,传定位的element
WebDriverWait(driver,5).until(EC.visibility_of(driver.find_elements_by_css_selector('.btn-login.ml1.tb-bg.weight')),"未找到该元素")
driver.quit()

五、浏览器操作

'''
遇到问题没人解答?小编创建了一个Python学习交流QQ群:778463939
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
#coding=utf-8
from selenium import webdriver
import time
import os
driver=webdriver.Chrome()
driver.get('http://www.taobao.com')
driver.maximize_window()  #浏览器放大
time.sleep(5)
driver.get_screenshot_as_file('.\\1.png')  #截图
picture_time=time.strftime("%Y-%m-%d-%H_%M_%S", time.localtime(time.time()))
directory_time=time.strftime("%Y-%m-%d", time.localtime(time.time()))
try:File_Path = os.getcwd() + '\\' + directory_time + '\\'if not os.path.exists(File_Path):os.makedirs(File_Path)print("新建目录成功:%s" %File_Path)else:print("目录已存在")
except BaseException as msg:print("新建目录失败:%s" %msg)
driver.save_screenshot('.\\' + directory_time + '\\' + picture_time + '.png')  #截图
driver.quit()

六、键盘操作

调用键盘事件需要引入keys包

引入方法from selenium.webdriver.common.keys import Keys

通过send_keys()调用按键

send_keys(Keys.TAB)send_keys(Keys.ENTER)send_keys(Keys.CONTRAL,'a')

七、鼠标事件

需要引入ActionChains类

引入方法from selenium.webdriver.common.action_chains import ActionChains

ActionChains类常用方法:

perform() 执行所有ActionChains中存储的行为

context_click() 右击double_click() 双击drag_and_drop() 拖动move_to_element() 鼠标悬停

Python+Selenium基本语法相关推荐

  1. python selenium语法_Python+Selenium基本语法

    对Selenium自动化已有了解,最近开始做h5端的自动化,所以总结了下Python+Selenium自动化基本语法 一.启动浏览器 1.普通方式启动 #coding=utf-8 importtime ...

  2. python解释器在语法上不支持 编程方式-python解释器在语法上不支持什么编程方式_后端开发...

    python程序的两种运行方式是什么_后端开发 python程序的两种运行方式是:1.使用REPL模式运行,REPL模式即读取-计算-打印-循环的模式,借助的工具是IDLE(python集成开发环境) ...

  3. python+selenium十:selenium的二次封装

    python+selenium十:基于原生selenium的二次封装 from selenium import webdriverfrom selenium.webdriver.support.wai ...

  4. 快速搭建Python+Selenium+Sublime 自动化测试环境方法

    随着业内越来越多的公司对自动化测试的大力推行,对测试人员能够使用自动化工具的要求也随之增多.为了能让更多的同事在学习selenium的初期,能够顺利的迈出第一步,即可以通过代码操作selenium d ...

  5. python 自动化框架_学会Python+Selenium,分分钟搭建Web自动化框架!

    用python+selenium实现UI自动化测试,要有一些HTML和xpth的基础,当然python基础一定是必须要会的.笔者建议花点时间了解下相关基础知识,不至于后面发懵. 一.什么是seleni ...

  6. python selenium 获取元素下的元素个数_Python + Selenium,分分钟搭建 Web 自动化框架!(送自动化测试书籍)...

    前言 在程序员的世界中,一切重复性的工作,都应该通过程序自动执行.「自动化测试」就是一个最好的例子.随着互联网应用开发周期越来越短,迭代速度越来越快,只会点点点,不懂开发的手工测试,已经无法满足如今的 ...

  7. python selenium右键另存为_手把手教你系列练习篇之1python+ selenium自动化测试(详细教程)...

    1.简介 相信各位小伙伴或者同学们通过前面已经介绍了的Python+Selenium基础篇,通过前面几篇文章的介绍和练习,Selenium+Python的webUI自动化测试算是 一只脚已经迈入这个门 ...

  8. Python + Selenium,带你分分钟搭建 Web 自动化测试框架!

    在程序员的世界中,一切重复性的工作,都应该通过程序自动执行.「自动化测试」就是一个最好的例子. 随着互联网应用开发周期越来越短,迭代速度越来越快,只会点点点,不懂开发的手工测试,已经无法满足如今的业务 ...

  9. python测试系列教程——python+Selenium+chrome自动化测试框架

    全栈工程师开发手册 (作者:栾鹏) python教程全解 需要的环境 浏览器(Firefox/Chrome/IE-) Python Selenium Selenium IDE(如果用Firefox) ...

最新文章

  1. Tableau10.0学习随记-分组问题
  2. 机房为什么要设计冷热通道,设计原则及如何施工?
  3. div+css相对定位和绝对定位
  4. HDFS的exists函数解析
  5. 第一章 PX4程序编译过程解析
  6. 常用JavaScript 收集
  7. vue 圆形 水波_vue 开发波纹点击特效组件
  8. quartz2.3.0(六)job任务异常处理方式
  9. python协程详解_彻底搞懂python协程-第一篇(关键词1-4)
  10. 大数据平台需求调研大纲模板
  11. 重复渐变过渡 百分比
  12. Android静默拍照(无感知拍照)
  13. 锤子科技 锤子便签APP产品使用用户体验报告
  14. BigDecimal 金额转换
  15. 禁道具和连携击败姜世离的两种战术
  16. Neural Collaborative Filtering(NCF) 学习笔记
  17. android绘制圆角矩形
  18. 理解并演示:SNMP简单网络管理协议(200-120新考点)
  19. 装备系统学习--GameGrind教程
  20. 根据国防科大论文确定的特征点坐标拟合平面方程-拟合优度分析

热门文章

  1. 【30集iCore3_ADP出厂源代码(ARM部分)讲解视频】30-10底层驱动之I2C
  2. (原)ubuntu14.04中安装gcc4.9和g++4.9
  3. maven的环境搭建
  4. [转]C语言茶余饭后之if...else PK switch...case
  5. java 枚举高级应用_【后端】java基础(5.6)java高级基础之枚举
  6. matlab gui设计实例_S-Funciton应用实例
  7. 【学习笔记】CO内部订单
  8. 35、Power Query-分组中国式排名
  9. win7 64位数据库连接问题:在指定的 DSN 中,驱动程序和应用程序之间的体系结构不匹配
  10. SAP用户权限控制大解析及权限进阶分析