Selenium Webdriver重新使用已打开的浏览器实例
本文转自:http://blog.csdn.net/wwwqjpcom/article/details/51232302
本文中的样例均使用SoapUI ,关于SoapUI+Webdriver 的配置,请看上一篇:
http://blog.csdn.net/wwwqjpcom/article/details/51174664
The WebDriver Wire Protocol 协议的具体内容请看:https://code.google.com/p/selenium/wiki/JsonWireProtocol#Introduction。 这个协议现在正在被W3C标准化,W3C Webdriver,两者基本一样。
W3C Webdriver标准协议内容:http://www.w3.org/TR/webdriver/
根据上文,Webdriver 想要执行命令,需要1:WebdriverServer的地址 2:一个可用的SessionID 。
写一个自己的WebDriver类来new一个Webdriver。
其中的初始化代码如下(需要两个参数 Webdriver 的地址和SessionID):
public myFirefoxDriver(String localserver,String sessionID){mystartClient(localserver);mystartSession(sessionID);}
代码例子:
测试用例1中打开浏览器,但是不退出关闭浏览器:
import org.openqa.selenium.By
import org.openqa.selenium.WebDriver
import org.openqa.selenium.WebElement
import org.openqa.selenium.firefox.FirefoxDriver
import org.openqa.selenium.support.ui.ExpectedCondition
import org.openqa.selenium.support.ui.WebDriverWait
import org.openqa.selenium.OutputType
import org.apache.commons.io.FileUtils
import org.openqa.selenium.KeysWebDriver driver = new FirefoxDriver() try
{
driver.get("https://learnsoapui.wordpress.com") // Url to be opened//下面两行将所需的地址和SessionID 保存起来。样例因为是在SoapUI中的两个Step,所以保存为了SoapUI中
//用例级别的属性,具体请根据自己的使用环境保存为系统参数或其他地方
testRunner.testCase.setPropertyValue( "DriverServer", driver.getCommandExecutor().getAddressOfRemoteServer().toString() )
testRunner.testCase.setPropertyValue( "CaseSession", driver.getSessionId().toString() )
log.info driver.getSessionId().toString()WebElement element = driver.findElement(By.id("s"))element.sendKeys("Assertion")File f1 = driver.getScreenshotAs(OutputType.FILE)FileUtils.copyFile(f1, new File("c:\\screenshot1.png")); // Location to save screenshotelement.submit()driver.getKeyboard ().pressKey (Keys.DOWN)driver.getKeyboard ().pressKey (Keys.DOWN)driver.getKeyboard ().pressKey (Keys.DOWN)driver.getKeyboard ().pressKey (Keys.UP)driver.getKeyboard ().pressKey (Keys.UP)driver.getKeyboard ().pressKey (Keys.UP)
}
catch(Exception e)
{
log.info "Exception encountered : " + e.message
}
测试用例2中继续使用1中已打开的浏览器:
import webtest.myFirefoxDriver;
import org.openqa.selenium.By
import org.openqa.selenium.WebDriver
import org.openqa.selenium.WebElement
import org.openqa.selenium.firefox.FirefoxDriver
import org.openqa.selenium.JavascriptExecutor//下面三行,取出保存的可用的浏览器的Webdriver Server的地址和SessionID,new一个Webdriver。
def driverserver = testRunner.testCase.getPropertyValue( "DriverServer" )
def caseSession = testRunner.testCase.getPropertyValue( "CaseSession" )
WebDriver driver = new myFirefoxDriver(driverserver,caseSession)log.info (driver.getCommandExecutor().getAddressOfRemoteServer())try
{
driver.findElement(By.linkText("Home")).click()// Url to be opened
driver.findElement(By.linkText("About Author")).click()// Url to be openedlog.info driver.getSessionId().toString()log.info driver.getCapabilities()((JavascriptExecutor)driver).executeScript("alert(\"hello,this is a alert!\")");//driver.quit()
}
catch(Exception e)
{
log.info "Exception encountered : " + e.message
}
注意代码中的文字注释下方部分,1中要将WebdriverServer的地址和SessionID 保存起来,
2中使用1中保存的参数,用实现的自己的myFirefoxDriver来初始化driver。
(此处感谢https://learnsoapui.wordpress.com/ , 我最初研究在SoapUI中使用Selenium
Webdriver看了这个,虽然感觉他讲的也是不明不白的 ,但是给了我启发)。
注:(1)webtest01.jar是我在Selenium 2.48.2版本的代码下编译的,本人只配合用过Selenium 2.48.2 和Selenium 2.53.0这两个版本可用,其他的Selenium版本我是没试过的,说不定老版本不支持的。) (2)实际中myFirefoxDriver不仅可以在本地用,用来RemoteWebdriver远程调用也是可以用的,即打开 RemoteWebdriver,然后用myFirefoxDriver来继续使用远程的那个已打开的浏览器实例,反正是只需要那两 个参数就可以,反正我自己用的时候这种情况也是是可以用的。仅供参考,不提供技术支持,呃,后果自负哦。
<script type="text/javascript">$(function () {$('pre.prettyprint code').each(function () {var lines = $(this).text().split('\n').length;var $numbering = $('<ul></ul>').addClass('pre-numbering').hide();$(this).addClass('has-numbering').parent().append($numbering);for (i = 1; i <= lines; i++) {$numbering.append($('<li></li>').text(i));};$numbering.fadeIn(1700);});});</script>
Selenium Webdriver重新使用已打开的浏览器实例相关推荐
- Selenium Webdriver重新使用已打开的浏览器实例(Chrome版)
昨天百度了半天关于Selenium Webdriver怎样重新使用已打开的浏览器的问题,就找到了这么位大佬的文章: https://blog.csdn.net/wwwqjpcom/article/de ...
- python控制已经打开的浏览器_使用python+selenium控制手工已打开的浏览器
我们可以利用Chrome DevTools协议.它允许客户检查和调试Chrome浏览器. 打开cmd,在命令行中输入命令: chrome.exe --remote-debugging-port=922 ...
- selenium 如何在已打开的浏览器上直接自动化脚本
selenium 如何在已打开的浏览器上继续运行自动化脚本? 前言: selenium测试网页每次登录都需要从头到尾登录到底,令人心烦: 此文章为直接在已打开.已登录/验证的网页运行提供方法: 一.配 ...
- selenium 自动打开Chrome浏览器且重复使用已打开的Chrome实例
好处还能有啥?就是偷懒呗,打开脚本就跑,还管浏览器干啥. 如何使用已打开Chrome,其他文章讲很多了,也不多说,这里主要参考的这片文章 selenium 使用已打开的chrome浏览器_YeLang ...
- python接管已经打开ie浏览器_使用selenium控制(接管)已打开的浏览器(chrome),并通过WebDriver值检测...
在使用selenium进行自动化测试中我们有时会遇到这样的情况: 我们需要手动打开浏览器,进入到所需的页面,执行一些手动任务,如输入表单.输入验证码,登陆成功后,然后再开始运行自动化脚本. 这种情况下 ...
- 使用Selenium控制已打开的浏览器和网页
使用Selenium控制已打开的浏览器和网页 之前遇到一个需求,就是需要登录某一个网站然后需要通过selenium从网页上自动获取一些信息:该网站需要通过手机验证码登录,通过selenium自动化登录 ...
- python selenium+firefox 使用已打开的火狐浏览器进行操作(不需要每次都重新打开火狐)
使用selenium操作时,每次使用webdriver.Firefox()都要重新弹出火狐窗口,效率非常低,所以我一直在查,selenium能不能在已打开的浏览器上操作,发现该模块没有这个功能,那说明 ...
- selenium如何控制已打开浏览器
在使用selenium进行Web自动化的时候,部分网站会有验证码.缓存等等原因,需在登录后再进行后续自动化.此时,就需控制在已打开的浏览器,在此,以 Chrome为例进行分析. 1.确定当前浏览器驱动 ...
- 如何利用 Selenium 对已打开的浏览器进行爬虫!
大家好,我是安果! 在对某些网站进行爬虫时,如果该网站做了限制,必须完成登录才能展示数据,而且只能通过短信验证码才能登录 这时候,我们可以通过一个已经开启的浏览器完成登录,然后利用程序继续操作这个浏览 ...
最新文章
- 第二十一课.DeepGraphLibrary(二)
- pyhon学习问题汇总
- tensorflow 读取cifar_浅入浅出TensorFlow 4 - 训练CIFAR数据
- java软件字如何放大_放大Java Swing应用程序
- Docker存储驱动之OverlayFS简介
- 浅谈C++设计模式之工厂方法(Factory Method)
- ae画面颜色一键选取替换修改插件Composite Brush for Mac 1.5.2
- Shiro实战hello
- 7-138 打印沙漏 (20 分)
- 15个最佳的 JavaScript 表单验证库
- mysql一直出错_为什么我的mysql语句一直报错,找不到错误,望各位大佬指点一番...
- Unity toLua加载lua的流程
- 深入游戏变速底层原理以及内核变速的实现
- java 流水_Java之流水号生成器实现
- id3-sklearn算法实现(西瓜数据集)
- 手机怎么压缩gif动图大小?推荐一款gif压缩的工具
- 5G+工业互联网发展探讨
- 微积分中几个重要的不等式:Jensen不等式、平均值不等式、Holder不等式、Schwarz不等式、Minkovski不等式 及其证明
- pantum打印机驱动安装m6506_一键完成 驱动轻松装_奔图 M6506NW_办公打印评测试用-中关村在线...
- php riak,Riak的分布式数据库模型 - 分布式数据库相关理论 Part3