Selenium2+python自动化71-多个浏览器之间的切换【转载】
前言
有时候一些业务的功能涉及到多个系统,需要在web系统1打开造一些数据,然后用到某些参数是动态生成的,需要调用web系统2里面的参数。
举个简单例子:在做某些业务的时候,需要手机短信验证码,我不可能去搞个手机连着电脑吧,那样太傻,我们的目的是获取短信验证码,短信验证码都有短信平台去查询。
当然能直接操作数据库最简单了,用python连数据库直接通过sql去查就行。
一、启动两个driver
1.如果我想启动2个火狐,一个火狐打开百度,另外一个火狐打开博客园,我们只需用2个实例driver去控制就行
(注意:不要两个都叫driver,要不然后面的会覆盖前面的,导致无法继续操作前面那个浏览器窗口了)
2.运行后结果,桌面启动2个窗口,一个打开了百度,一个打开了上海-悠悠 博客园
二、关掉窗口
1.driver1是控制第一个浏览器窗口的实例参数,driver2是控制第二个窗口的实例参数,如果想关掉第一个,driver1.quit()就行了
2.quit掉第一个浏览器窗口后,前面那个浏览器窗口就无法操作了,这里可以接着操作第二个浏览器窗口
# coding:utf-8
from selenium import webdriver
import time
# 启动第一个浏览器
driver1 = webdriver.Firefox()
driver1.get("https://www.baidu.com")
print(driver1.title)
# 启动第二个浏览器
driver2 = webdriver.Firefox()
driver2.get("http://www.cnblogs.com/yoyoketang/")
print(driver2.title)
# 关掉第一个浏览器窗口
driver1.quit()
# 点首页"博客园"按钮
driver2.find_element_by_id("blog_nav_sitehome").click()
time.sleep(2)
print(driver2.title)
三、封装启动浏览器方法
1.如果涉及到不同的浏览器(如Firefox、chrome)之间的切换,我们可以专门写一个函数去启动不同浏览器
四、参考代码
# coding:utf-8
from selenium import webdriver
def browser(browser='firefox'):
'''
open browser "firefox"、"chrome"、"ie"、"phantomjs"
usage:
driver = broswer("chrome")
'''
try:
if browser == "firefox":
driver = webdriver.Firefox()
return driver
elif browser == "chrome":
driver = webdriver.Chrome()
return driver
elif browser == "ie":
driver = webdriver.Ie()
return driver
elif browser == "phantomjs":
driver = webdriver.PhantomJS()
return driver
else:
print("Not found browser!You can enter 'firefox', 'chrome', 'ie' or 'phantomjs'")
except Exception as msg:
print "open browser error:%s" % msg
if __name__ == "__main__":
# 默认启动firefox
driver_firefox = browser()
driver_firefox.get("https://www.baidu.com")
print("open browser:%s" % driver_firefox.name)
print(driver_firefox.title)
# 启动第phantomjs
driver_pj = browser("phantomjs")
driver_pj.get("http://www.cnblogs.com/yoyoketang/")
print("open browser:%s" % driver_pj.name)
print(driver_pj.title)
Selenium2+python自动化71-多个浏览器之间的切换【转载】的更多相关文章
- Selenium2+python自动化41-绕过验证码(add_cookie)【转载】
前言 验证码这种问题是比较头疼的,对于验证码的处理,不要去想破解方法,这个验证码本来就是为了防止别人自动化登录的.如果你能破解,说明你们公司的验证码吗安全级别不高,那就需要提高级别了. 对于验证码,要 ...
- Selenium2+python自动化54-unittest生成测试报告(HTMLTestRunner)【转载】
前言 批量执行完用例后,生成的测试报告是文本形式的,不够直观,为了更好的展示测试报告,最好是生成HTML格式的. unittest里面是不能生成html格式报告的,需要导入一个第三方的模块:HTMLT ...
- Selenium2+python自动化59-数据驱动(ddt)【转载】
前言 在设计用例的时候,有些用例只是参数数据的输入不一样,比如登录这个功能,操作过程但是一样的.如果用例重复去写操作过程会增加代码量,对应这种多组数据的测试用例,可以用数据驱动设计模式,一组数据对应一 ...
- Selenium2+python自动化43-判断title(title_is)【转载】
前言 获取页面title的方法可以直接用driver.title获取到,然后也可以把获取到的结果用做断言. 本篇介绍另外一种方法去判断页面title是否与期望结果一种,用到上一篇Selenium2+p ...
- Selenium2+python自动化23-富文本(自动发帖)【转载】
前言 富文本编辑框是做web自动化最常见的场景,有很多小伙伴遇到了不知道无从下手,本篇以博客园的编辑器为例,解决如何定位富文本,输入文本内容 一.加载配置 1.打开博客园写随笔,首先需要登录,这里为了 ...
- Selenium2+python自动化42-判断元素(expected_conditions)【转载】
前言 经常有小伙伴问,如何判断一个元素是否存在,如何判断alert弹窗出来了,如何判断动态的元素等等一系列的判断,在selenium的expected_conditions模块收集了一系列的场景判断方 ...
- Selenium2+python自动化66-装饰器之运行失败截图【转载】
前言 对于用例失败截图,很多小伙伴都希望在用例执行失败的时候能自动截图,想法是很好的,实现起来并不是那么容易. 这里分享下我的一些思路,当然目前还没找到完美的解决方案,我的思路是用装饰器去解决,希望有 ...
- Selenium2+python自动化65-js定位几种方法总结【转载】
前言 本篇总结了几种js常用的定位元素方法,并用js点击按钮,对input输入框输入文本 一.以下总结了5种js定位的方法 除了id是定位到的是单个element元素对象,其它的都是elements返 ...
- Selenium2+python自动化53-unittest批量执行(discover)【转载】
前言 我们在写用例的时候,单个脚本的用例好执行,那么多个脚本的时候,如何批量执行呢?这时候就需要用到unittet里面的discover方法来加载用例了. 加载用例后,用unittest里面的Text ...
- Selenium2+python自动化26-js处理内嵌div滚动条【转载】
前言 前面有篇专门用js解决了浏览器滚动条的问题,生活总是多姿多彩,有的滚动条就在页面上,这时候又得仰仗js大哥来解决啦. 一.内嵌滚动条 1.下面这张图就是内嵌div带有滚动条的样子,记住它的长相.
随机推荐
- android-ViewList的通用ViewHold
在写ViewList的时候要写Adapter的时候,经常大量的代码都是差不多的. 1 ViewHold 2 if(convertView ==null ){}else{} 3 setTag 4 FIn ...
- java面笔准备
这套面试题主要目的是帮助那些还没有java软件开发实际工作经验,而正在努力寻找java软件开发工作的朋友在笔试时更好地赢得笔试和面试.由于这套面试题涉及的范围很泛,很广,很杂,大家不可能一天两天就看完 ...
- C#程序中SQL语句作为函数参数形式问题
今天遇到一个神奇现象,目前正在写一个Demo,人事管理系统,首先肯定是初始化主页面,在初始化时,需要声明一个登陆窗体,但是当我在登陆窗体中填入登入名称和密码时直接就登陆成功了,但是发现我的status ...
- linux基本操作2
将当前用户目录下的文件清单输出到文件list1.txt(当前用户目录下)中ls -l > list1.txt 利用管道命令将根(/)下所有修改日期在4月16日的文件清单输出到list2.txt( ...
- 玩转VFS(sys_open, overlayfs, rename)
带着问题学习dentry 1)文件删除时 dentry的结构是如何变化的?是直接设置无效的吗?如果此时正好有个访问是在要删除目录下的一个文件,这咋办呢? 2)内核document目录下级联式地使用 d ...
- 关于IE缓存
为了提高访问网页的速度,Internet Explorer浏览器会采用累积式加速的方法,将你曾经访问的网页内容(包括图片以及cookie文件等)存放在电脑里.这个存放空间,我们就称它为IE缓存.以后我 ...
- [洛谷P3413]SAC#1 - 萌数
题目大意:求$[l,r](0\leqslant l<r< 10^{1001})$中存在长度至少为$2$的回文串的数字数 题解:数位$DP$,发现如果有回文串,若长度为偶数,一定有两个相同的 ...
- [洛谷P1747]好奇怪的游戏
题目大意:有两匹马,马可以走"日",也可以像象走"田",求它走到(1,1)的步数. 题解:bfs 卡点:边界判断成了可以走到(0,y)或(x,0) C++ Co ...
- ListView获取网络数据并展示优化练习
权限: <uses-permission android:name="android.permission.INTERNET"></uses-permission ...
- Bash script: report largest InnoDB files
The following script will report the largest InnoDB tables under the data directory: schema, table & ...