python自动化常用函数

导入time模块

import time

导入ActionChains模块(鼠标)

from selenium.webdriver.common.action_chains import ActionChains

导入Keys模块(键盘)

from selenium.webdriver.common.keys import Keys

导入Select模块(下拉框)

from selenium.webdriver.support.select import Select

导入WebdriverWait

from selenium.webdriver.support.wait import WebDriverWait

导入EC

from selenium.webdriver.support import expected_conditions as ec

浏览器基本操作(如打开浏览器、输入地址、网页最大化等)

一、打开网站

从selenium里面导入webdriver模块

from selenium import webdriver

打开谷歌浏览器

driver = webdriver.Chrome()

打开百度

driver.get("http://www.baidu.com")

二、设置等待时间

设置等待时间2秒,也可以是小数,单位是秒

time.sleep(2)

三、页面刷新

有时候页面操作后,数据可能没有及时同步,需要重新刷新

可以模拟刷新页面操作,相当于浏览器的刷新按钮

driver.refresh()

四、前进和后退

当打开俩个页面时,浏览器可以返回上一页,也可以切换到下一页

上一页

driver.back()

下一页

driver.forward()

五、设置窗口大小

设置窗口大小为600*800

drive.set_window_size(600, 800)

将窗口最大化

driver.maximize_window()

六、截屏

截屏后设置制定的保存路径+文件名称+后缀

driver.get_screenshot_as_file("C:\\Users\\Administrator\\Desktop\\test.jpg")

七、退出浏览器

close用于关闭当前窗口,打开窗口多的时候就可以用close关闭部分窗口

driver.close()

quit用于结束进程,关闭所有窗口

driver.quit()

Selenium元素定位方法:name定位

driver.find_element_by_name("username").clear()

driver.find_element_by_name("username").send_keys("admin")

Selenium元素定位方法:xpath定位

driver.find_element_by_xpath("/html/body/div[3]/form/div[3]/div/input").send_keys("admin.syzg")

Selenium元素定位方法:class_name定位

driver.find_element_by_class_name("btn").click()

Selenium元素定位方法:id定位

driver.find_element_by_id("sidebar_softs").click()

Selenium元素定位方法:link_text定位

driver.find_element_by_link_text(" 文档和资源").click()

Selenium元素定位方法:partial_link_text定位

driver.find_element_by_partial_link_text("添").click()

Selenium元素定位方法:css_selector定位

driver.find_element_by_css_selector("#res_title").send_keys("测试文档")

Selenium复数元素定位方法

# 1、id定位

als = driver.find_elements_by_id('i1')

als[0].send_keys('id定位')

# 2、class定位

bls = driver.find_elements_by_class_name('classname')

bls[0].send_keys('class定位')

# 3、css selector定位

cls = driver.find_elements_by_css_selector('input')

cls[2].send_keys('定位到第三个input输入框')

# 4、name定位:按照标签中的name属性定位

dls = driver.find_elements_by_name('name')

dls[0].send_keys('name定位')

# 5、link_text 文本内容定位

els = driver.find_elements_by_link_text('跳转')

els[0].click()

# 6、partial_link_text 模糊文本内容匹配

fls = driver.find_elements_by_partial_link_text('示例')

fls[0].click()

# 7、xpath 定位

gls = driver.find_elements_by_xpath('//input')

gls[4].send_keys('xpath 定位')

# 8、tag_name 标签名定位

hls = driver.find_elements_by_tag_name('input')

hls[5].send_keys('tag_name 标签名定位')

Selenium之鼠标模拟操作

使用前需要导入ActionChains类

from selenium.webdriver.common.action_chains import ActionChains

ActionChains类提供鼠标常用方法:

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

# context_click()右击

# double_click()双击

# drag_and_drop()拖到

# move_to_element()鼠标悬停

1.鼠标右击

定位到需要右击的元素

right_click = driver.find_element_by_id("xx")

对定位的元素执行右击操作

ActionChains(driver).context_click(right_click).perform()

2.鼠标双击

定位到需要双击的元素

double_click = driver.find_element_by_id("xx")

ActionChains(driver).double_click(double_click).perform()

3.鼠标拖动

开始位置:定位到元素的原位置

source = driver.find_element_by_id("xx")

结束位置:定位到元素要移动的目标位置

target = driver.find_element_by_id("xx")

执行元素的托放操作

ActionChains(driver).drag_and_drop(source, target).perform()

4.鼠标悬停

定位到要悬停的元素

move = driver.find_element_by_id("xx")

对定位的元素执行悬停操作

ActionChains(driver).move_to_element(move).perform()

Selenium之键盘模拟操作

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

回车键 Keys.ENTER

删除键 Keys.BACK_SPACE

空格键 Keys.SPACE

制表键 Keys.TAB

回退键 Keys.ESCAPE

刷新键 Keys.F5

导入Keys模块

from selenium.webdriver.common.keys import Keys

举例:全选操作

driver.find_element_by_id('kw').send_keys('AAAAAAAAAAAA')

driver.find_element_by_id("kw").send_keys(Keys.CONTROL, 'a') # 注意这里组合键的输入。

time.sleep(10)

driver.quit()

举例:回车键操作

driver.get("http://cn.bing.com/")

driver.find_element_by_id('sb_form_q').send_keys('selenium')

driver.find_element_by_id("sb_form_go").send_keys(Keys.ENTER) # 通过回车键来代替鼠标的左键

driver.quit()

submit使用

submit函数用于对信息进行提交,也可以使用click()进行代替,submit()要求提交对象是一个表单,click()更强调事件的独立性

Selenium之页面中下拉框的处理

导入Select模块

from selenium.webdriver.support.select import Select

根据索引选择

Select(driver.find_element_by_name("storeDeclare.cityLine")).select_by_index("3")

根据value值选择

Select(driver.find_element_by_name("storeDeclare.cityLine")).select_by_value("3线")

根据文本值选择

Select(driver.find_element_by_name("storeDeclare.cityLine")).select_by_visible_text("3线")

Selenium之操作下拉滚动条方法

竖向滚动条拉到最底

js = "var q = document.documentElement.scrollTop = 10000"

driver.execute_script(js)

横向滚动条控制

js = "window.scrollTo(100,400);"

driver.execute_script(js)

Selenium之窗口切换

每个浏览器窗口都有一个唯一的属性句柄(handle)来表示当前窗口句柄、所有窗口句柄

窗口切换

导入WebdriverWait

from selenium.webdriver.support.wait import WebDriverWait

打开百度首页

driver.implicitly_wait(10)

driver.get(r'https://www.baidu.com/')

获取当前窗口句柄

main_windows = driver.current_window_handle

print(main_windows)

进入注册

driver.find_element_by_link_text("登录").click()

这里加一个显示等待,不然有时会报找不到“立即注册这个元素”

WebDriverWait(driver, 20).until(lambda x: x.find_element_by_link_text("立即注册")).click()

获取当前所有打开的窗口句柄

all_windows = driver.window_handles

print(all_windows)

切换进注册页面

for handle in all_windows:

if handle != main_windows:

driver.switch_to.window(handle)

获取注册页面窗口句柄

register_windows = driver.current_window_handle

print(register_windows)

切换回百度首页

driver.switch_to.window(main_windows)

print(driver.title)

元素定位Selenium消息框处理(alert、confirm、prompt)

alert弹出个提示框(确定)

1、定位alert弹出框

点击页面元素,触发alert弹出框

driver.find_element_by_xpath('//*[@id="alert"]').click()

等待alert弹出框可见

WebDriverWait(driver, 20).until(ec.alert_is_present())

从html页面切换到alert弹框

alert = driver.switch_to.alert

获取alert的文本内容

print(alert.text)

选择“确定”

alert.accept()

confirm弹出个确认框(确定、取消)

2:定位confirm弹出框

driver.find_element_by_xpath('//*[@id="confirm"]').click()

time.sleep(3)

WebDriverWait(driver, 20).until(ec.alert_is_present())

alert = driver.switch_to.alert

print(alert.text)

接受–选择“取消”

alert.dismiss()

prompt弹出个输入框(确定、取消)

3:定位prompt弹出框

driver.find_element_by_id("prompt").click()

time.sleep(3)

WebDriverWait(driver, 20).until(ec.alert_is_present())

alert = driver.switch_to.alert

alert.send_keys("test")

time.sleep(5)

print(alert.text)

alert.dismiss()

alert.accept()

标签:定位,python,driver,element,click,模块,自动化,alert,find

来源: https://blog.csdn.net/qq_38375929/article/details/113864146

python keys模块_python自动化常用模块相关推荐

  1. python的主要应用领域及常用的函数模块_python之常用模块篇5

    一.日志模块,logging模块 1)logging模块简单使用,屏幕输出.默认级别30 import logging logging.debug('debug...') # 10logging.in ...

  2. python自动化常用模块_Python自动化 【第五篇】:Python基础-常用模块

    目录 模块介绍 time和datetime模块 random os sys shutil json和pickle shelve xml处理 yaml处理 configparser hashlib re ...

  3. python中common在哪个模块导入_python的常用模块之collections模块详解

    认识模块 什么是模块? 常见的场景:一个模块就是一个包含了python定义和声明的文件,文件名就是模块名字加上.py的后缀. 但其实import加载的模块分为四个通用类别: 1 使用python编写的 ...

  4. python模块讲解_python中常用模块详解一

    1.time 模块 import time s = time.localtime() # 把时间转化成格式化的时间,通过. 取得里面的年月日等 struct_time 格式 time.struct_t ...

  5. python 自动化办公要装哪些模块_Python自动化办公(内容)

    python自动化办公(python操作Excel.Word.PDF.PPT) python使用openpyxl操作excel: python使用PyPDF2和pdfplumber操作pdf: pyt ...

  6. python的窗口处理模块_python的图像处理模块

    除了opencv专门用来进行图像处理,可以进行像素级.特征级.语义级.应用级的图像处理外,python中还有其他库用来进行简单的图像处理,比如图像的读入和保存.滤波.直方图均衡等简单的操作,下面对这些 ...

  7. python安装os模块_python的os模块(ipython,文件,目录,权限,管理)

    什么是os模块 os模块提供了多数操作系统的功能接口函数.当os模块被导入后,它会自适应于不同的操作系统平台,根据不同的平台进行相应的操作,在python编程时,经常和文件.目录打交道,这时就离不了o ...

  8. python collections模块(数据结构常用模块)计数器Counter 双向队列deque 默认字典defaultdict 有序字典OrderedDict 可命名元组namedtuple

    collections 模块----Python标准库,是数据结构常用模块 常用类型有: 计数器(Counter) 双向队列(deque) 默认字典(defaultdict) 有序字典(Ordered ...

  9. python标准类型内建模块_Python内建模块struct实例详解

    本文研究的主要是Python内建模块struct的相关内容,具体如下. Python中变量的类型只有列表.元祖.字典.集合等高级抽象类型,并没有像c中定义了位.字节.整型等底层初级类型.因为Pytho ...

最新文章

  1. java 虚拟机的工作原理
  2. ceph 面试_终于有人把Ceph分布式存储讲清楚了!
  3. JPA 2.1: What is new
  4. 产品经理如何量化关键需求指标
  5. Java黑皮书课后题第7章:7.16(执行时间)编写程序,随机产生一个包含100 000个整数的数组和一个关键字。估算调用程序清单7-6中的linearSearch方法的执行时间
  6. 网络编程: 基于UDP协议的socket
  7. synchronized锁
  8. python怎么读取石墨表格_Python用Pandas读写Excel
  9. 6. 成交量基础分析
  10. Facebook 面向个性化推荐系统的深度学习推荐模型
  11. 每个时代都有每个时代的风口
  12. Spark standalone运行模式(图文详解)
  13. 自动驾驶7-3 自动驾驶汽车简介全面总结
  14. 网上商城项目总结报告
  15. Python 脚本查询 ip纯真数据库
  16. plc编程不是c语言,PLC编程中的五个常见问题
  17. 深圳平安银行软件测试面试,中国平安银行面试笔试题目 软件测试方向
  18. 刘强东的大格局:京东要抢食亿万级货运出行市场!
  19. bufg和bufgp_Xilinx FPGA全局时钟和第二全局时钟资源的使用方法(转)
  20. 使用Qt做一个简单计算器

热门文章

  1. 谷歌搜索语法 _一文教你做谷歌黑客
  2. 张文中复出,物美首次披露新零售转型内幕
  3. (跟我一起来学区块链(1.8))之 区块链缩短了信任的距离
  4. Web前端工程师需要掌握的技能有哪些?
  5. 【华为HCIA-5G学习笔记】06H_5G车联网解决方案介绍
  6. 干货分享:有什么软件可以让照片动起来?
  7. 查看虚拟机CentOS7 的 IP 地址
  8. 微软确立新模式:付费Win10成现金流
  9. Vue3 PC桌面端聊天室|vue3.0+elementPlus仿微信/QQ界面
  10. 第一章 为什么我们对机器学习感兴趣?(八)