python selenium 实战涉及很多知识点
1、iframe的切入和切出
#切入
driver.switch_to.frame(driver.find_element_by_id('iFrame_1'))
# 切换出来
driver.switch_to.default_content()
2、句柄的切入和切出
main_windows = driver.current_window_handle
# 获取主窗口句柄
# main_handle = driver.current_window_handle
''' 指纹采集 '''
# 点击采集指纹 新页面
driver.find_element_by_xpath("//input[@id='button_20']").click() time.sleep(3)
# url_1 = "http://192.168.14.249/ywbl/jbyw/dzhz/CheckZw/007001007001334/$B/19940403/1560481330594" # 切换到最小弹出的窗口Windows的最后一个元素
# windows = driver.window_handles
# driver.switch_to.window(windows[-1]) # 切换回主窗口
all_windows = driver.window_handles
print(all_windows)
# 切换进注册页面
for handle in all_windows:
if handle != main_windows:
driver.switch_to.window(handle) # document.querySelector("#couseText").value='{}';
js = '''
document.querySelector('#couseText').value='{}';
'''.format("申请人未满十六周岁")
driver.execute_script(js) driver.find_element_by_xpath("//input[@id='OKButton']").click() rztext = driver.find_element_by_xpath("//span[@id='errorMsg']").get_attribute("value")
if rztext == '该数据已经做过指纹核验审批!':
driver.find_element_by_xpath("//input[@value='取 消']").click() time.sleep(5) # 重先定位到主页面,原来窗口
driver.switch_to.window(main_windows)
# 在切换到iframe里面才能找到下面的元素
driver.switch_to.frame(driver.find_element_by_id('iFrame_1'))
3、鼠标悬停
action = ActionChains(driver)
# 鼠标移动到该元素上,鼠标悬停,等待下拉框元素可见
ele = driver.find_element_by_xpath("//div[@id='fzgnbtZw']")
action.move_to_element(ele).perform()
4、鼠标定位移动点击
site = driver.find_element_by_xpath("//input[@title='输入关键字查询,双击显示前10条记录!']").location_once_scrolled_into_view
site1 = driver.find_element_by_xpath("//input[@title='输入关键字查询,双击显示前10条记录!']").location
windowsSite = driver.get_window_rect()
x,y = -1*site["x"],site1["y"]+windowsSite["y"]+10
time.sleep(1)
print(site,'\n',site1,'\n',windowsSite)
ActionChains(driver).move_by_offset(x,y).context_click().perform()
5、填下拉查询输入表使用延迟
driver.find_element_by_xpath(mainPath+"/input[@id='sbmacID']").send_keys("0021")
time.sleep(1)
driver.find_element_by_xpath("//div[@class='form-group']/div/div/div/input[@name='CODEVALUE_sblx']").send_keys("填表机")
time.sleep(1)
driver.find_element_by_xpath("//div[@class='form-group']/div/div/div/input[@id='CODEVALUE_lclxID']").send_keys("内地申请")
time.sleep(1)
driver.find_element_by_xpath("//input[@name='CODEVALUE_xzqh' and @id='CODEVALUE_xzqhID' and @class='form-control zd-input-sm input-sm form-control required']").send_keys("北京市辖区")
time.sleep(1)
driver.find_element_by_xpath("//div[@class='form-group']/div/div/input[@id='sbwzID']").send_keys("广州")
6、alert 弹框确定进行点击处理
# alert 点击弹框确定
Alert(driver).accept()
python selenium 实战涉及很多知识点的更多相关文章
- python+selenium 自动化测试实战
一.前言: 之前的文章说过, 要写一篇自动化实战的文章, 这段时间比较忙再加回家过11一直没有更新博客,今天整理一下实战项目的代码共大家学习.(注:项目是针对我们公司内部系统的测试,只能内部网络访问, ...
- Python爬虫实战八之利用Selenium抓取淘宝匿名旺旺
更新 其实本文的初衷是为了获取淘宝的非匿名旺旺,在淘宝详情页的最下方有相关评论,含有非匿名旺旺号,快一年了淘宝都没有修复这个. 可就在今天,淘宝把所有的账号设置成了匿名显示,SO,获取非匿名旺旺号已经 ...
- 第一章 python+selenium自动化测试实战
@序章 自动化测试是软件测试的主流方向之一: 教程从测试的根本需求出发,讲解如何开展自动化测试. 首先,我们要明白,自动化仅仅是满足我们某种需求的一种工具:没有必要花费时间把它全部弄懂:我们只需要学会 ...
- 《一头扎进》系列之Python+Selenium自动化测试框架实战篇6 - 价值好几K的框架,呦!这个框架还真牛叉哦!!!
1. 简介 本文开始介绍如何通过unittest来管理和执行测试用例,这一篇主要是介绍unittest下addTest()方法来加载测试用例到测试套件中去.用addTest()方法来加载我们测试用例到 ...
- 《一头扎进》系列之Python+Selenium框架实战篇7 - 年底升职加薪,年终奖全靠它!Merry Christmas
1. 简介 截止到上一篇文章为止,框架基本完全搭建完成.那么今天我们要做什么呢????聪明如你的小伙伴或者是童鞋一定已经猜到了,都测试完了,当然是要生成一份高端大气上档次的测试报告了.没错的,今天宏哥 ...
- 学霸笔记系列 - Python Selenium项目实战(一)—— 怎么去验证一个按钮是启用的(可点击)?
Q: 使用 Python Selenium WebDriver 怎么去验证一个按钮是启用的(可点击)? A:Selenium WebDriver API 里面给出了解决方法is_enabled() 使 ...
- bootstrap实战练习中涉及的知识点(很有用哦!)
看的有关视频做的笔记,对bootstrap中涉及的知识点做了一定的解析,很有用哦!(新手上路,有不合适的地方可以指出哦!) 下面进入正题: Bootstrap是当下最流行的前端框架(界面工具集) 特点 ...
- 《Python开发实战》
<Python开发实战> 基本信息 作者: (日)BePROUD股份有限公司 译者: 盛荣 丛书名: 图灵程序设计丛书 出版社:人民邮电出版社 ISBN:9787115320896 上架时 ...
- 历时一年《Python自动化测试实战》终于出版!!!
一.为什么会写这本书 1.系统梳理.可以加深自己对测试知识体系的系统梳理 2.名气.增加个人的名气,比如:面试时,可以很自豪的说,我是xxxx书的作者 3.利他.帮助有需要的学习者更系统.完备的学习和 ...
随机推荐
- 51nod 1172 Partial Sums V2
题目 给出一个数组A,经过一次处理,生成一个数组S,数组S中的每个值相当于数组A的累加,比如:A = {1 3 5 6} => S = {1 4 9 15}.如果对生成的数组S再进行一次累加操作 ...
- HDU 6033 - Add More Zero | 2017 Multi-University Training Contest 1
/* HDU 6033 - Add More Zero [ 简单公式 ] | 2017 Multi-University Training Contest 1 题意: 问 2^n-1 有几位 分析: ...
- C#与数据库有关的控件和属性
BindingNavigator 数据记录导航 BindingSource 与数据源绑定, 常用属性:DataSource.DataMember 常用方法: DataGridView 以表格形式显示 ...
- CCPC-Wannafly & Comet OJ 夏季欢乐赛(2019)G
题面 一道暴水的dp....别问我为什么直接打开了G题,我只是对题目名称感兴趣而已.... #include<bits/stdc++.h> #define ll long long usi ...
- sh_20_for语法演练
sh_20_for语法演练 for num in [1, 2, 3]: print(num) if num == 2: break else: # 如果循环体内部使用break退出了循环 # else ...
- JVM系列大纲
本系列主要分析JVM主要功能要点,初步大纲如下,会根据写作情况进行细化,目的在于梳理JVM的知识体系,具体分析文章会陆续发布. [JVM]类加载机制(1) [JVM]Java内存区域(2) [JVM] ...
- 「CSA Round #41」BFS-DFS
题目链接 戳我 \(Description\) 给出一个图的\(bfs\)序和\(dfs\)序,构造出一个满足条件的图,边的扫描顺序为读入顺序 \(Solution\) 这个题还是很简单的. 先来看看 ...
- JVM-GC算法(三)-分代收集算法
对象分类 上次已经说过,分代收集算法是针对对象的不同特性,而使用合适的算法,这里面并没有实际上的新算法产生.与其说分代收集算法是第四个算法,不如说它是对前三个算法的实际应用. 首先我们来探讨一下对象 ...
- vue 打包部署到服务器上 配置nginx访问
坑一 css,js资源引入不正确 webpack配置文件config/index.js 需要更改: 方法一 当部署到带有文件夹的项目中,这种绝对路径就会出现问题,因为把配置的static文件夹当成了根 ...
- postgres的数据库备份和恢复
备份和恢复 一条命令就可以解决很简单: 这是备份的命令: pg_dump -h 127/0.0.1 -U postgres databasename > databasename.bak 指令解 ...