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

一、启动浏览器

1、普通方式启动

#coding=utf-8

importtimefrom selenium importwebdriver

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

importtimefrom selenium importwebdriver

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操作浏览器是不加载配置的,加载配置需要手动配置,但是我的代码老报错,具体如下,求指点

#coding=utf-8

from selenium importwebdriver

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 importwebdriverimporttime

driver=webdriver.Chrome()

driver.get('http://www.taobao.com')

time.sleep(5)

driver.quit()

2、隐式等待

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

#coding=utf-8

from selenium importwebdriverimporttime

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 importwebdriverfrom selenium.webdriver.support.wait importWebDriverWaitfrom selenium.webdriver.support importexpected_conditions as ECfrom selenium.webdriver.common.by importBy

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()

五、浏览器操作

#coding=utf-8

from selenium importwebdriverimporttimeimportos

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 notos.path.exists(File_Path):

os.makedirs(File_Path)print("新建目录成功:%s" %File_Path)else:print("目录已存在")exceptBaseException 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语法_Python+Selenium基本语法相关推荐

  1. python selenium自动化_python selenium自动化之-环境搭建

    安装python和pip上述文章有介绍,在这里不在赘述.直接安装seleinum pip3 install selenium 安装完成以后, pip3 show selenium 显示 Name: s ...

  2. python自动化简历_python+selenium实现简历自动刷新的示例代码

    本文用到的文件的下载地址 百度网盘链接: https://pan.baidu.com/s/1tmpdEfAZKff5TOMAitUXqQ 提取码: e6at 1 安装Python 和 selenium ...

  3. 怎么用python自动注册_python selenium自动化(二)自动化注册流程

    需求:使用python selenium来自动测试一个网站注册的流程. 假设这个网站的注册流程分为三步,需要提供比较多的信息: 在这个流程里面,需要用户填入信息.在下拉菜单中选择.选择单选的radio ...

  4. python selenium 保存网页_python selenium+pywin32 实现网页另存为

    对网页进行爬取并另存时,遇到一个问题:selenium中键盘或是鼠标的操作都是以网页内的某个元素为对象,当遇到windows窗体时就无法继续操作,如下图. 我想点击另存为,并输入路径再点击保存按钮.. ...

  5. python double语法_python上手--基本语法和数据类型基础

    前面介绍了选择python开发工具的方法,根据需求和学习阶段的不同来选择不同的编译器.从本篇开始我们就选用Anaconda中的spyder模块作为开发编译平台,在下载过程中可以直接百度搜索anacon ...

  6. python简单语法_python的基本语法(一)

    1.print 打印:print("我是大佬") input("请输入你的名字:") 2.注释 ctrl+/ 表示选中多行注释(实际上是单行) #表示单行注释 ...

  7. python po设计模式_Python Selenium设计模式 - PO设计模式

    整理一下python selenium自动化测试实践中使用较多的po设计模式. 为什么要用PO 基于python selenium2开始开始ui自动化测试脚本的编写不是多么艰巨的任务.只需要定位到元素 ...

  8. python获取窗口句柄_Python+selenium 获取浏览器窗口坐标、句柄的方法

    1.0 获取浏览器窗口坐标 python目录可找到Webdriver.py 文件定义了get_window_rect()函数,可获取窗口的坐标和大小(长宽),但出现"Command not ...

  9. python页面切换_Python+Selenium学习--窗口切换及操作元素

    场景 有时候我们在测试一个web 应用时会出现多个浏览器窗口的情况,在selenium1.0 中这个问题比较难处理.webdriver 提供了相关相方法可以很轻松的在多个窗口之间切换并操作不同窗口上的 ...

最新文章

  1. 【青少年编程】【四级】数字反转
  2. [mysql] mysql 5.6.X 慢查询日志
  3. JSON字符串key缺少双引号的解决方法
  4. eclipse创建spring boot项目加载不到application.properties配置文件
  5. java课程设计进程管理_GitHub - Shadow-Java/OS: 操作系统课程设计,关键词:进程同步与互斥、进程死锁、LRU页面替换算法、时间片轮转算法、时钟等...
  6. java 粒子系统_Java粒子系统(烟火篇)
  7. as2 AVM1对象和as3对象的通信
  8. QCustomplot(一) 能做什么事
  9. 如何用代码对repeating section控件新增Item(InfoPath)
  10. Web前端期末大作业--响应式性感美女模特博客网页设计(HTML+CSS+JavaScript)实现
  11. 项目分层思路——管家婆
  12. 每天Leetcode 刷题 初级算法篇-有效的括号
  13. 04 . Filebeat简介原理及配置文件和一些案例
  14. usb接口的可变焦相机 对应没有彩虹的投影仪
  15. 最常用高频汉字前4000
  16. Charles 使用教程
  17. Linux实操篇-用户管理
  18. 计算机学科a类排名,哈工大17个学科排名位列A类
  19. 点赞 分数 20作者 陈越单位 浙江大学
  20. MATLAB天牛须搜索算法求解数据拟合和多参数优化问题代码实例

热门文章

  1. idea实现抽象类的所有抽象方法_父类子类抽象类,super final 重写方法,搞懂继承中复杂的知识点
  2. android window 半透明,popupWindow半透明背景
  3. 国外疫情严峻,口罩需求量增加,大批跨境卖家通过独立站销售防疫物资
  4. 企业真的有必要购买WMS系统吗?
  5. Leetcode每日一题:52.N-Queens II(N皇后Ⅱ)
  6. Mac在Anaconda中安装XGBoost
  7. CSS垂直居中的七个方法
  8. python 字符串 类型互相转换 str bytes 字符串连接
  9. 一个高并发的测试websocket脚本
  10. -1-3 java集合框架基础 java集合体系结构 Collection 常用java集合框架 如何选择集合 迭代器 泛型 通配符概念 Properties 集合 迭代器...